html - 为什么 <ul> 中的样式只影响第一个 <li>?

标签 html css

我有一个 unordered list在我的代码中看起来有点像这样

.tntext {
  display: inline-block;
  list-style-type: none;
  padding: 0;
  margin: 0;
  text-align: center;
  height: 40px;
  line-height: 40px;
  font-size: 20px;
  width: 150px;
  background-color: red;
}
<ul class="tntext">
  <li>hi</li>
  <li>hi</li>
  <li>hi</li>
  <li>hi</li>
</ul>

这会生成一个如下图所示的列表。你可以在这个 JSFiddle 查看代码

enter image description here

然而,当 html 更改为如下所示时

.tntext {
  display: inline-block;
  list-style-type: none;
  padding: 0;
  margin: 0;
  text-align: center;
  height: 40px;
  line-height: 40px;
  font-size: 20px;
  width: 150px;
  background-color: red;
}
<ul>
  <li class="tntext">hi</li>
  <li class="tntext">hi</li>
  <li class="tntext">hi</li>
  <li class="tntext">hi</li>
</ul>

这会生成一个如下图所示的列表。你可以在这个 JSFiddle 查看代码

enter image description here

为什么在 <ul> 中声明类标签只影响第一个 <li>里面的 child <ul>标签?

最佳答案

它实际上并没有“技术上”影响 <li>它下面的标签,但实际上是第一个 <li><ul>是重叠的。这是因为您没有为每个 <li> 定义样式标签,因此它们被迫从其父项 .tntext 继承样式类(class)。它们继承了宽度和高度,因此为什么第一个 <li><ul> 重叠标签;他们都有相同的高度/宽度。查看这些图片了解我的意思

enter image description here enter image description here

如果从 <ul> 中删除高度 css 值标签,你会看到整个列表变成红色(像这样:https://jsfiddle.net/ntvcsese/)。如果您想将该类中的每种样式应用于每个 <li>标记,您必须更改 .tntext.tntext li在你的CSS中。像这样:https://jsfiddle.net/fhxqLboL/1/

关于html - 为什么 <ul> 中的样式只影响第一个 <li>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38062051/

相关文章:

javascript - 将 location.replace 与表单中的数据一起使用

javascript - CSS/jQuery 性能 - 提供更高分辨率的选择器是否更好

html - 如何在 CSS 中使背景图像变暗?

css - 我如何知道何时使用 -webkit-、-moz、-ms-、-o- 等?

javascript - 动态生成的 html 表无法获取选定的 td 值

css - glyphicon- 图标不起作用

html - 为什么没有 data-* 元素?

javascript - 使用 jQuery 反转 CSS 动画

html - Bootstrap 减少列之间的间距

javascript - 为什么屏幕变暗并且我的 Bootstrap 模式没有出现?