我有一个正在使用 CSS3 开发的网站,并且我的标题有
h1
标签:
<h1>main title</h1>
现在我希望标题采用不同的颜色:
<h1>main <span>title</span></h1>
所以我这样做:
h1 {
color: #ddd;
}
h1 span {
color: #333;
}
有没有办法不使用
span
标签并仅在CSS中指定最后一个单词为不同的颜色?
这对于纯 CSS 是不可能的。但是,您可以使用 letting.js 来获取
::last-word
选择器。 CSS-Tricks 有一篇关于此的优秀文章:CSS-Tricks:对 nth-everything 的调用。然后您可以执行以下操作:
h1 {
color: #f00;
}
/* EDIT: Needs lettering.js. Please read the complete post,
* before downvoting. Instead vote up. Thank you :)
*/
h1::last-word {
color: #00f;
}
“last-word”并不适用于所有浏览器;例如,它不适用于 Safari。我不会使用已接受的答案。我不认为仅仅为了更改单个标题的最后一个单词而导入整个库或插件是一个好主意,这就像“用大炮杀死错误”......相反,我会使用单个 Javascript 函数,并且一个全球性的班级。像这样的东西:
<h1>This is my awesome <span class="last-word">title</span></h1>
CSS:
<style>
.last-word {font-weight:bold; /* Or whatever you want to do with this element */ }
</style>
最初,你会得到这样的东西:
<h1 class="title">This is my awesome title</h1>
然后,您可以初始化一个 Javascript 方法来更改 $(document).ready() =>
上的最后一个单词<script>
$(document).ready(function() {
$('.title').each(function(index, element) {
var heading = $(element);
var word_array, last_word, first_part;
word_array = heading.html().split(/\s+/); // split on spaces
last_word = word_array.pop(); // pop the last word
first_part = word_array.join(' '); // rejoin the first words together
heading.html([first_part, ' <span class="last-word">', last_word, '</span>'].join(''));
});
});
</script>
祝你好运。
不,没有。 CSS 中仅存在
::first-letter
和 ::first-line
。其他任何操作都必须使用元素手动完成(例如 span
)。
注意:
::first-word
和 ::last-word
都没有计划,至少在 选择器级别 4 规范中没有。
使用
lettering.js 并进行以下设置:
$(document).ready(function() {
$('h1').lettering('words');
});
这会将任何
<h1>
标签拆分成类似这样的内容:
<h1>
<span class="word1">Highlight</span>
<span class="word2">the</span>
<span class="word3">last</span>
<span class="word4">word</span>
<span class="word5">a</span>
<span class="word6">different</span>
<span class="word7">color</span>
</h1>
当然,我们不能只针对
.word7
,因为这可能不是最后一个,所以我们可以使用
:last-child
CSS 伪类。
h1 {
color: #333;
}
h1 > span:last-child {
color: #c09;
}
现在最后一个词的颜色不同了。
查看实例。
唯一需要注意的是
如果您确实想在一个元素内找到一种解决方法,那么您必须使用 JavaScript 来解析最后一个单词。 我认为当页面上只有几个案例时,您采用的方法是最好的方法。
如果你将它用于 h1 那么你应该只在页面上出现一次。
CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/lettering.js/0.6.1/jquery.lettering.min.js"></script>
例如,
<script>jQuery('h3').lettering('words')</script>
现在选择您要编辑的单词类别,并为其编写 CSS。
CSS 示例:
.word3 {color : red;}
.something:after
{
content: "";
position: absolute;
width: 98%;
display: block;
height: 2px;
background-color: #000;
bottom: 5px;
}
我选择了宽度< 100% so that it fits underneath the text with the letter spacing I wanted. This solution worked well for me.
element1
{
properties
main
}
element1:after
{
content: "title";
color: pickone;
}
我建议保留“span”。如果你不想有一个巨大的 css 和那些额外的东西,你总是可以在你的 html 中这样做:
<span style="color:#000;">text</span>