在现代 web 开发中,由于设备的多样性和屏幕尺寸的不断变化,响应式布局成为了一个麻烦、但是又非常重要的技术追求。因此,在技术方案的学习上,为了应对各种不同的响应式需求,我们要学习大量的基础技术方案。好在在 css 中,这些方案都开始逐渐趋于成熟。在 css 的技术方案中,提供了大量的响应式尺寸单位来解决不同的响应式需求。
响应式单位:指的是会随着参考对象的改变而自动调整的尺寸单位。
常见的响应式单位包括:
em
:相对于父元素的字体大小rem
:相对于根元素(html)的字体大小%
:相对于父元素的百分比vw
/vh
:相对于视口宽度/高度的百分比vmin
/vmax
:相对于视口最小/最大尺寸的百分比本文主要是来介绍一下 css 中的第一个响应式尺寸单位: em
em
的参考对象为该元素本身的字体大小。
例如,下面这个例子,有一个元素 div
,我们设置其字体大小为 14px
,此时,其他的属性尺寸使用 em
来表示。那么有如下换算
11em = 14px20.5em = 7px30.6em = 8.4px
演示效果如下
1.supercss_em_03_box {2font-size: 14px;3border: 0.5rem solid #000;4padding: 1rem;5border-radius: 0.6em;6}
该元素的字体大小,如果没有设置
16px
例如,当父元素字体为 16px
时,那么对于子元素而言
11em = 16px22em = 32px
如果我们将父元素字体大小设置为 20px
,那么对于子元素而言
11em = 20px22em = 40px
这样,我们可以只需要更改父元素的字体大小,就可以控制子元素的大小发生变化。
观察一下这个案例
10import './index.css'2030function Demo01() {40return (50<div className='supercss_em_01_parent'>60I'm parent div set font-size to 20px70<div className='child'>80I'm child div set font-size to 2em, so my font-size is 40px90</div>10</div>11);12}1314export default Demo01;
这是一个改变父元素的字体大小,然后,然后对子元素相关的 em 尺寸造成影响的案例。
1.child {2margin: 1em;3height: 8em;4}