在 CSS 中,我可以让它在特定的 div 类中,每个标题都缩小下一个尺寸吗?意思是,h1 是 h2 大小的,h2 是 h3 大小的,等等?但没有实际指定这些尺寸?
我希望能够设置一次 h1、h2、h3,然后在特定情况下将它们全部向下移动。
在 CSS 中,我可以让它在特定的 div 类中,每个标题都缩小下一个尺寸吗?意思是,h1 是 h2 大小的,h2 是 h3 大小的,等等?但没有实际指定这些尺寸?
我希望能够设置一次 h1、h2、h3,然后在特定情况下将它们全部向下移动。
通过 HTML5 CR(参见 4.4.11标题和部分s),您可以使用article
orsection
元素来达到此目的,因为它们开始新的嵌套级别,因此例如h1
它们内部对应于h2
它们外部。最新版本的浏览器通常会实现这一点,例如,您可以通过查看以下内容:
<!doctype html>
<title>Headings</title>
<h1>Heading</h1>
<h2>Heading</h2>
<article>
<h1>Heading</h1>
</article>
<section>
<h1>Heading</h1>
</section>
但是,支持仍然有限,并且会在很长一段时间内如此。IE 8(及以上)将是我们多年。尽管在这些浏览器上存在 polyfills 来实现新的 HTML5 元素,例如著名的html5shiv.js不处理标题。
所以最强大的方法是明确设置你的字体大小。但是,您可以使用上下文选择器,例如
<style>
h2, .article h1 { font-size: 130%; }
</style>
...
<div class=article>
<h1>...</h1>
...
</div>
(或者可能使用article
带有 html5shiv 的元素)。
Jukka 的答案是一种方式,但如果您响应式地解决问题,我会以另一种方式解决这个问题,这种方式可能会更强大。
这是 Smashing Magazine 上的一篇文章,关于为复制构建适当的基线,如果您正在构建复制繁重的界面,这是一本很好的读物。
因此,您将首先为文本设置适当的基线,然后根据基线使用百分比来缩放标题大小。
body { font-size: 1.2em } /* Baseline */
article { font-size: 80% } /* 0.8 of ^ Baseline */
aside { font-size: 60% } /* 0.6 of ^ Baseline */
/* x% of the parent font-size */
h1 { font-size:160% }
h2 { font-size:140% }
p{ font-size:100% }
etc...
这将影响, &中的所有副本,并且文本大小将相对于基线大小进行缩放。body
article
aside
<h1>Font size = 1.2em * 160% = 1.92em</h1>
<p>Font size = 1.2em * 100% = 1.2em</p>
<article>
<h1>Font size = 1.2em * 80% * 160% = 1.536em</h1>
<p>Font size = 1.2em * 80% * 100% = 0.96em</p>
</article>
<aside>
<h1>Font size = 1.2em * 60% * 160% = 1.152em</h1>
<p>Font size = 1.2em * 60% * 100% = 0.72em</p>
</aside>
这使得为不同的查询设置不同的基线变得容易@media
,并且所有的文本大小都正确。
我们使用媒体查询更改基线:
/* Small screen, so beef up the font size */
@media only screen and (max-width: 320px){
body { font-size:1.4em }
}
这将影响我们之前的所有样式,如下所示:
<h1>Font size = 1.4em * 160% = 2.24em</h1>
<p>Font size = 1.4em * 100% = 1.4em</p>
<article>
<h1>Font size = 1.4em * 80% * 160% = 1.792em</h1>
<p>Font size = 1.4em * 80% * 100% = 1.12em</p>
</article>
<aside>
<h1>Font size = 1.4em * 60% * 160% = 1.344em</h1>
<p>Font size = 1.4em * 60% * 100% = 0.84em</p>
</aside>
2c