我创建了一个页面,它是三个独立网站的登录门户。在此页面上,我向所述网站显示了三个登录门户。我试图用css和尽可能少的课程来设计它(我需要微调我的CSS技能)。
我创建的是一个包含三行和两列的表,名为loginPortals:
<table class="loginPortals">
<tbody>
<tr>
<td>Picture 1</td>
<td>Login form 1</td>
</tr>
<tr>
<td>Picture 2</td>
<td>Login form 2</td>
</tr>
<tr>
<td>Picture 3</td>
<td>Login form 2</td>
</tr>
</tbody>
</table>
我刚刚开始制作桌子的样式,所以它非常不完整,但我已经在努力了。这是简化的,因为我不确切地知道它的外观。基本上,我想在每一行之间出现某种边界。以下并没有达到我想要的目的:
.loginPortals{
width:100%;
}
.loginPortals tbody:first-child td{
border-top:1px solid #000;
}
.loginPortals tbody tr td{
border-bottom:1px solid #000;
padding:1em 0;
}
第一个孩子选择器没有像我想象的那样工作。它将顶部边框应用于所有行中的所有单元格。这导致线条厚度在行的中间加倍。
如何解决此问题,以便顶部边框仅应用于顶行而不创建额外的类或应用任何内联样式。
谢谢! 乔
答案 0 :(得分:5)
您的桌边框需要设置为折叠:
.loginPortals{
width:100%;
border-collapse: collapse;
}
然后,您可以省略:first-child
规则,只为所有行应用顶部和底部边框:
.loginPortals tbody tr td{
border-top:1px solid #000;
border-bottom:1px solid #000;
padding:1em 0;
}
此外,仅供您参考,此选择器:
.loginPortals tbody:first-child td
意思是:
选择任何
td
元素
在tbody
内 这是其父母的第一个孩子。
而不是:
选择任何
td
元素
在tbody
的第一个孩子中。
因为tbody
是.loginPortals
的第一个也是唯一的孩子,所以td
个父母中的所有tr
元素都会被选中。有关直观说明,请参阅this answer。你可能想要这个选择器:
.loginPortals tbody tr:first-child td
但这不是必要的,因为您只需要折叠表格边框。
答案 1 :(得分:1)
如果我理解正确,你有3个表格,只想要两行 - 这就是我从I want a border of some sort appearing between each row
那里拿的话,如果是这样,试试这个。
.loginPortals tr:first-child td{
border-top:none;
}
.loginPortals tbody tr td{
border-top:1px solid #000;
padding:1em 0;
}
答案 2 :(得分:0)
我相信这会奏效......
td {border-top:1px solid #000;}
答案 3 :(得分:0)
首先,如果你想提高你的CSS技能,你应该立即停止使用表格进行布局。
其次,:first-child
伪类会影响父元素的第一个子元素。因此,由于您只有一个tbody
元素,而且table
写作tbody
或tbody:first-child
的第一个孩子会产生相同的结果。
编辑:我认为您在此之后的内容是tr:first-child td
(您只希望第一个表格行中的表格单元格具有顶部边框)。
要解决您的问题,您可以在所有border-bottom
上使用td
,除非您需要在顶部设置边框,在这种情况下您可以在实际{{1您可以提供所有table
sa td
和 border-top
。或。这当然会在您描述时呈现双边框,但您可以使用border-bottom
折叠表格的边框。
简而言之:border-collapse: collapse
。但是不要使用表格进行布局。