CSS增加第一个单词的大小

dra*_*ank 68 css

这个让我有点难过.我想在14pt的#content div中创建所有段落的第一个单词,而不是段落的默认值(12pt).有没有办法在直接CSS中执行此操作,或者我是否在一个范围内包装第一个单词来完成此操作?

Rob*_*ter 78

你在寻找的是一个不存在的伪元素.有:第一个字母和:第一行,但没有:第一个字.

你当然可以用JavaScript做到这一点.以下是我发现的一些代码:http://www.dynamicsitesolutions.com/javascript/first-word-selector/

  • 可能是因为"单词"在布局语言中不是一个明确定义的概念.是"半生不熟"的一两个字?"麦当劳"和"奥谢"怎么样?"5 + 3 = 8"或"5 + 3 = 8"中的第一个单词是什么? (69认同)
  • @RobbySlaughter CSS已经定义了"单词"(至少对于拉丁字母字符)的概念,只要`text-transform:capitalize`已经存在:http://jsfiddle.net/mlms13/DRJ76/ (49认同)
  • 出于布局目的,单词的定义为:"一组非空白字符跟随和前面的空白字符"是一个很好的并且非常有用.对于处理,您可能需要"周到",但对于布局,这是一个非常好的解决方案. (46认同)
  • 在浏览器中定义了"单词".执行:first-word将简单地使用换行符中使用的相同逻辑. (13认同)
  • 汉字之间没有空格.实际上,汉字没有单词和字母的概念. (12认同)
  • @Robby Slaughter正则表达式用\ d和\ w做得很好 (2认同)
  • 现在是2018年,我们在CSS中仍然没有此功能 (2认同)

Pre*_*aul 31

我必须不同意Dale ......强大的元素实际上是使用的错误元素,暗示了内容的含义,使用或强调,而你只是想为元素提供样式.

理想情况下,您可以使用伪类和样式表来完成此操作,但由于这是不可能的,您应该使您的标记在语义上正确并使用<span class="first-word">.

  • FWIW,`<b>`元素可能是合适的.[HTML5规范](http://www.w3.org/TR/html5/text-level-semantics.html#the-b-element)说:_B元素表示正在引起注意的文本范围用于实用目的而不传达任何额外的重要性,并且没有其他声音或情绪的暗示,例如文档摘要中的关键词,评论中的产品名称,交互式文本驱动软件中的可操作词语,或**文章lede**._(强调我的)第一个词不是一篇文章,但它的功能是相同的. (10认同)
  • 接受为正确的javascript答案可能更有用,但我相信这一点在语义上是最正确的. (4认同)

Jon*_*ley 20

同样的事情,使用jQuery:

$('#links a').each(function(){
    var me = $(this);
    me.html( me.text().replace(/(^\w+)/,'<strong>$1</strong>') );
  });
Run Code Online (Sandbox Code Playgroud)

要么

$('#links a').each(function(){
    var me = $(this)
       , t = me.text().split(' ');
    me.html( '<strong>'+t.shift()+'</strong> '+t.join(' ') );
  });
Run Code Online (Sandbox Code Playgroud)

(通过jQuery邮件列表中的 'Wizzud' )


Sim*_*ter 9

遗憾的是,即使使用CSS 3,我们仍然没有:first-word :last-word使用纯CSS 的喜欢等.值得庆幸的是,现在几乎所有的JavaScript都会引起我的推荐.使用nthEverythingjQuery,您可以从传统的Pseudo元素扩展.

目前有效的Pseudos是:

  • :first-child
  • :first-of-type
  • :only-child
  • :last-child
  • :last-of-type
  • :only-of-type
  • :nth-child
  • :nth-of-type
  • :nth-last-child
  • :nth-last-of-type

并使用nth Everything我们可以扩展到:

  • ::first-letter
  • ::first-line
  • ::first-word
  • ::last-letter
  • ::last-line
  • ::last-word
  • ::nth-letter
  • ::nth-line
  • ::nth-word
  • ::nth-last-letter
  • ::nth-last-line
  • ::nth-last-word


Mot*_*ein 8

纯CSS解决方案:

使用:first-line伪类.

display:block;
Width:40-100px; /* just enough for one word, depends on font size */
Overflow:visible; /* so longer words don't get clipped.*/
float:left; /* so it will flow with the paragraph. */
position:relative; /* for typeset adjustments. */
Run Code Online (Sandbox Code Playgroud)

没试过那个.很确定它会对你很好.我之前已经将块规则应用于伪类.对于每个第一个单词,您可能会遇到固定宽度,因此text-align:center; 并给它一个很好的背景或处理负空间的东西.

希望对你有用.:)

-Motekye

  • 我们的想法是让第一行足够宽,只有一个单词,浮动它,使其与文本的其余部分一起运行,然后应用样式.天啊. (13认同)
  • 一个非常有创意的想法,但你应该在发布前进行测试.它不起作用 - 它无法工作,因为在`:: first-line`中忽略了`display`(https://developer.mozilla.org/de/docs/Web/CSS/::first-line ). (2认同)
  • 足够宽的“仅需一个字”?这很荒谬,因为一个单词可以是1个字母或15个字母。 (2认同)

haz*_*zen 6

你必须在一个范围内包装这个词才能完成这个任务.