【问题标题】:How to capitalize first line with CSS? ::first-line pseudo-element not working如何用 CSS 大写第一行? ::第一行伪元素不起作用
【发布时间】:2012-08-02 06:51:07
【问题描述】:

现在我有一个段落,我想将整个第一行大写。我已将第一段设置为 ID“firstp”并尝试:

#firstp::first-line {
  text-transform: uppercase;
}

我已经用text-transform: capitalize 尝试过,但这也不起作用。这很奇怪,因为我已经设法使用#firstp:first-letter 更改了第一个字母(更改了字体大小)。

【问题讨论】:

  • 段落内容是静态的还是动态的?
  • 尝试在uppercase 之后添加分号 (;) 以正确结束该属性。
  • 它似乎只发生在 WebKit 上(FireFox 渲染良好)。
  • @knittl,样式表声明块中的最后一个分号是可选的。

标签: css css-selectors line pseudo-element capitalize


【解决方案1】:

:first-line 上的text-transform 现在确实有问题,请参阅此处的参考http://reference.sitepoint.com/css/text-transform

您可以使用这个名为 linify https://github.com/octopi/Linify 的 jquery 插件选择第一行,然后应用 text-transform: uppercase 的属性

问候,

【讨论】:

  • WebKit 浏览器似乎在这里有错误,如果不是更早的话,在 2006 年首次报告 (beckleyworks.com/2006/03/30/css-bug-discovered),但仍未修复。因此,如果您希望在第一行使用跨浏览器的大写字母,则需要一些 JavaScript 方法(即使它可以工作,它也不是一个很好的排版设备)。
  • 似乎在 2015 年的今天仍然是 webkit 浏览器的问题。哇。 Webkit 还没有达到 CSS3 标准...
【解决方案2】:

我认为 Chrome 的 ":first-line" 有问题。尝试删除它并在此页面上使用 james31rock 的语法,除了在他的示例中 CSS 应该是“#firstp{...”以反映他的 HTML 中的 ID 而不是“.makeupper”。

【讨论】:

    【解决方案3】:

    你可能想使用:

    font-variant: small-caps;
    

    我认为它看起来更好,并且在所有主要浏览器中都支持。

    更多信息

    http://en.wikipedia.org/wiki/Small_caps

    【讨论】:

    • 由于大多数字体没有小写字母版本,你会让浏览器使用缩小尺寸的大写字母,这在排版上很糟糕。
    • 但是如果您碰巧使用的是带有“小型大写字母”版本的字体,这是一个非常好的解决方案。 +1
    【解决方案4】:

    为了实现这一点,您必须在正确的语法中使用以下伪元素。示例:

    HTML 部分:

    <selection id="Welcome">
    <p>Some text</p>
    </section>
    

    CSS 表格:

    #Welcome p:first-of-type:first-line {
    text-transform: uppercase;
    }
    

    我希望这会有所帮助。抱歉迟到了。我想,迟到总比没有好!

    【讨论】:

      【解决方案5】:

      可能还有其他方法...

      如果您在段落中有两个带有文本的 span,其中一个 span 的位置将设置为段落的左上角,因此这两个 span 会重叠。现在将上部跨度的高度设置为大约文本的line-height,将overflow 设置为隐藏,这样只有跨度的第一行可见。将text-transform 设置为上部跨度上的大写字母,你的第一行是大写字母。

      此解决方案的缺点是,大写文本更宽,因此下一行可能会丢失单词。您可以通过使用fixed-width 字体或尝试在两个跨度上设置letter-spacing 来解决此问题,以便大写和小写文本的宽度相同。

      Here is jsFiddle,虽然有时改变窗口大小时并不理想,但可能就足够了

      【讨论】:

        【解决方案6】:

        在 Chrome 中,这两种方法似乎都不起作用。在即文本转换作品。我没有 Firefox 可供测试。

        http://jsfiddle.net/vJSeq/4/ - 使用文本装饰

        http://jsfiddle.net/vJSeq/3/ - 使用文本转换

        你可以看到选择器是对的,因为它被高亮了。

        我的建议是使用一些东西来分隔你想要突出显示的文本,方法是在段落内创建一个 span 标签并为其分配一个类

        <p id="firstp">to stop the degradation of the planet's natural environment and to build a future in <span class="makeupper">which humans live in harmony with nature, by; conserving</span> the world's biological diversity, ensuring that the use of renewable natural resources is sustainable, and promoting the reduction of pollution and wasteful consumption.</p>
        ​
        

        和css

        .makeupper
        {
          text-transform: uppercase;  
        }
        

        http://jsfiddle.net/vJSeq/5/

        【讨论】:

        • 是的,经过测试,它确实可以在 Internet Explorer 中运行。仍然想找到一种方法让它在 Chrome 中工作,因为这是这里使用的主要浏览器。
        • 我不确定这是否可行。您可以使用 javascirpt 评估第一行并在其周围包裹一个 span 标签,然后将 css 应用于 span 标签/
        猜你喜欢
        • 2021-06-18
        • 1970-01-01
        • 2017-10-13
        • 1970-01-01
        • 2011-08-04
        • 1970-01-01
        • 1970-01-01
        • 2013-12-31
        • 1970-01-01
        相关资源
        最近更新 更多