CSS3 的视口单位vw、vh实现自适应(带有px,em,rem的简单介绍)

摘要:
例如,如果窗口宽度为1800px,则1vw=18px。Vh是可视窗口的高度。因此,我们可以在根元素上设置vw和vh,然后限制根元素上的最大和最小值,然后结合主体设置最大和最小宽度。

一、px,em,rem,vw的简单介绍
1、px
px其实就是像素的意思,全称pixel,也就是图像的基本采样单位。对于不同的设备,它的图像基本单位是不同的,比如显示器和打印机。而我们通常所说的显示器分辨率是指桌面设定的分辨率,不是显示器的物理分辨率,但是现在我们的桌面分辨率和物理分辨率几乎是一致的,因为这样显示效果最佳。所以总的来说px就是对应我们显示器的分辨率。这样就会有个问题就是如果使用px的话我们就要根据不同电脑的分辨率来做自适应,有点麻烦。

2、em
em是相对长度单位。相对于当前对象内本文的字体尺寸(如果没有设置本文尺寸,那就是相对于浏览器默认的字体尺寸,也就是16px),这样计算的话。如果没有设置字体尺寸就是1em = 16px。如果使用em的话,有个好的建议,就是将body的font-size设置成62.5%,也就是16px * 62.5% = 10px。这样的话1em = 10px,方便我们计算。

3、rem
rem和em一样也是相对长度单位,但是不一样的是rem始终都是相对html根元素。这样有个很大的有点就是使用rem后不会受到对象内文本字体尺寸的影响,而且只需要改变根元素就能改变所有的字体大小。兼容性也是不错的,IE8以上版本和其他浏览器都已经支持,是个做响应式页面的好选择

4、重点:vw和vh
vw和vh是视口(viewport units)单位,何谓视口,就是根据你浏览器窗口的大小的单位,不受显示器分辨率的影响,是不是很神奇,这就代表了,我们不需要顾虑到现在那么多不同电脑有关分辨率的自适应问题。

vw是可视窗口的宽度单位,和百分比有点一样,1vw = 可视窗口的宽度的百分之一。比如窗口宽度大小是1800px,那么1vw = 18px。和百分比不一样的是,vw始终相对于可视窗口的宽度,而百分比和其父元素的宽度有关。

vh就是可视窗口的高度了。

这边顺便提一下vmin和vmax,vmin是指选择vw和vh中最小的那个,而vmax是选择最大的那个

兼容性方面是vw和vh的短板了,如下图所示,使用vw和vh所需求的版本还是较高的
CSS3 的视口单位vw、vh实现自适应(带有px,em,rem的简单介绍)第1张

二、使用vw,vh能做什么

1、响应式页面轻松搞定

由于vw,vh的特性,他们能够根据窗口大小来自动调节字体大小,这就能很轻松地完成响应式页面的布局

2、小技巧之响应垂直居中

可以使用vw,vh来实现在页面中响应垂直居中,只需要以下代码

#box { 
   50vw; 
  height: 50vh; 
  margin: 25vh auto; 
}

只要设置margin的上下间距,使之heigit + margin-top +margin-bottom = 100 ,width + margin-left + margin-right = 100 ,就能够响应垂直居中

3、模仿bootstrap的栅栏布局

了解过bootstrap的都知道它的栅栏布局,而使用vw,vh就能够轻松实现。

.col-2 { 
  float: left; 
   50vw; 
} 
.col-4 { 
  float: left; 
   25vw; 
} 
.col-5 { 
  float: left; 
   20vw; 
} 
.col-8 { 
  float: left; 
   12.5vw; 
}

上面是column实例只要在一行中所有的列加起来等于100vw就实现响应式布局

总结:
个人认为视口单位是个用来做响应式布局很不错的单位,当然如果要使用vw,vh,我的建议是rem结合vw来开发,因为视口单位有个缺点就是它没有最小或者最大限制,这就达不到我们都时候所希望的一个限制(比如窗口太小了,字都看不清)。所以我们可以在根元素上设置vw和vh,然后在根元素上限制最大最小值,然后配合body设置最大最小宽度。


原文链接:https://blog.csdn.net/sjw1039115768/article/details/80460777

免责声明:文章转载自《CSS3 的视口单位vw、vh实现自适应(带有px,em,rem的简单介绍)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JDBC高级特性(一)结果集,批量更新C# winform timer 控件倒计时下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

小波变换教程(四)

译文转:https://blog.csdn.net/alihouzi/article/details/45190303 原文转:http://users.rowan.edu/~polikar/WTpart1.html 五、终极解决方案:小波变换         小波变换是这样一种变换:它提供了信号的时频表示(还有一些变换可以提供这些信息,如短时傅立叶变化...

css实现左(右)侧固定宽度,右(左)侧宽度自适应 ---清除浮动

老话长谈,css的不固定适应布局   不管是面试还是在平时的工作中,这样的布局形式一直都在用着,很常见,所以今天我就拿出来在唠叨一下, 既是给自己一个备忘存储,也是一个学习巩固的参考,知道大家都会,还是要记忆一下,不为其他,就为打好基础。 话说太多, 直接上代码,一看就能明白。 也许你会不屑一顾的说简单,可是我就喜欢写一些。。。。。。作为一个菜鸟,就要从基...

CSS伪元素before和after

今天发现很多国外的网站和框架设计都用到了before和after,之前使用的比较少,今天试了下觉得还是很有意思的~ 说明 1. :before 和 :after将在内容元素的前后插入额外的元素;:before将会在内容之前“添加”一个元素而:after将会在内容后“添加”一个元素。在它们之中添加内容我们可以使用content属性。 2. :before 和...

怎样为virtualbox添加新的分辨率

virtualbox是个相当NB的开源跨平台虚拟机软件,只是新创建的虚拟机仅仅支持几种分辨率。比如。安装win8.1,仅仅有例如以下图的几种分辨率。 只是我的显示器是5K哦,这么点分辨率,简直是搞笑。可惜,virtualbox的GUI并没有提供加入分辨率的功能,只是却提供了命令行工具来加入不论什么大小的分辨率。比如,要加入一个2560*1440的分辨率...

OCR5:预处理

 Tesseract4.X已经有了初步成效(见下面的对比), 但目前结果对于训练之外的数据, 仍会有很大的偏差。想要更好的 OCR 结果, README 中重点强调的一点是: 在交给 Tesseract 之前, 改进图像的质量. 图像质量 Tesseract 处理 300 dpi 以上的图片会更加出色, 所以要对图片的大小有起码的要求. 分辨率和 poi...

分离Webpack开发环境与生产环境的配置

这是Webpack+React系列配置过程记录的第五篇。其他内容请参考: 第一篇:使用webpack、babel、react、antdesign配置单页面应用开发环境 第二篇:使用react-router实现单页面应用路由 第三篇:优化单页面开发环境:webpack与react的运行时打包与热更新 第四篇:React配合Webpack实现代码分割与异步加...