博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS视口单位:快速入门
阅读量:6909 次
发布时间:2019-06-27

本文共 2018 字,大约阅读时间需要 6 分钟。

翻译自。此文章简单介绍了视口单位及其应用,用于提升大家css知识的广度

单位意义

CSS中有四个基于视口单位,分别为vhvwvminvmax

  • 视口高度(vh)- 这个单位表示视口的高度。1vh等于视口高度的1%;
  • 视口宽度(vw)-这个单位表示视口的宽度。1vw等于视口宽度的1%;
  • 视口最小值(vmin)- 这个单位表示视口的更小尺寸。如果视口高度小于宽度,1vmin等于视口高度1%。同样,如果宽度小于高度,1vmin代表视口宽度1%。
  • 视口最大值(vmax)-这个单位表示视口的更大尺寸。如果视口高度大于宽度,1vmax等于视口高度1%。同样,如果宽度大于高度,1vmax代表视口宽度1%。

在不同情形下,这些单位的值代表什么

  • 如果视口宽1200px,高1000px。则10vw值为120px,10vh为100px。因为宽度大于高度,10vmax等于120px,10vmin等于100px。
  • 如果现在设备旋转,宽为1000px,高1200px。则10vw值为100px,10vh为120px。10vmax仍等于120px,因为高度仍大于宽度,10vmin等于100px。
  • 如果重新设计窗口以至于视口宽1000px,高800px,则10vw值为100px,10vh为80px。因为宽度大于高度,10vmax等于100px,10vmin等于80px。

在这一点上,视口单位也许小于百分数。然而,他们是不同的,就百分数而言,子元素宽度和高度取决于其父元素。

See the Pen by yuweijie ( ) on .

如上面例子,第一个子元素被设为父元素宽度的80%。第二个子元素为宽度的80vw,而其宽于父元素

视口单位的应用

因为这些单位基于视口尺寸,所以在相对于视口设置元素的宽度和高度时,使用它们非常方便。

全屏背景图片或部分

设置元素的背景图片充满屏幕这种方式很常见。同样,你也许想设计一个网站,其产品或服务的部分覆盖整个屏幕。这样情况下,你可以设置响应元素宽度为100%,高为100vh

举个例子,

a

复制代码

你可以使用以下CSS来实现背景图片部分:

.fullscreen {  width: 100%;  height: 100vh;  padding: 40vh;}.a {  background: url('path/to/image.jpg') center/cover;}复制代码
See the Pen by yuweijie ( ) on .

创造完美适应的标题

你也许听过或使用过插件。可以使用此插件缩放标题,他们会占据父元素的宽度。正如上文提过,视口单位的值会基于视口尺寸改变。这就意味着如果你使用视口单位设置标题的font-size,会很完美适应屏幕。无论视口宽度什么时候改变,浏览器会恰当地缩放标题。所要做就是计算出就视口单位而言font-size初始值。

设置font-size主要问题是文本大小会基于视口改变。例如,font-size值为8vw,则屏幕宽度1200px时,font-size96px;宽度为400px,值为33px;宽度为1920px时,值为154px。这就会让文本太大或太小而无法阅读。可以阅读《》这篇文章,结合calc()函数,设置恰好的文本大小

See the Pen by yuweijie ( ) on .

居中元素

当想把元素放在屏幕中央时,可以使用视口单位。在知道元素高度情况下,设置margin头部和底部属性等于[(100-height)/2]vh

.centered {  width: 60vw;  height: 70vh;  margin: 15vh auto;}复制代码
See the Pen by yuweijie ( ) on .

注意事项

使用视口单位时,需要注意一些事情。

注意当使用视口单位设置元素宽度时,因为当根本元素的overflow属性设为auto时,浏览器会假设滚动条不存在,会造成元素宽度大于你所期待的。

举个例子

div {  height: 50vh;  width: 50vw;  float: left;}复制代码

正常情况下,你期待每个div元素占据屏幕的四分之一,然后每个元素宽度是基于没有滚动条下计算的。所以其宽度会大于。

See the Pen by yuweijie ( ) on .

解决办法是设置宽度为50%。结论是当设置块级元素宽度应使用百分数

同样问题也会发生在移动端,因为地址栏出现与否取决于用户是否在滚动。会导致视口高度改变,用户在看内容时会吓一跳。

浏览器支持

在数据显示,主要的浏览器都支持这些单位。然而,仍有一些bug和问题需要注意。例如,IE9支持vm而不是vmin,IE10+/Edge不支持vmax单位,同样当使用视口单位,

转载地址:http://ylfcl.baihongyu.com/

你可能感兴趣的文章
从0开始学java——JUnit4 复习,其实基本思想还是那些,不过采用了新的注释格式的语法...
查看>>
lintcode:Length of Last Word 最后一个单词的长度
查看>>
GNU M4 - GNU Project - 免费软件基金会(FSF)
查看>>
OCP-1Z0-051-名称解析-文章7称号
查看>>
keepalived双BACKUP加nopreempt失效、手动监控服务脚步。
查看>>
form表单回车提交问题,JS监听回车事件
查看>>
ubuntu12.04 修改登陆用户 为root
查看>>
silverlight开发实例(Prism+MVVM+RIA)(二)--创建shell及用户登录
查看>>
jsp中将后台传递过来的json格式的list数据绑定到下拉菜单select
查看>>
Project Euler 85 :Counting rectangles 数长方形
查看>>
MYSQL查询某字段中以逗号分隔的字符串的方法
查看>>
Excel设置下拉菜单并隐藏下拉菜单来源单元格内容
查看>>
Java8初体验(二)Stream语法详解
查看>>
微服务架构——不是免费的午餐
查看>>
基于HTML5的Web SCADA工控移动应用
查看>>
VS 2015相当不错的功能:C#交互窗口
查看>>
hive复杂类型与java类型的对应
查看>>
[Ubuntu] ubuntu10.04系统维护之Wine的安装
查看>>
iOS获取UIView上某点的颜色值
查看>>
cocos2d-x 3.0 android mk文件 之 自己主动遍历*.cpp文件
查看>>