我很难理解字体缩放。
我目前有一个字体大小为100%的网站。但这是100%的吗?这似乎是在16个像素处计算出来的。
我的印象是,100%会以某种方式指代浏览器窗口的大小,但显然不是因为无论窗口大小调整为移动宽度还是宽屏桌面,都是16像素。
如何使站点上的文本与其容器相关?我尝试过使用它们,但这也无法扩展。
我的理由是,当你调整大小时,像我的菜单这样的东西会变得压扁,所以我需要减少.menuItem等元素相对于容器宽度的px字体大小。(例如,在大型桌面上的菜单中,22px的效果非常好。向下移动到平板电脑宽度,16px更合适。)
我知道我可以添加断点,但我真的希望文本能够缩放并具有额外的断点,否则,我将以每100像素宽度减少数百个断点来控制文本。
使用CSS变量
还没有人提到CSS变量,这种方法对我来说效果最好,所以:
假设你的页面上有一个列,它是移动用户屏幕宽度的100%,但最大宽度为800px,所以在桌面上,列的两边都有一些空间。将此置于页面顶部:
<script> document.documentElement.style.setProperty('--column-width', Math.min(window.innerWidth, 800)+'px'); </script>
现在您可以使用该变量(而不是内置的vw单元)来设置字体的大小。例如。
p {
font-size: calc( var(--column-width) / 100 );
}
这不是一种纯CSS方法,但它非常接近。
使用CSS变量
还没有人提到CSS变量,这种方法对我来说效果最好,所以:
假设你的页面上有一个列,它是移动用户屏幕宽度的100%,但最大宽度为800px,所以在桌面上,列的两边都有一些空间。将此置于页面顶部:
<script> document.documentElement.style.setProperty('--column-width', Math.min(window.innerWidth, 800)+'px'); </script>
现在您可以使用该变量(而不是内置的vw单元)来设置字体的大小。例如。
p {
font-size: calc( var(--column-width) / 100 );
}
这不是一种纯CSS方法,但它非常接近。
这个呢?将父级的字体大小设置为等于其宽度,然后使用文本元素字体大小的百分比。
.element {
width: 400px;
font-size: 400px; /* equal to width */
}
.text {
width: 10%; /* will be 40px */
}
我发现这非常简单,特别是当你处理图标时,但也适用于文本。
/*造型的开始*/* {边距:0;填充:0;框大小调整:边框框;}.box格式{显示:块;背景:矢车菊蓝;高度:最大含量;边距底部:32px;}/*样式结束*/.方框p{字体大小:20%;}<div class=“box”style=“width:400px;font-size:400px”><p>文本</p></div><div class=“box”style=“width:128px;font-size:128px”><p>文本</p></div><div class=“box”style=“width:10vw;font-size:10vw”><p>文本</p></div><div class=“box”style=“width:64px;font-size:64px”><p>文本</p></div>