但是,如果容器不是视口(主体)怎么办?
Alex在已接受的答案下的评论中提出了这个问题。
这个事实并不意味着vw
不能在某种程度上使用该容器的大小。现在,要想看到所有变化,就必须假设容器在某种程度上是灵活的。是通过直接百分比width
还是通过100%减去利润。如果容器始终设置为(例如)200px
宽,则该点变为“模拟”,然后设置一个font-size
适合该宽度的值。
例子1
但是,对于宽度可变的容器,必须认识到,在某种程度上,容器的尺寸仍超出视口。因此,必须vw
根据视口的百分比大小差异来调整设置,这意味着要考虑父包装的尺寸。举个例子:
div {
width: 50%;
border: 1px solid black;
margin: 20px;
font-size: 16px;
/* 100 = viewport width, as 1vw = 1/100th of that
So if the container is 50% of viewport (as here)
then factor that into how you want it to size.
Let's say you like 5vw if it were the whole width,
then for this container, size it at 2.5vw (5 * .5 [i.e. 50%])
*/
font-size: 2.5vw;
}
假设此处div
是的子项body
,则它是50%
该100%
宽度的宽度,在这种基本情况下,该宽度即为视口大小。基本上,您想设置一个vw
看起来对您来说很好的。正如您在上述CSS内容的评论中所看到的,您可以相对于整个视口大小从数学上“思考”,但是您不需要这样做。文本将随着容器“弯曲”,因为容器随着视口的调整而弯曲。更新:这是两个大小不同的容器的示例。
例子2
通过基于此强制进行计算,可以帮助确保视口大小。考虑这个例子:
html {width: 100%;} /* Force 'html' to be viewport width */
body {width: 150%; } /* Overflow the body */
div {
width: 50%;
border: 1px solid black;
margin: 20px;
font-size: 16px;
/* 100 = viewport width, as 1vw = 1/100th of that
Here, the body is 150% of viewport, but the container is 50%
of viewport, so both parents factor into how you want it to size.
Let's say you like 5vw if it were the whole width,
then for this container, size it at 3.75vw
(5 * 1.5 [i.e. 150%]) * .5 [i.e. 50%]
*/
font-size: 3.75vw;
}
大小调整仍基于视口,但本质上是根据容器大小本身设置的。
容器尺寸是否应动态变化...
如果容器元素的大小最终通过@media
断点或JavaScript 动态更改其百分比关系,则无论基本的“目标”是什么,都需要重新计算以保持相同的“关系”以进行文本大小调整。
以上面的示例1为例。如果通过或JavaScript 将div
切换为,则同时需要在媒体查询或JavaScript中将调整为的新计算。这将使文本大小与将原始容器的“宽度” 从视口大小减小一半时的大小相同,但由于其自身百分比计算的更改而现在减小了。25%
@media
font-size
5vw * .25 = 1.25
50%
一个挑战
使用CSS3 calc()
功能时,动态调整将变得困难,因为该功能目前无法正常使用font-size
。因此,如果您更改宽度,则无法进行纯CSS 3调整calc()
。当然,对边距宽度的微小调整可能不足以保证的任何变化font-size
,因此可能无关紧要。
font-size: 100%;
表示文本原尺寸的100%(即从其父级继承的文本)。默认情况下为16px。因此,如果您使用50%,则字体大小为:8px