如何使css文本-装饰覆盖工作?

如何使css文本-装饰覆盖工作?

有时候我发誓我要疯了。今天是那种日子。我认为我的css在这里是相当直截了当的,但它似乎不起作用。我遗漏了什么?

我的CSS看起来如下:

ul > li {
    text-decoration: none;}ul > li.u {
    text-decoration: underline;}ul > li > ul > li {
    text-decoration: none;}ul > li > ul > li.u {
    text-decoration: underline;}

我的HTML看起来是这样的:

<ul>
  <li>Should not be underlined</li>
  <li class="u">Should be underlined    <ul>
      <li>Should not be underlined</li>
      <li class="u">Should be underlined</li>
    </ul>
  </li></ul>


吃鸡游戏
浏览 429回答 3
3回答

慕田峪4524236

你摆脱了text-decoration在这些情况下应用于父元素:无流元素,如浮动元素和绝对定位元素。li&nbsp;{&nbsp;float:&nbsp;left;&nbsp;/*&nbsp;Avoid&nbsp;text-decoration&nbsp;propagation&nbsp;from&nbsp;ul&nbsp;*/&nbsp;clear:&nbsp;both;&nbsp;/*&nbsp;One&nbsp;li&nbsp;per&nbsp;line&nbsp;*/&nbsp;}&nbsp; ul&nbsp;{&nbsp;overflow:&nbsp;hidden;&nbsp;}&nbsp;/*&nbsp;Clearfix&nbsp;*/显示代码段原子内联级元素,例如内联块和内联表。但如果你用li{display:inline-block},那你就没有子弹了(你输了display:list-item)和项目出现在一个旁边的其他。然后,要有一行一项,可以使用li&nbsp;{&nbsp;display:&nbsp;inline-block;&nbsp;/*&nbsp;Avoid&nbsp;text-decoration&nbsp;propagation&nbsp;from&nbsp;ul&nbsp;*/&nbsp;width:&nbsp;100%;&nbsp;/*&nbsp;One&nbsp;li&nbsp;per&nbsp;line&nbsp;*/&nbsp;}加上子弹,你可以用::before伪元素。然而,子弹不应该加下划线,所以你需要把它们从流中取出来,或者把它们变成原子的内联级。显示代码段显示代码段中指定此行为。CSS 2.1和CSS文本装饰模块级别3:请注意,文本装饰不会传播到任何流外后代,也不会传播到原子内联级子代(如内联块和内联表)的内容。

明月笑刀无情

好的答案上面完美地解释了为什么在没有其他改变的情况下你不能做你想做的事情。不,你不会疯的!可能的解决办法:试一试border-bottom?将想要加下划线的文本包装在span class="u"标签?(以防止文本装饰嵌套元素)如果您无法更改标记,则可以添加一些脚本以完成与我先前建议相同的任务。祝你好运!
打开App,查看更多内容
随时随地看视频慕课网APP