2016-05-26 12 views
0

Ich möchte ein <td> Element in einer Zeile zu zentrieren, wenn andere Zeile hat viele <td> Elemente. Aber das Element <td> der ersten Zeile befindet sich immer in der ersten Spaltenposition und es bewegt sich nicht in die Mitte.zentrieren Sie eine Zeile mit einem <td> Element, wenn andere Zeile hat viele <td>

Hier ist mein Code Beispiel:

<table border="1"> 
 
    <tr> 
 
    <td>Problem</td> 
 
    </tr> 
 
    <tr> 
 
    <td>65</td> 
 
    <td rowspan="3" width="100px">66</td> 
 
    <td>67</td> 
 
    </tr> 
 
    <tr> 
 
    <td>75</td> 
 
    <td>77</td> 
 
    </tr> 
 
    <tr> 
 
    <td>85</td> 
 
    <td>87</td> 
 
    </tr> 
 
    <tr> 
 
    <td>85</td> 
 
    <td>86</td> 
 
    <td>87</td> 
 
    </tr> 
 
</table>

und hier ist das Ergebnis, ich möchte das ein Element in der Mitte zu erhalten, ohne anderes Element, und es soll gleiche Breite nehmen und Höhe der ersten Säulenelemente. Bilder sind hier - Result i get

Antwort

0

Es scheint, dass Sie eine Beschriftung statt einer Zelle wollen:

td { 
 
    border: 1px solid; 
 
}
<table> 
 
    <caption>Problem</caption> 
 
    <tr> 
 
    <td>65</td> 
 
    <td rowspan="3" style="width: 100px">66</td> 
 
    <td>67</td> 
 
    </tr> 
 
    <tr> 
 
    <td>75</td> 
 
    <td>77</td> 
 
    </tr> 
 
    <tr> 
 
    <td>85</td> 
 
    <td>87</td> 
 
    </tr> 
 
    <tr> 
 
    <td>85</td> 
 
    <td>86</td> 
 
    <td>87</td> 
 
    </tr> 
 
</table>

+0

Schöne Lösung, aber ich wechselte zu div, anstatt eine Tabelle für diese Aufgabe zu verwenden. Danke für deine Antwort. – aziz

-1

<table border="1"> 
 
     <tr align="center"> 
 
      <td colspan="3" align="center">Problem</td> 
 
     </tr> 
 
     <tr> 
 
      <td>65</td> 
 
      <td rowspan="3" width="100px" align="center">66</td> 
 
      <td>67</td> 
 
     </tr> 
 
     <tr> 
 
      <td>75</td> 
 
      <td>77</td> 
 
     </tr> 
 
     <tr> 
 
      <td>85</td> 
 
      <td>87</td> 
 
     </tr> 
 
     <tr> 
 
      <td>85</td> 
 
      <td align="center">86</td> 
 
      <td>87</td> 
 
     </tr> 
 
    </table>

+1

Dies hilft niemandem. Bitte erläutern Sie Ihre Lösung. –

-1

Die Menge der Spalten in einer Tabelle werden durch die maximale Anzahl der Spalten in einer bestimmten Zeile einer Tabelle definiert. Da Ihre Tabelle 3 Spalten verwendet, passt die Zeile mit nur einer einzigen td Zelle nicht.

Um dies zu beheben, ist das colspan Attribut was Sie wollen.

Da Sie jedoch die Zelle in der Größe anderer in derselben Spalte behalten möchten, verwenden Sie dazu leere Elemente td. Beispiel unten:

table, 
 
td { 
 
    border: 1px solid black; 
 
}
<table> 
 
    <tr> 
 
    <td></td> 
 
    <td>1 column</td> 
 
    <td></td> 
 
    </tr> 
 
    <tr> 
 
    <td>1 column</td> 
 
    <td>1 column</td> 
 
    <td>1 column</td> 
 
    </tr> 
 
</table>

+0

Danke für Ihre Antwort, aber ich möchte Colspan 1 und es wird in der Mitte positionieren und nehmen nur eine Zelle Platz. – aziz

+0

Ernsthaft? Ein Downvote? In Ihrem Fall würden Sie auf jeder Seite Ihrer individuellen Zelle leere "td" -Elemente hinzufügen. –

+0

Ich habe das versucht, aber es braucht die gleiche Zelle wie die Zelle darunter, gibt es irgendeine Möglichkeit, die Breite der Zelle zu der Zelle darunter zu ändern. – aziz

1

Wenn ich Ihre Frage richtig bin Interpretieren Sie nicht wollen, das <td> Element die gesamte Zeile zu überspannen. Stattdessen möchten Sie, dass es in der Spalte "centre" positioniert wird.

Wenn Sie die Dimensionen im Voraus kennen, können Sie einfach leere <td> s davor erstellen und sie ausblenden.

table { empty-cells: hide; }
<table border="1"> 
 
    <tr> 
 
    <td></td> <!-- Empty TD for positioning --> 
 
    <td>Problem</td> 
 
    </tr> 
 
    <tr> 
 
    <td>65</td> 
 
    <td rowspan="3" width="100px">66</td> 
 
    <td>67</td> 
 
    </tr> 
 
    <tr> 
 
    <td>75</td> 
 
    <td>77</td> 
 
    </tr> 
 
    <tr> 
 
    <td>85</td> 
 
    <td>87</td> 
 
    </tr> 
 
    <tr> 
 
    <td>85</td> 
 
    <td>86</td> 
 
    <td>87</td> 
 
    </tr> 
 
</table>

+0

Das ist eine gute Lösung, aber ich möchte das Problem zusammen mit 65 eher als 66, gibt es eine Möglichkeit, die Breite der Zelle zu ändern? Ich danke dir sehr. @Marcelo – aziz

+0

@aziz Also wollen Sie es die Breite der ersten Spalte sein, aber in der Position der zweiten Spalte platziert werden, richtig? Was ist das gewünschte Verhalten, wenn die erste Spalte breiter als die zweite ist? Was, wenn die erste schmaler ist als die zweite? – Marcelo

+1

Ehrlich gesagt, würde ich ein Tischlayout nicht empfehlen, wenn Sie die Dinge so darstellen möchten. Wenn es überhaupt möglich ist, kämpfen Sie die gesamte Zeit mit der Positionierung/Dimensionierung des Tisches. – Marcelo

0

<table border="1"> 
 
    <tr> 
 
    <td style="border:5px"></td> 
 
    <td>56</td> 
 
    <td style="border:5px"></td> 
 
    </tr> 
 
    <tr> 
 
    <td>65</td> 
 
    <td>66</td> 
 
    <td>67</td> 
 
    </tr> 
 
    <tr> 
 
    <td>75</td> 
 
    <td>66</td> 
 
    <td>77</td> 
 
    </tr> 
 
    <tr> 
 
    <td>85</td> 
 
    <td>66</td> 
 
    <td>87</td> 
 
    </tr> 
 
</table>

, wenn Sie Spalte möchten, dann können Sie diesen Stil Teil entfernen und das ist das Ergebnis:

enter image description here

Verwandte Themen