【问题标题】:CSS: text-decoration unable to remove overline [duplicate]CSS:文本装饰无法删除上划线[重复]
【发布时间】:2016-11-13 08:39:34
【问题描述】:

我正在尝试使用p::first-letter 选择器从第一个字母中删除文本装饰。但由于某些未知原因,我无法做到这一点。

p::first-line {
  font-weight: bold;
  text-decoration: overline;
}
p::first-letter {
  text-decoration: none;
  /*text-decoration-color: rgba(59, 119, 191, 0.68);*/
  display: block;
  color: red;
  font-weight: bold;
  background-color: rgba(59, 119, 191, 0.68);
  margin: 0px 2px 1px 0;
  padding: 5px 13px 5px 11px;
  color: #b1ffea;
}
<h2>Heading <a href="#"><span class="anchor">#</span></a></h2>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur eaque enim eveniet facere incidunt inventore necessitatibus non quas, repellat sed ullam unde ut vitae! Asperiores ducimus laborum magnam officia repellendus.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis ipsum laborum sunt voluptate voluptates voluptatum. A architecto beatae delectus eos itaque magnam nostrum perferendis, provident quis quos repellendus similique vitae!
Lorem ipsum dolor sit amet, consectetur <a href="#">some link</a> adipisicing elit. Ducimus itaque numquam voluptatem. Ad aspernatur consequuntur deserunt et expedita facilis id, iste maxime minus nisi odit quaerat quisquam quod tempora velit?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos <a href="#">another link</a> illo iure magni odio quas, sint totam ut. Aliquam ipsa recusandae voluptatem! A consectetur deserunt eos quaerat rerum. Dolores, quod voluptatem.</p>

更新:

好的,我通过启用“实验性 Web 平台功能”让它在 Chrome 中运行。由于某种原因前缀-webkit- 无法触发此行为。这是工作代码。

p::first-letter{
        text-decoration: overline;
        text-decoration-color: rgba(59, 119, 191, 0.68);
        display: block;
        color: red;
        font-weight: bold;
        background-color: rgba(59, 119, 191, 0.68);
        margin: 0px 2px 1px 0;
        padding: 5px 13px 5px 11px;
        color: #b1ffea;
    }

【问题讨论】:

  • 取消 p::first-line 样式,它会覆盖您的第一个字符样式
  • 但我希望第一行中的上划线除了第一个字符
  • 对不起,我明白了
  • 你可以做这样的事情:jsfiddle.net/bp7t1L47 请注意,我必须使用十六进制来表示 bgr 颜色,而不是 rgba,因为透明度使上划线可见(我看到你试图做什么,在评论中行)
  • 是的,它只能在 Firefox 中工作,不能在 chrome 中工作。我什至尝试将 -webkit- 前缀到 text-decoration-color 属性。但仍然无法在 chrome 中工作

标签: html css


【解决方案1】:

只需添加:

p::first-letter {
    float: left;
}

原来如此:

p::first-line {
  font-weight: bold;
  text-decoration: overline;
}
p::first-letter {
  float: left;
  text-decoration: none;
  /*text-decoration-color: rgba(59, 119, 191, 0.68);*/
  display: block;
  color: red;
  font-weight: bold;
  background-color: rgba(59, 119, 191, 0.68);
  margin: 0px 2px 1px 0;
  padding: 5px 13px 5px 11px;
  color: #b1ffea;
}
<h2>Heading <a href="#"><span class="anchor">#</span></a></h2>

<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur eaque enim eveniet facere incidunt inventore necessitatibus non quas, repellat sed ullam unde ut vitae! Asperiores ducimus laborum magnam officia repellendus.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis ipsum laborum sunt voluptate voluptates voluptatum. A architecto beatae delectus eos itaque magnam nostrum perferendis, provident quis quos repellendus similique vitae!
Lorem ipsum dolor sit amet, consectetur <a href="#">some link</a> adipisicing elit. Ducimus itaque numquam voluptatem. Ad aspernatur consequuntur deserunt et expedita facilis id, iste maxime minus nisi odit quaerat quisquam quod tempora velit?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos <a href="#">another link</a> illo iure magni odio quas, sint totam ut. Aliquam ipsa recusandae voluptatem! A consectetur deserunt eos quaerat rerum. Dolores, quod voluptatem.</p>

【讨论】:

【解决方案2】:

不确定,这是否是正确的解决方案。

但是是的,我们可以使用 text-decoration-skip link1,link2 跳过 text-decoration,但这里似乎不太适合。

我尝试将 L 和其余内容作为单独的元素并为其添加文本装饰(我知道它不正确),但可以帮助您

div{
  display:flex;
}
p.overline::first-line{
  display:inline-block;
  width:100%;
  font-weight: bold;
 text-decoration:overline;
}

p:first-child::first-letter {
  text-decoration: none;
  /*text-decoration-color: rgba(59, 119, 191, 0.68);*/

  color: red;
  font-weight: bold;
  background-color: rgba(59, 119, 191, 0.68);
  margin: 0px 2px 1px 0;
  padding: 5px 13px 5px 11px;
  color: #b1ffea;
}
<h2>Heading <a href="#"><span class="anchor">#</span></a></h2>
<div>
<p >L</p>

  
<p class="overline">orem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur eaque enim eveniet facere incidunt inventore necessitatibus non quas, repellat sed ullam unde ut vitae! Asperiores ducimus laborum magnam officia repellendus.
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis ipsum laborum sunt voluptate voluptates voluptatum. A architecto beatae delectus eos itaque magnam nostrum perferendis, provident quis quos repellendus similique vitae!
Lorem ipsum dolor sit amet, consectetur <a href="#">some link</a> adipisicing elit. Ducimus itaque numquam voluptatem. Ad aspernatur consequuntur deserunt et expedita facilis id, iste maxime minus nisi odit quaerat quisquam quod tempora velit?
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos <a href="#">another link</a> illo iure magni odio quas, sint totam ut. Aliquam ipsa recusandae voluptatem! A consectetur deserunt eos quaerat rerum. Dolores, quod voluptatem.</p>
</div>

希望对你有帮助

【讨论】:

    【解决方案3】:

    您可以使用伪选择器隐藏它,如下所示,

    p::first-line{
      font-weight: bold;
      text-decoration:overline;
      z-index:-1;
      position:absolute;
    }
    p::first-letter {
      display: block;
      color: red;
      font-weight: bold;
      padding: 2px 0px 0px 0px;
    }
    p::before{
      content:'';
      width:10px;
      height:1px;
      background:rgba(250,250,250,1);
      position:absolute;
    }
    <h2>Heading <a href="#"><span class="anchor">#</span></a></h2>
    
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur eaque enim eveniet facere incidunt inventore necessitatibus non quas, repellat sed ullam unde ut vitae! Asperiores ducimus laborum magnam officia repellendus.
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis ipsum laborum sunt voluptate voluptates voluptatum. A architecto beatae delectus eos itaque magnam nostrum perferendis, provident quis quos repellendus similique vitae!
    Lorem ipsum dolor sit amet, consectetur <a href="#">some link</a> adipisicing elit. Ducimus itaque numquam voluptatem. Ad aspernatur consequuntur deserunt et expedita facilis id, iste maxime minus nisi odit quaerat quisquam quod tempora velit?
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos <a href="#">another link</a> illo iure magni odio quas, sint totam ut. Aliquam ipsa recusandae voluptatem! A consectetur deserunt eos quaerat rerum. Dolores, quod voluptatem.</p>

    如果我更改 p::before background:transparent; 也不会工作,因为在后台它由 text-decoration:overline; 组成。所以这就是你可以隐藏的方式。只需为您的pseudo ::before background-color 获取正确的background-color

    另一个问题是::first-line::first-letter 都不支持所有 CSS 样式属性。

    【讨论】:

      【解决方案4】:

      这有点 hack-y,但您可以使用 ::after 伪元素在顶部绘制一小块颜色,轻松消除不需要的上划线。

      p::first-line {
        font-weight: bold;
        text-decoration: overline;
      }
      
      p::first-letter {
        text-decoration: none;
        /*text-decoration-color: rgba(59, 119, 191, 0.68);*/
        display: block;
        color: red;
        font-weight: bold;
        background-color: rgba(59, 119, 191, 0.68);
        margin: 0px 2px 1px 0;
        padding: 5px 13px 5px 11px;
        color: #b1ffea;
      }
      
      p {
      position: relative;
      }
      
      p::after {
      content: '';
      display:block;
      position:absolute;
      top:0;
      left:10px;
      width: 16px;
      height: 8px;
      background-color: rgb(122,163,212);
      }
      <h2>Heading <a href="#"><span class="anchor">#</span></a></h2>
      
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Consequuntur eaque enim eveniet facere incidunt inventore necessitatibus non quas, repellat sed ullam unde ut vitae! Asperiores ducimus laborum magnam officia repellendus.
      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis ipsum laborum sunt voluptate voluptates voluptatum. A architecto beatae delectus eos itaque magnam nostrum perferendis, provident quis quos repellendus similique vitae!
      Lorem ipsum dolor sit amet, consectetur <a href="#">some link</a> adipisicing elit. Ducimus itaque numquam voluptatem. Ad aspernatur consequuntur deserunt et expedita facilis id, iste maxime minus nisi odit quaerat quisquam quod tempora velit?
      Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dignissimos <a href="#">another link</a> illo iure magni odio quas, sint totam ut. Aliquam ipsa recusandae voluptatem! A consectetur deserunt eos quaerat rerum. Dolores, quod voluptatem.</p>

      【讨论】:

        猜你喜欢
        • 2012-10-21
        • 1970-01-01
        • 2012-09-30
        • 1970-01-01
        • 2014-10-26
        • 1970-01-01
        • 2016-05-14
        • 2019-06-25
        • 2014-05-26
        相关资源
        最近更新 更多