使用css为最后一段中的第一行设置样式

时间:2011-10-03 17:41:30

标签: html css css-selectors

如何使用css使最后一段中的第一句粗体变粗?我还想在最后一段的顶部添加额外的填充,以便它将环绕图像。如果我增加浮动图像底部的填充,段落不会包裹到图像的底部齐平左边缘,它只是沿着它的右边流动 - 而不是我想要的。我将一个类绑定到“p”元素,因为我只想影响某个段落(我没有看到“:last-child”伪元素也不知道你是否可以使用两个伪元素一个元素或类)。

#wf_mainContent_left p.last_wfp:first-line {
padding-top:20px;
font-weight:bold;
color:red;
}

HTML

<p class="last_wfp">This is the first sentence that I want bold and red. This is the second
 sentence that I don't want that treatment.</p>

当我只想要第一个句子时,即使它们在同一行上,这两个句子都会加粗。这应该可以根据this tutorial来完成。并且对填充没有影响。我尝试添加<br>标记,但它增加了很多空间。我尝试了<br>标签的样式,但根据我刚读过的this post,这是不可能的。无论如何,我只想要第一行是粗体,而不是两个句子。

3 个答案:

答案 0 :(得分:3)

  

(我没有看到“:last-child”伪元素,也不知道你是否可以在一个元素或类上使用两个伪元素)

:last-child是一个CSS3伪类。它不是伪元素,因此您始终可以将:first-line附加到选择器上。

如果您不担心浏览器兼容性,可以轻松使用:

#wf_mainContent_left p:last-child:first-line {
    padding-top:20px;
    font-weight:bold;
    color:red;
}

如果您需要兼容性,请坚持使用现有的CSS类解决方案。

至于生成过多空格的br,请查看是否可以减少line-height的{​​{1}}。

答案 1 :(得分:1)

@BoltClock有CSS答案。

如果您正在寻找跨浏览器兼容性并且您愿意使用js,则可以执行以下操作:

CSS

.last_bold{
    font-weight:bold;
    color:red;
    padding-top:2em;
    display:inline-block;
}

<击>

<击>
var a = $('.last_wfp').text();
var b = a.split('. ');

$('.last_wfp').html('<span class="last_bold">' + b[0] + '</span>' + '. ' + b[1]);

<击>

修改

Per mr.nicksta的观察:

  

寻找一段时期的第一个索引可能更有效率   然后从开始到那个位置创建一个子串?还有这个   方法假设每个段落元素只有两个句子,任何进一步   句子丢失了。

这是修改后的代码,应该处理任何句子。

var a = $('.last_wfp').text();
var b = a.slice(0, a.indexOf('. '));
var c = a.slice(a.indexOf('. '), a.length);

$('.last_wfp').html('<span class="last_bold">' + b + '</span>' + c);

修订示例: http://jsfiddle.net/jasongennaro/3ZKP9/5/

答案 2 :(得分:0)

第一行伪元素表示文本的第一个格式化行。它应该在块级元素,内联块,表格标题或表格单元格中。

它不会处理您的符号(点回车...),仅基于格式和块大小。

注意浏览器的兼容性。你会在那里找到一张好照片:http://reference.sitepoint.com/css/pseudoelement-firstline

请参阅问题其他部分的其他答案我不会复制粘贴