最简单的方法?
h1 { font-size: 2em }
section h1 { font-size: 1.8em }
section section h1 { font-size: 1.6em }
section section section h1 { font-size: 1.4em }
如果您也需要它来处理文章(或部分+文章的任何组合),那么您还需要添加这些组合(这可能会产生非常长的选择器)。
如果您对 CSS 预处理器持开放态度,您可以节省大量的重新输入。这个特殊的 mixin 将涵盖其他标题排名的情况,而不仅仅是 h1。
Sass + 指南针:
$gh-selectors: 'section, article' !default;
@mixin graduated-headlines($hn: 1, $sizes: 2em 1.8em 1.4em 1.2em 1em .8em) {
$sel: $gh-selectors;
@for $i from 1 through length($sizes) {
#{$sel} {
@for $j from 1 through $hn {
@if $i + $j - 1 <= length($sizes) {
h#{$j} {
font-size: nth($sizes, $i + $j - 1);
}
}
}
}
$sel: nest($sel, $gh-selectors);
}
}