Spaltenbreite in einer HTML erzwingen

  • HTML

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Link.

    Spaltenbreite in einer HTML erzwingen

    Hier ein Auszug aus einem html-code, der mir eine Tabelle baut, hier zu sehen nur die Tabellenköpfe.

    <style>
    table#foobar-table thead {
    position: sticky;
    }
    table#foobar-table thead {
    inset-block-start: 0;
    }
    table#foobar-table,
    table#foobar-table > thead > tr > th,
    table#foobar-table > tbody > tr > td {
    border: Solid 1px #888888;
    padding: 5px;
    }
    table#foobar-table > thead > tr {
    background-color: #ED1C29;
    }
    table#foobar-table > tbody > tr:nth-child(even) {
    background-color: #FFFFFF;
    }
    table#foobar-table > tbody > tr:nth-child(odd) {
    background-color: #D5E2E9;
    }
    #foobar-table { margin-left: 1px; }
    }
    </style>
    <p>
    Das angegebene Datum ist das Datum der letzten Teilnahme. Ein Sternchen ("*") signalisiert die Fälligkeit zur Teilnahme oder Auffrischung, also wird sich der Themenverantwortliche demnächst melden. </p><p>Im Tabellenkopf ist jeweils das Thema, der Themenverantwortliche, sowie der nächste Regeltermin aufgeführt. </p><p><label>Filter/Suche: <input type="search" class="filter-table" data-for="#foobar-table" autofocus="autofocus"></label>
    </p>
    <table id="foobar-table">
    <thead>
    <tr>
    <th>
    Nachname
    </th>
    <th>
    Vorname
    </th>
    <th>
    Mitarbeitercode
    </th>
    <th>
    Position
    </th>
    <th>
    Bereich
    </th>
    <th>
    Eintrittsdatum
    </th>
    <th>
    Ersthelfer?
    </th>
    <th>
    Brandschutzhelfer?
    </th>
    <th>
    "01
    PfT-HH"
    <br>
    Max
    <br>
    01.08.2022
    </th>
    <th>
    "02
    Softskills A"
    <br>
    Max
    <br>
    01.08.2022
    </th>
    <th>
    "03
    Arbeitsschutz"
    <br>
    Max
    <br>
    02.08.2022
    </th>
    <th>
    04 Lagerschulung
    <br>
    Max
    <br>
    02.08.2022
    </th>
    <th>
    "05
    Sortimentsübersicht"
    <br>
    Max
    <br>
    02.08.2022
    </th>
    <th>
    "06
    Gevis Vertrieb"
    <br>
    Max
    <br>
    29.08.2022
    </th>
    <th>
    "07
    Gevis Logistik"
    <br>
    Max
    <br>
    30.08.2022
    </th>
    <th>
    "08
    Grundlagen Vertrieb"
    <br>
    Max
    <br>
    04.12.2023
    </th>
    <th>
    "09
    Softskills B"
    <br>
    Max
    <br>
    11.12.2023
    </th>
    <th>
    "10
    Bürokaizen"
    <br>
    Max
    <br>
    02.12.2024
    </th>
    <th>
    "11
    Ersthelfer"
    <br>
    Max
    <br>
    02.02.2023
    </th>
    <th>
    "12
    Brandschutzhelfer"
    <br>
    Max
    <br>
    02.02.2023
    </th>
    </tr>
    </thead>
    </tbody>

    Nun möchte ich Spaltenbreiten erzwingen, das sollte doch eigentlich mit dem Code "width=xxx" zwischen in "<th>" funktionieren oder? Aber irgendwie haut das bei mir nicht hin. Weiß jemand Rat?

    Bsp.:
    <th width=300>Nachname</th>
    Danke für die schnelle Hilfe und den Hinweis, aber passt leider nicht. Damit zerschießt es mir die Tabelle und zählt die Tabellenköpfe auf und drunter dann die einzelnen Zellen.

    Hier nochmal mein kompletter Code:

    Quellcode

    1. <style>
    2. table#foobar-table thead {
    3. position: sticky;
    4. }
    5. table#foobar-table thead {
    6. inset-block-start: 0;
    7. }
    8. table#foobar-table,
    9. table#foobar-table > thead > tr > th,
    10. table#foobar-table > tbody > tr > td {
    11. border: Solid 1px #888888;
    12. padding: 5px;
    13. }
    14. table#foobar-table > thead > tr {
    15. background-color: #ED1C29;
    16. }
    17. table#foobar-table > tbody > tr:nth-child(even) {
    18. background-color: #FFFFFF;
    19. }
    20. table#foobar-table > tbody > tr:nth-child(odd) {
    21. background-color: #D5E2E9;
    22. }
    23. #foobar-table { margin-left: 1px; }
    24. }
    25. </style>
    26. <p>
    27. Im Tabellenkopf ist jeweils das Thema, der Themenverantwortliche, sowie der nächste Regeltermin aufgeführt. </p><p>Das angegebene Datum ist das Datum der letzten Teilnahme. Ein Sternchen ("*") signalisiert die Fälligkeit zur Teilnahme oder Auffrischung, also wird sich der Themenverantwortliche demnächst melden. </p><p><label>Filter/Suche: <input type="search" class="filter-table" data-for="#foobar-table" autofocus="autofocus"></label>
    28. </p>
    29. <table id="foobar-table">
    30. <thead>
    31. <tr>
    32. <th>
    33. Nachname
    34. </th>
    35. <th>
    36. Vorname
    37. </th>
    38. <th>
    39. Mitarbeitercode
    40. </th>
    41. <th>
    42. Position
    43. </th>
    44. <th>
    45. Bereich
    46. </th>
    47. <th>
    48. Eintrittsdatum
    49. </th>
    50. <th>
    51. Ersthelfer?
    52. </th>
    53. <th>
    54. Brandschutzhelfer?
    55. </th>
    56. <th>
    57. "01
    58. PfT-HH"
    59. <br>
    60. Lukas Klotz
    61. <br>
    62. 01.08.2022
    63. </th>
    64. <th>
    65. "02
    66. Softskills A"
    67. <br>
    68. Lukas Klotz
    69. <br>
    70. 01.08.2022
    71. </th>
    72. <th>
    73. "03
    74. Arbeitsschutz"
    75. <br>
    76. Susanne Nötzoldt
    77. <br>
    78. 02.08.2022
    79. </th>
    80. <th>
    81. 04 Lagerschulung
    82. <br>
    83. Susanne Nötzoldt
    84. <br>
    85. 02.08.2022
    86. </th>
    87. <th>
    88. "05
    89. Sortimentsübersicht"
    90. <br>
    91. Tobias Schreiber
    92. <br>
    93. 02.08.2022
    94. </th>
    95. <th>
    96. "06
    97. Gevis Vertrieb"
    98. <br>
    99. Robert Keller
    100. <br>
    101. 29.08.2022
    102. </th>
    103. <th>
    104. "07
    105. Gevis Logistik"
    106. <br>
    107. Paul Redmann
    108. <br>
    109. 30.08.2022
    110. </th>
    111. <th>
    112. "08
    113. Grundlagen Vertrieb"
    114. <br>
    115. Tobias Schreiber
    116. <br>
    117. 04.12.2023
    118. </th>
    119. <th>
    120. "09
    121. Softskills B"
    122. <br>
    123. Lukas Klotz
    124. <br>
    125. 11.12.2023
    126. </th>
    127. <th>
    128. "10
    129. Bürokaizen"
    130. <br>
    131. Robert Keller
    132. <br>
    133. 02.12.2024
    134. </th>
    135. <th>
    136. "11
    137. Ersthelfer"
    138. <br>
    139. Andreas Starke
    140. <br>
    141. 02.02.2023
    142. </th>
    143. <th>
    144. "12
    145. Brandschutzhelfer"
    146. <br>
    147. Andreas Starke
    148. <br>
    149. 02.02.2023
    150. </th>
    151. </tr>
    152. </thead>
    153. </tbody>
    154. <tr><td> Keller </td><td> Robert </td><td> 1636 </td><td> Fachkraft </td><td> Backoffice </td><td> 01.08.2004 </td><td> n </td><td> n </td><td> </td><td> * </td><td> * </td><td> </td><td> * </td><td> </td><td> </td><td> * </td><td> * </td><td> * </td><td> </td><td> </td></tr>
    155. <tr><td> Albrecht </td><td> Peter </td><td> 12 </td><td> Azubi </td><td> FIM </td><td> 01.08.2021 </td><td> n </td><td> n </td><td> * </td><td> * </td><td> * </td><td> * </td><td> * </td><td> </td><td> </td><td> </td><td> * </td><td> * </td><td> </td><td> </td></tr>
    156. </tbody>
    157. </table>
    158. <script>
    159. // HTML-Tabelle filtern
    160. document.querySelectorAll('.filter-table').forEach(function(input) {
    161. var table = document.querySelector(input.dataset.for);
    162. var rows = table.querySelectorAll('tbody tr');
    163. input.addEventListener('input', function(event) {
    164. rows.forEach(function(tr) {
    165. tr.hidden = !tr.textContent.includes(input.value);
    166. });
    167. });
    168. })
    169. </script>



    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „robkel“ ()

    Hi,

    @robkel das Stichwort lautet min-width. Und damit die Tabelle am rechten Ende der Seite nicht verschwindet, sollte noch eine max-width rein und der Inhalt scrollbar gemacht werden.

    Funktionierbares Beispiel anhand deines Codes (insbesondere auch das erste th Element):

    HTML-Quellcode

    1. <!DOCTYPE html>
    2. <html lang='de'>
    3. <head>
    4. <title>Hello World</title>
    5. <meta charset='UTF-8'>
    6. <style>
    7. /* Einige styles zurücksetzen, sodass ein Browser nicht seine eigene default-magic reinwurschten kann */
    8. * {
    9. padding : 0;
    10. margin : 0;
    11. box-sizing : border-box;
    12. }
    13. html {
    14. font-family : Calibri, Verdana, Arial, sans-serif;
    15. background-color : #f4f4f4;
    16. }
    17. body {
    18. width : 90vw;
    19. margin : 0 auto;
    20. padding : 12px;
    21. background-color : #ffffff;
    22. }
    23. p {
    24. display : block;
    25. margin : 4px 0;
    26. }
    27. label {
    28. display : inline-block;
    29. }
    30. /* max-width damit die Tabelle nicht am Seitenrand verschwindet und overflow auf scroll damit der Inhalt scrollbar ist */
    31. table {
    32. max-width : 100%;
    33. display : block;
    34. overflow : auto;
    35. border-collapse : collapse;
    36. border : 1px solid rgba(0, 0, 0, 0.5);
    37. margin : 12px 0;
    38. }
    39. table#foobar-table thead {
    40. position : sticky;
    41. }
    42. table#foobar-table thead {
    43. inset-block-start : 0;
    44. }
    45. table tr td, table tr th {
    46. padding : 4px;
    47. border : 1px solid rgba(0, 0, 0, 0.5);
    48. }
    49. table#foobar-table,
    50. table#foobar-table > thead > tr > th,
    51. table#foobar-table > tbody > tr > td {
    52. border : Solid 1px #888888;
    53. padding : 5px;
    54. }
    55. table#foobar-table > thead > tr {
    56. background-color : #ED1C29;
    57. }
    58. table#foobar-table > tbody > tr:nth-child(even) {
    59. background-color : #FFFFFF;
    60. }
    61. table#foobar-table > tbody > tr:nth-child(odd) {
    62. background-color : #D5E2E9;
    63. }
    64. </style>
    65. </head>
    66. <body>
    67. <p>
    68. Das angegebene Datum ist das Datum der letzten Teilnahme. Ein Sternchen ("*") signalisiert die
    69. Fälligkeit zur Teilnahme oder Auffrischung, also wird sich der Themenverantwortliche demnächst melden.
    70. </p>
    71. <p>
    72. Im Tabellenkopf ist jeweils das Thema, der Themenverantwortliche, sowie der nächste Regeltermin
    73. aufgeführt.
    74. </p>
    75. <p>
    76. <label>Filter/Suche:
    77. <input type="search" class="filter-table" data-for="#foobar-table" autofocus="autofocus">
    78. </label>
    79. </p>
    80. <table id="foobar-table">
    81. <thead>
    82. <tr>
    83. <th style='min-width:300px;'>
    84. Nachname
    85. </th>
    86. <th>
    87. Vorname
    88. </th>
    89. <th>
    90. Mitarbeitercode
    91. </th>
    92. <th>
    93. Position
    94. </th>
    95. <th>
    96. Bereich
    97. </th>
    98. <th>
    99. Eintrittsdatum
    100. </th>
    101. <th>
    102. Ersthelfer?
    103. </th>
    104. <th>
    105. Brandschutzhelfer?
    106. </th>
    107. <th>
    108. "01 PfT-HH"<br>
    109. Max<br>
    110. 01.08.2022
    111. </th>
    112. <th>
    113. "02 Softskills A"<br>
    114. Max<br>
    115. 01.08.2022
    116. </th>
    117. <th>
    118. "03 Arbeitsschutz"<br>
    119. Max<br>
    120. 02.08.2022
    121. </th>
    122. <th>
    123. 04 Lagerschulung<br>
    124. Max<br>
    125. 02.08.2022
    126. </th>
    127. <th>
    128. "05 Sortimentsübersicht"<br>
    129. Max<br>
    130. 02.08.2022
    131. </th>
    132. <th>
    133. "06 Gevis Vertrieb"<br>
    134. Max<br>
    135. 29.08.2022
    136. </th>
    137. <th>
    138. "07 Gevis Logistik"<br>
    139. Max<br>
    140. 30.08.2022
    141. </th>
    142. <th>
    143. "08 Grundlagen Vertrieb"<br>
    144. Max<br>
    145. 04.12.2023
    146. </th>
    147. <th>
    148. "09 Softskills B"<br>
    149. Max<br>
    150. 11.12.2023
    151. </th>
    152. <th>
    153. "10 Bürokaizen"<br>
    154. Max<br>
    155. 02.12.2024
    156. </th>
    157. <th>
    158. "11 Ersthelfer"<br>
    159. Max<br>
    160. 02.02.2023
    161. </th>
    162. <th>
    163. "12 Brandschutzhelfer"<br>
    164. Max<br>
    165. 02.02.2023
    166. </th>
    167. </tr>
    168. </thead>
    169. <tbody>
    170. <tr>
    171. <td>Keller</td>
    172. <td>Robert</td>
    173. <td>1636</td>
    174. <td>Fachkraft</td>
    175. <td>Backoffice</td>
    176. <td>01.08.2004</td>
    177. <td>n</td>
    178. <td>n</td>
    179. <td></td>
    180. <td>*</td>
    181. <td>*</td>
    182. <td></td>
    183. <td>*</td>
    184. <td></td>
    185. <td></td>
    186. <td>*</td>
    187. <td>*</td>
    188. <td>*</td>
    189. <td></td>
    190. <td></td>
    191. </tr>
    192. <tr>
    193. <td>Albrecht</td>
    194. <td>Peter</td>
    195. <td>12</td>
    196. <td>Azubi</td>
    197. <td>FIM</td>
    198. <td>01.08.2021</td>
    199. <td>n</td>
    200. <td>n</td>
    201. <td>*</td>
    202. <td>*</td>
    203. <td>*</td>
    204. <td>*</td>
    205. <td>*</td>
    206. <td></td>
    207. <td></td>
    208. <td></td>
    209. <td>*</td>
    210. <td>*</td>
    211. <td></td>
    212. <td></td>
    213. </tr>
    214. </tbody>
    215. </table>
    216. <script>
    217. // HTML-Tabelle filtern
    218. document.querySelectorAll('.filter-table').forEach(function (input) {
    219. var table = document.querySelector(input.dataset.for);
    220. var rows = table.querySelectorAll('tbody tr');
    221. input.addEventListener('input', function (event) {
    222. rows.forEach(function (tr) {
    223. tr.hidden = !tr.textContent.includes(input.value);
    224. });
    225. });
    226. })
    227. </script>
    228. </body>
    229. </html>


    Was noch auffällt ist, dass du zwei mal </tbody> drin hast, das erste davon sollte natürlich ein öffnendes Tag sein, also zuerst <tbody> und dann </tbody>.

    Gewöhne dir an, Text nicht mit <br> auszurichten oder Abstände zu machen, sondern benutze simple <div> Container o.ä. und setze die gewünschten Abstände via CSS. Dasselbe gilt für Leerzeichen, hier solltest du stattdessen mit padding, vertical-align oder text-align arbeiten.

    Um in deinen Posts HTML ordentlich zu formatieren, gibt's bereits ein BB-Tag:




    Link :thumbup:
    Hello World

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Link“ ()