CSS之基于视窗单位的排版

1.使用视窗单位进行排版

这里还有一个为什么要考虑使用视窗单位进行排版的原因 - 根据客户端的浏览器,视窗单位会自动重新计算。这就意味着我们不需要显式声明媒体查询的字体大小

实例1:让我们用一个例子清楚地说明这一点

考虑下面的代码,我在800px处将font-size的大小由16px 更改为 20px

这里写图片描述

当你看着这段代码时,你可以在800px视窗时,立马告诉font-size将大小由16px更改为20px。这是我们为了良好的视觉效果经常做的事情

但是,偶尔你也会遇到这种情况,在两个断点处你不得不额外增加一个媒体查询以便在不同的设备上,排版依旧保持良好

这里写图片描述

但是不指定多个媒体查询或者多个字体大小,你如何在不同情况下拥有相同效果呢?

这时候视窗单位就要发挥它的作用了,在视窗单位中设置font-size属性,你就可以很容易的获取一样的效果

这里写图片描述

不过,正如你可以看到的,视窗单位太适应屏幕大小的改变。如果你也将字体大小设置为3vw,在一个屏幕宽度为320px的设备(移动)上,你得到的文本大小将为10px。这时字体过小而不适合阅读。另一方面,在一个屏幕宽度为1440px的设备(笔记本电脑)上,你得到的字体大小将为43px,这时,字体又太大了

值得庆幸的是,这里有一个简单的方法可以实现。我们可以设置一个最小的字体大小,然后在一个小视窗中通过多次使用calc()属性缩放字体

这里写图片描述

2.calc的问题

我尝试做的第一件事就是创建一个字体大小为 body 文本大小两倍的<h1>元素。结果证实并不可以直接这么做,请看下面的实例

这里写图片描述

这里写图片描述

比方说你现在的视窗大小为800px。默认的font-size大小为16px

  • <html>中112.5%计算出的font-size大小为18px(112.5/100 * 16px)
  • 0.25vw计算出的值相等于2px(800px * 0.25 ÷ 100)\
  • <html>中计算的font-size大小为20px (18px + 2px)

到目前为止HTML计算是不是很好?太棒了!

我们将采用同样的方式来解决<h1>的计算。这一次要特别注意112.5%的计算

  • <h1>中112.5%计算出来相当于22.5px的font-size大小(112.5/100 * 20px)
  • 0.25vw相当于2px(800px * 0.25 ÷ 100)
  • <h1>的font-size大小为49px((22.5px + 2px) * 2)

不幸的是,我们要寻找的正确的

大小为body的font-size大小的两倍或者说是40px,所以该怎么办呢??

3.精度公式解决问题

有什么办法可以结合calc实现具体的功能呢?

还有一个更大的我不得不克服的问题。就是我之前曾经提出的一个疑问:”在视窗大小为800px的情况下你如何计算vw,使排版的单位大小为20px?”

让我们说说你想要的结果…

  • 当视窗大小为600px时,font-size大小为18px
  • 当视窗大小为1000px时,font-size大小为22px

我们这里给出一个公式:

这里写图片描述

首先确定最小的屏幕600px的时候对应16*1.125=18px的字体,然后600px对应18px字体—-1000px对应22px字体,这就很明显改变100px屏幕宽度字体会改变1px,所以很显然(100vw-600px)是结果多少px就对应改变百分之多少px的字体值,所以可以最终得出结论:(100vw-600px)/100的结果值就是所改变的那几个px的字体值,再加上之前的18px基础值就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值