您现在的位置是:网站首页> 编程资料编程资料
详解CSS中视窗单位和百分比单位的使用分享7个你可能不认识的CSS单位
2021-09-05
1125人已围观
简介 这篇文章主要介绍了详解CSS中视窗单位和百分比单位的使用,是CSS入门学习中的基础知识,需要的朋友可以参考下
视窗(Viewport)单位
视窗(Viewport)单位是相对单位,意味着它们没有客观的尺寸。它们的大小是由视窗(Viewport)大小决定的。下面是四个与视窗(Viewport)有关的单位。
我将集中讨论前两个单位,因为它们更可能被使用。
在很多情况下,视口单位(vh和vw)和百分比单位在它们可以实现的功能方面是重叠的。然而,它们每个都有其明显的优点和缺点。概括的说:
当处理宽度的时候,%单位更合适。处理高度的时候,vh单位更好。
占满宽度的元素: % > vw
正如我所提到的,vw单位根据视窗的宽度决定它的大小。然而,浏览器是根据浏览器的窗口计算视窗大小的,包括了滚动条的空间。
如果页面延伸超过视口的高度——滚动条出现——视窗的宽度将会大于html元素的宽度。
Viewport > html > body
因此,如果你将一个元素设置为100vw,这个元素将会延伸到html和body元素范围之外。在这个例子中,我用红色边框包裹html元素,然后给section元素设置背景颜色。
因为这个细微的差别,当使一个元素横跨整个页面的宽度时,最好使用百分比单位而不是视口的宽度。
占满高度的元素:vh > %
在另一方面,当使一个元素跨越整个页面的高度时,vh远比百分比单位好。
因为用百分比定义的元素的大小是由它的父元素决定的,只有父元素也填满整个屏幕的高度时我们才能拥有一个填满整个屏幕的高度的元素。这通常意味着我们不得不把元素定位成固定的,为了使元素的父元素为html元素,或者依赖一些程序。
然而,用vh的话,就像下面写的那么简单:
- .example {
- height: 100vh;
- }
不管.example元素如何嵌套,它还是能够相对于视窗尺寸设置大小。滚动条的问题也不是一个问题,因为现在大多数页面通常不会有水平滚动条。
这里有一些我们可以如何使用vh单位来轻松的创造一些设计的例子。
全屏的背景图片
vh单位一个典型的用途是用来创建一个横跨整个屏幕高度和宽度的背景图片,不管设备的大小。这用vh很容易实现:
- .bg {
- position: relative;
- background: url('bg.jpg') center/cover;
- width: 100%;
- height: 100vh;
- }
占满全屏的内容块像“多页面”一样
同样地,我们也可以实现有“多页面”的效果,通过使页面的每个内容块跨越视口的整个高度和宽度。
- section {
- width: 100%;
- height: 100vh;
- }
我们可以用javascript来实现翻动页面的错觉。
- $('nav').on('click', function() {
- if ( $(this).hasClass('down') ) {
- var movePos = $(window).scrollTop() + $(window).height();
- }
- if ( $(this).hasClass('up') ) {
- var movePos = $(window).scrollTop() - $(window).height();
- }
- $('html, body').animate({
- scrollTop: movePos
- }, 1000);
- })
在区域内的图片
vh单位也可以用来控制在页面内的图片的大小。例如,在一篇文章中,我们可能想要任何的图片可以在页面上被完整的查看,不过屏幕的大小为多少。
做到这一点,我们可以这样解决:
- img {
- width: auto; /* 图片宽度根据高度按比例调整*/
- max-width: 100%; /* 图片不超过父元素的宽度 */
- max-height: 90vh; /* 图片不超过视口的高度 */
- margin: 2rem auto;
- }
浏览器的支持情况
因为这些单位相对较新,一些浏览器中使用仍有一些问题。这里就是如何解决这些问题 ——
相关内容
- CSS中的下划线text-decoration属性使用进阶解决Dreamweaver中关于应用CSS的小问题详解CSS 文字装饰 text-decoration & text-emphasis
- 浅谈CSS响应式图片运用中的srcset属性
- CSS中的层分离编程详解CSS中下拉菜单和表单以及弹出层的简单笔记CSS层透明实现方法css实现鼠标悬停时滑出层提示的方法
- 全方位了解CSS3的Regions扩展css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- 让Div实现水平或垂直居中的相关方法不定宽高的文字在div中垂直居中实现方法关于div中img,span垂直居中的问题div中内容上下居中小结css中position:fixed实现div在窗口上下左右居中css中position:fixed实现div居中上下左右居中DIV+CSS中让布局、背景图片、文字内容居中的方法IE9下DIV本来应该居中的结果显示为居左DIV+CSS垂直居中一个浮动元素CSS实现DIV居中的三种方法
- Visual Foxpro 6.0 中文版安装向导(图解)Visual Foxpro 6.0(VFP6.0)程序设计教程 word版Visual FoxPro 6.0 中文版程序员指南 WDL版Visual Foxpro 6.0(vfp6.0开发运行环境) 简体中文版(64M)Visual Foxpro 6.0 中文版安装图文教程Visual Foxpro 6.0 教程 基础入门 Visual FoxPro v6.0 绿色特别精简版
- 实例讲解使用CSS实现多边框和透明边框的方法利用SVG和CSS3来实现一个炫酷的边框动画使用CSS去掉超链接的虚线边框的方法纯CSS3实现的图片阴影边框特效源码
- 使用CSS修改HTML的checkbox效果的小示例分享使用CSS3和Checkbox实现JQuery的一些效果9款样式迷人的CSS3自定义Checkbox复选框特效源码一款纯css3实现简单的checkbox复选框和radio单选框
- CSS中的zoom属性和scale属性的用法及区别详解CSS中zoom属性或overflow:auto属性清除浮动的作用IE浏览器专有css属性之zoom详解CSS中不为人知Zoom属性的使用介绍(IE私有属性)css中zoom:1属性的定义和作用
- CSS的animation属性使用实例讲解CSS3中Animation属性的使用详解深入探究CSS中Animations和Transitions的工作原理CSS3的transition和animation的用法实例介绍