html - 删除文本装饰:underline of pre tag inside of underlined block

标签 html css

这是一个复制的示例:

div.addu { color: #006e28; text-decoration: underline; }
div.addu blockquote pre { text-decoration: none; }
div.addu blockquote pre code { text-decoration: none; }
div.addu pre, div.rm pre, div.add pre { background-color: #f6f8fa; }
div.addu > blockquote {
border-left: 4px solid #00a000;
padding: 0 15px;
color: #006e28;
text-decoration: none;
}
<div class="addu">
<pre><code>Underline this code</code></pre>
<p><em>Effects</em>: Equivalent to:</p>
<blockquote>
<pre><code>Do not
Underline
This code</code></pre>
</blockquote>
</div>

早期带下划线的代码看起来很棒。带有左边框的 block 引用看起来很棒。但是为什么内部代码仍然带有下划线?为什么 text-decoration:none; 不适用于它?正如您所看到的,我尝试在许多不同的地方添加它,但顶级下划线似乎仍然存在。我该如何正确地做到这一点?

最佳答案

您可以使用 css> 选择器来实现此目的, 无需更改 HTML 或添加类

  • div.adu 中删除 text-decoration
  • 使用 > 选择器定位 pre 标记,并为其赋予 text-decoration: underline
  • text-decoration: underline; 添加到 p 标签

div.addu { color: #006e28; }
div.addu p { text-decoration: underline; }
div.addu > pre { text-decoration: underline; }
div.addu blockquote pre { text-decoration: none; }
div.addu blockquote pre code { text-decoration: none; }
div.addu pre, div.rm pre, div.add pre { background-color: #f6f8fa; }
div.addu > blockquote {
border-left: 4px solid #00a000;
padding: 0 15px;
color: #006e28;
text-decoration: none;
}
 <div class="addu">
  <pre>
   <code>strong_ordering operator&lt;=&gt;(const error_code&amp; lhs, const error_code&amp; rhs) noexcept;</code>
  </pre>
  <p>
   <span class="marginalizedparent"><a class="marginalized">8</a></span>
   <em>Effects</em>: Equivalent to:
  </p>
  <blockquote>
   <pre>
 <code>if (auto c = lhs.category() &lt;=&gt; rhs.category(); c != 0) return c;
			return lhs.value() &lt;=&gt; rhs.value();</code>
   </pre>
  </blockquote>
  <pre>
   <code>strong_ordering operator&lt;=&gt;(const error_condition&amp; lhs, const error_condition&amp; rhs) noexcept;</code>
  </pre>
  <p>
   <span class="marginalizedparent"><a class="marginalized">9</a></span>
   <em>Effects</em>: Equivalent to:
  </p>
  <blockquote>
   <pre>
    <code>if (auto c = lhs.category() &lt;=&gt; rhs.category(); c != 0) return c;
			return lhs.value() &lt;=&gt; rhs.value();</code>
   </pre>
  </blockquote>
</div>

关于html - 删除文本装饰:underline of pre tag inside of underlined block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56580718/

相关文章:

css - Zurb Foundation - 删除较小屏幕上的网格填充?

html - 具有显示表格单元格 css 属性的元素内 "cover"背景上的奇怪边框 - Chrome

css - 无法更改特定 div 的背景颜色

php - 如何使我的 html <select> 与 php 保持一致?

javascript - 使用计时器滑动到轮播中的最后一张幻灯片 - slick.js

html - 增加R中表格行的高度

javascript - 类似俄罗斯方 block 的游戏中的硬掉落件

php - 表中的不同链接

html - 在没有 form-horizo​​ntal 和 col-XX 类的同一行上输入和标签

html - 仅当子元素的 width 属性超过父元素的 max-width 属性时水平滚动