因此,我正在努力为我的HTML文档设计一个响应更快的设计,我想要排序的第一件事是根据容器的高度和宽度缩放字体大小。现在我有以下内容:
我研究了一下,在css中找到了“VW”这个单位,它允许字体根据容器进行缩放,但我注意到它只在我调整浏览器宽度时才起作用,这会得到如下结果:
如图所示,如果我调整浏览器的宽度,文本确实会缩放。但是,我意识到当我调整浏览器的高度时,它根本不会缩放。
我如何确保文本是基于容器的宽度和高度缩放的?
null
html,body {
height: 100%;
}
.outer {
height: 50%;
border: 1px solid black;
width: 50%;
}
#cat1 {
height: 50%;
border: 1px solid black;
font-size: 3vw;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
#cat2 {
height: 50%;
border: 1px solid black;
font-size: 3vw;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href = "style.css">
<title>Document</title>
</head>
<body>
<div class = "outer">
<div id = "cat1">
This is text1
</div>
<div id = "cat2">
This is text2
</div>
</div>
</body>
</html>
null
编辑:这种方法可能是错误的。这将将字体大小设置为继承字体大小的一部分,而不是父元素的宽度/高度。
请检查此内容:
旧答案
使用em单元而不是VW。
null
html,body {
height: 100%;
}
.outer {
height: 50%;
border: 1px solid black;
width: 50%;
}
#cat1 {
height: 50%;
border: 1px solid black;
font-size: .5em;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
#cat2 {
height: 50%;
border: 1px solid black;
font-size: 1em;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href = "style.css">
<title>Document</title>
</head>
<body>
<div class = "outer">
<div id = "cat1">
This is text1
</div>
<div id = "cat2">
This is text2
</div>
</div>
</body>
</html>
虽然font-size
CSS属性可以采用相对单位中的无单位数字、百分比或长度,但所有这些都是相对于父元素的font-size
的。即使使用CSScalc
函数,任何度量都将理解为父元素的font-size
的比率,而不是元素的宽度或高度。
唯一的例外是rem
和ren
单位,它们相对于元素的
font-size
以及vw
和vh
单位,它们分别是视口宽度和高度的百分比。换句话说,100VH
是窗口的高度,100VW
是窗口的宽度。Red Blob Games有一篇关于使用vw
单元进行响应式字体大小调整的有趣文章,我建议阅读一下。
您可以使用CSS转换来缩放元素的呈现大小,但这可能会使文本显得模糊或拉伸,这绝对不是您想要的,当试图使网站具有响应性和可访问性时。
长话短说,没有CSS唯一的方法来相对于元素的大小设置字体大小。如果您真的想这样做,就必须使用JavaScript以像素为单位计算元素的大小,然后将px
值传递给font-size
CSS属性。
但在这一点上,您将积极地与web的工作方式作斗争:元素伸展以适应它们的内容,而不是相反。