繁体   English   中英

用CSS将表中的th和td分开

[英]Seperate th and td in table with css

我试图使一个表响应移动设备,并且使td和th显示值块变好了。 唯一的问题是,标题都彼此堆叠在一个组中,而数据全部堆叠在它们自己的组中。 我要使其标题为第一,然后是该特定行的数据,然后是下一个标题和数据,依此类推。 我想仅使用CSS完成此操作。 以下是我刚刚复制并粘贴的代码。 我真的不想用PHP弄乱任何东西,因为不完全了解它。 他就是我要显示的内容:在数据下方放置一个数据,然后在td之后显示下一个及其td,依此类推。 我将此问题的摘要中的代码包含在jsfidle中,因为该选项卡在我的计算机上不起作用。

从你的陈述

我制作了td和th显示值块,因此使它更好一点。 唯一的问题是,标题都彼此堆叠在一个组中,而数据全部堆叠在它们自己的组中。

thtd添加display:block将使您的内容堆积在一个单元格中,如下所示:

header1
content1
content2
content3
header2
content1
content2
content3

要么

header1
header2
content1
content2
content3
content1
content2
content3

我要使其标题为第一,然后是该特定行的数据,然后是下一个标题和数据,依此类推。

我猜您希望您的表是这样的:

header1 | content1 | content2 | content 3
header2 | content1 | content2 | content 3
header3 | content1 | content2 | content 3

这是JSFiddle中的一个示例

更新

从您的jsfiddle中,您真的在表中没有<tr>吗? 因为<tr>是一个,它将把您的<th><td>分开。 我从您的jsfiddle中添加了<tr> ,它看起来像这样:

在此处输入图片说明

那是你想要的桌子吗? 这是Jsfiddle

首先,您可以将表标题单元格放在thead元素中,而其他表单元格放在tbody 之后,您可以在tbodytr所有第一个td之前复制并放置theadth 抱歉,要弄清楚它并不容易。 这是一个例子

<table>
        <thead>
            <tr>
                <th>header1</th>
                <th>header2</th>
            </tr>
        </thead>

        <tbody>
            <tr>
                <th>header1</th><!-- as in the thead -->
                <td>Content1</td>
                <td>Content2</td>
            </tr>
            <tr>
                <th>header2</th><!-- as in the thead -->
                <td>Content1</td>
                <td>Content2</td>
            </tr>
        </tbody>
    </table>

在CSS中,当您处于移动状态时,您应该隐藏thead并仅显示tbody th 在平板电脑/台式机中,您可以进行相反的操作。

<style>
     /* Mobile first */
     table,
     thead,
     tbody,
     tr,
     th,
     td {
         display:block;
     }

     th,
     td {
         text-align:left;
     }

     th {
         background:#f00;
     }

     td {
         background:#0099ff;
     }

     thead {
         display:none;
     }

     tr {
         margin-bottom:16px;
     }

     /* When you going up 768px */
     @media screen and (min-width:768px) {
         table {
             border:2px solid #000;
             display:table;
             width:100%;
         }

         tr {
             display:table-row;
         }

         td,
         th {
             display:table-cell;                 
         }

         thead,
         tbody {
             display:table-header-group;
         }

         tbody th {
             display:none;
         }             
     }
    </style>

小提琴: https : //jsfiddle.net/uc8q0u96/

tbodytr所有第一个td上创建数据属性并将相应的标头单元格的内容放进去可能会更干净:

<table>
        <thead>
            <tr>
                <th>header1</th>
                <th>header2</th>
            </tr>
        </thead>

        <tbody>
            <tr>                    
                <td data-header="header1">Content1</td>
                <td>Content2</td>
            </tr>
            <tr>                    
                <td data-header="header2">Content1</td>
                <td>Content2</td>
            </tr>
        </tbody>
    </table>

并使用::before伪元素来获取CSS中data-header属性的内容:

/* Mobile first */
     table,
     thead,
     tbody,
     tr,
     th,
     td {
         display:block;
     }

     td[data-header]:before {
         background:yellowgreen;
         content:attr(data-header);
         display:block;
     }

     th,
     td {
         text-align:left;
     }

     th {
         background:#f00;
     }

     td {
         background:#0099ff;
     }

     thead {
         display:none;
     }

     tr {
         margin-bottom:16px;
     }

     /* When you going up 768px */
     @media screen and (min-width:768px) {
         table {
             border:2px solid #000;
             display:table;
             width:100%;
         }

         tr {
             display:table-row;
         }

         td,
         th {
             display:table-cell;                 
         }

         thead,
         tbody {
             display:table-header-group;
         }

         td[data-header]:before {
             display:none;
         }
     }

小提琴https://jsfiddle.net/o9mtfsdL/3

Voilà。

HTML 的 CSS 属性<div id="text_translate"><p> So i've watched a lecture on CSS rules inheritance and I was curious about how it would hork with HTML tables, so i tried to test some code to get a better understanding of inheritance.</p><p> 我写了以下代码: </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-css lang-css prettyprint-override"> table{ border: 1px solid black; color: greenyellow; }.Table2, .th2{ border: 1px solid black; color: greenyellow; }</pre><pre class="snippet-code-html lang-html prettyprint-override"> &lt;,DOCTYPE html&gt; &lt;hmt lan="en"&gt; &lt;head&gt;&lt;/head&gt; &lt;body&gt; &lt;table class="Table"&gt; &lt;tr&gt; &lt;th&gt; Style &lt;/th&gt; &lt;th&gt; ID &lt;/th&gt; &lt;th&gt; # of Classes, Pseudo-Classes &lt;/th&gt; &lt;th&gt; # of Elementes &lt;/th&gt; &lt;/tr&gt; &lt;/table&gt; &lt;br&gt;&lt;br&gt; &lt;table class="Table2"&gt; &lt;tr&gt; &lt;th class="th2"&gt; Style &lt;/th&gt; &lt;th class="th2"&gt; ID &lt;/th&gt; &lt;th class="th2"&gt; # of Classes, Pseudo-Classes &lt;/th&gt; &lt;th class="th2"&gt; # of Elements &lt;/th&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt;</pre></div></div><p></p><p> 我希望两个 CSS 代码看起来相同,因为 &lt;th&gt; 标签似乎是 &lt;table&gt; 标签的子标签。 事实上,使用第一个 CSS 规则,Color 属性确实从 &lt;table&gt; 继承到 &lt;th&gt;,并且 &lt;th&gt; 中定义的文本是绿色的,但边框属性似乎没有被继承。 在第一种情况下,我只是在桌子周围得到一个正方形,在第二种情况下,我得到相同的正方形,但每个句子周围都有小正方形。</p><p> <a href="https://i.stack.imgur.com/mGtTI.png" rel="nofollow noreferrer">从第一个 CSS 规则到 &lt;table&gt; 的结果</a></p><p><a href="https://i.stack.imgur.com/X71tp.png" rel="nofollow noreferrer">第二个 CSS 规则的结果到 &lt;table&gt; &lt;th&gt;</a></p><p> 现在我的问题是:为什么 &lt;th&gt; 在第一种情况下没有继承边框属性,是否有一些属性不会从父级传递给子级,如果是,我在哪里可以找到它们? 或者也许 &lt;th&gt; 被定义为不是 &lt;table&gt; 孩子? 这里发生了什么?</p></div>继承到<table> <tbody><tr><td> ,</td><th> ,</th></tr><tr></tr></tbody></table>

[英]Which CSS properties for an HTML <table> inherit to <td>, <th>, <tr>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 HTML CSS,表格TH和TD不在同一行 CSS-表-TH悬停设置TD可见性 css:所有td只有表有 Css-无论TD还是TH,最后一个表行 CSS-选择所有表格单元格 <td> 要么 <th> 在桌子上 CSS 适用于表 'tr' 和 'td' 但如果我包含 'th' 则失败 如何使用CSS在表格中为第n个td设置样式 HTML 的 CSS 属性<div id="text_translate"><p> So i've watched a lecture on CSS rules inheritance and I was curious about how it would hork with HTML tables, so i tried to test some code to get a better understanding of inheritance.</p><p> 我写了以下代码: </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-css lang-css prettyprint-override"> table{ border: 1px solid black; color: greenyellow; }.Table2, .th2{ border: 1px solid black; color: greenyellow; }</pre><pre class="snippet-code-html lang-html prettyprint-override"> &lt;,DOCTYPE html&gt; &lt;hmt lan="en"&gt; &lt;head&gt;&lt;/head&gt; &lt;body&gt; &lt;table class="Table"&gt; &lt;tr&gt; &lt;th&gt; Style &lt;/th&gt; &lt;th&gt; ID &lt;/th&gt; &lt;th&gt; # of Classes, Pseudo-Classes &lt;/th&gt; &lt;th&gt; # of Elementes &lt;/th&gt; &lt;/tr&gt; &lt;/table&gt; &lt;br&gt;&lt;br&gt; &lt;table class="Table2"&gt; &lt;tr&gt; &lt;th class="th2"&gt; Style &lt;/th&gt; &lt;th class="th2"&gt; ID &lt;/th&gt; &lt;th class="th2"&gt; # of Classes, Pseudo-Classes &lt;/th&gt; &lt;th class="th2"&gt; # of Elements &lt;/th&gt; &lt;/tr&gt; &lt;/table&gt; &lt;/body&gt; &lt;/html&gt;</pre></div></div><p></p><p> 我希望两个 CSS 代码看起来相同,因为 &lt;th&gt; 标签似乎是 &lt;table&gt; 标签的子标签。 事实上,使用第一个 CSS 规则,Color 属性确实从 &lt;table&gt; 继承到 &lt;th&gt;,并且 &lt;th&gt; 中定义的文本是绿色的,但边框属性似乎没有被继承。 在第一种情况下,我只是在桌子周围得到一个正方形,在第二种情况下,我得到相同的正方形,但每个句子周围都有小正方形。</p><p> <a href="https://i.stack.imgur.com/mGtTI.png" rel="nofollow noreferrer">从第一个 CSS 规则到 &lt;table&gt; 的结果</a></p><p><a href="https://i.stack.imgur.com/X71tp.png" rel="nofollow noreferrer">第二个 CSS 规则的结果到 &lt;table&gt; &lt;th&gt;</a></p><p> 现在我的问题是:为什么 &lt;th&gt; 在第一种情况下没有继承边框属性,是否有一些属性不会从父级传递给子级,如果是,我在哪里可以找到它们? 或者也许 &lt;th&gt; 被定义为不是 &lt;table&gt; 孩子? 这里发生了什么?</p></div>继承到<table> <tbody><tr><td> ,</td><th> ,</th></tr><tr></tr></tbody></table> 将表格标题列分成两列 Table Html 5 th td 问题
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM