CSS3中如何充分使用视窗单位来布局

容易忽略的七个CSS非常有用的单位 http://www.111cn.net/cssdiv/css/87284.htm

视窗(Viewport)单位已经有了好几年了,但我们并没有看到它被经常使用。它们现在正在被所有的主流浏览器所支持并提供独特的功能使它在特定情况下非常有用,特别是那些涉及响应式的设计。

介绍视窗(Viewport)单位

视窗(Viewport)是你的浏览器实际显示内容的区域——换句话说是你的不包括工具栏和按钮的网页浏览器。这些单位是vw,vh,vmin和vmax。它们都代表了浏览器(视窗(Viewport))尺寸的比例和窗口大小调整产生的规模改变。

比方说我们有一个1000px(宽)和800px(高)的视窗(Viewport)

    vw——代表视窗(Viewport)的宽度为1%,在我们的例子里50vw = 500px。
    vh——窗口高度的百分比 50vh = 400px。
    vmin——vmin的值是当前vw和vh中较小的值。在我们的例子里因为是横向模式,所以50vim = 400px。
    vmax——大尺寸的百分比。50vmax = 500px。

你可以在任何一个可以使用像素值的地方使用它们,比如width,height,margin,font-size等等。它们将通过窗口大小的调整或旋转设备的浏览器来重新计算这些值。

占用页面的整个高度

每一个前端开发人员都致力于这件事。你的第一直觉是这样做:

#elem{
    height: 100%;
}

然而,除非我们为html和body添加100%的高度,但只是这样还是不行的,因为这样的代码并不优雅而且很有可能会破坏你的设计的其余部分。使用vh就变得相当容易了,只需要为高度设置100vh,那它将永远都是你窗口的高度。

#elem{
    height: 100vh;
}

这似乎是一个完美的全屏图像的英雄,而且看起来非常时尚。

子元素大小根据浏览器改变而不是父元素

在某些情况下,你想要的是子元素的大小相对于窗口改变而不是父元素。同样的,按照前面的例子,这样是不行的:

#parent{
    width: 400px;
}
#child{
    /* This is equal to 100% of the parent width, not the whole page. */
    width: 100%;
}

如果我们用vw来设置子元素,那么它会简单的溢出并采取网页的全宽:

#parent{
    width: 400px;
}
#child{
    /* This is equal to 100% of page, regardless of the parent size. */
    width: 100vw;
}

响应字体大小

视窗(Viewport)单位也可以在文本中使用呢!在这个例子中我们使用vm设置字体大小来创建一行很棒的CSS响应式文字。拜拜Fittext!

响应垂直居中

通过设置元素的width,height和margin的视窗(Viewport)单位,你可以不使用任何其它技巧来设置居中。

这里有一个高度为60vh 上下外边距为20vh的矩形,它们加起来是100vh(60+2*20),使它即便调整窗口大小也可以始终居中。

#rectangle{
    width: 60vw;
    height: 60vh;
    margin: 20vh auto;
}

等宽列

你可以使用视窗(Viewport)单位来设置响应式网格。它们的行为类似于百分比但总是相对于视窗(Viewport)的大小。所以你可以将它们放在一个比窗口宽的父元素里,但它仍然有网格来保持其应有的宽度。这样来创建全屏滑块可谓得心应手。

这项技术需要元素用float:left来对齐彼此相邻的元素:

.column-2{
    float: left;
    width: 50vw;
}
.column-4{
    float: left;
    width: 25vw;
}
.column-8{
    float: left;
    width: 12.5vw;
}

总结

视窗(Viewport)单位有它的用途而且值得尝试。它们易于理解,而且在某些情况下对于代替CSS更加难的解决方案或不可能实现的技术有非常大的帮助。

时间: 2024-10-13 12:51:31

CSS3中如何充分使用视窗单位来布局的相关文章

css3中opacity属性学习与实践

css3中opacity属性是如何使用的呢:<length> inherit length:由浮点数字和单位标识符组成的长度值0到1.不可为负值.默认值为:1 . 此标签的作用是声明一个元素的透明度,opacity取值为1的元素是完全不透明的,反之,取值为0是完全透明的,看不见的.1到0之间的任何值都表示该元素的透明程度. 兼容:Firefox 3.0.10 .Chrome 2.0.x.Opera 9.64..Safari 4.Firefox 3.5 目前较老的Firefox版本,我们需要使用

css3中变形与动画(三)

transform可以实现矩阵变换,transition实现属性的平滑过渡,animation意思是动画,动漫,这个属性才和真正意义的一帧一帧的动画相关.本文就介绍animation属性. animation属性通过一些关键帧中元素属性的改变来实现动画效果.当然也可以控制动画持续时间,动画迭代次数等. 一.例子 在介绍transition时开篇有一个例子就是实现鼠标放上去,div宽度从100px缓慢增大到200px. 用transition实现方法如下 div:hover{ width: 200

解析CSS3中的Box-Sizing属性

在重构移动端页面的时候,我们经常会遇到两个框架并排的情况,并且需要宽度自适应.等宽,有边框这样的情况,我平时的方法就是用定位来处理,然后用负值定位来解决,但是后来发现可以用CSS3中的Box-Sizing属性来搞定.好吧,立马推荐出来给大伙. 语法: box-sizing: content-boxborder-boxinherit; 定义: box-sizing 属性允许您以特定的方式定义匹配某个区域的特定元素. 例如,假如您需要并排放置两个带边框的框,可通过将 box-sizing 设置为 "

CSS3中2D tansform各函数的使用技巧

文章简介:CSS3 2D变换让Web设计师有了更多的自由来装饰和变形HTML组件.同时让设计师有更多的功能装饰文本和更多动画选项来装饰Div元素.在CSS3 2D变形中主要包含的一些基本功能如下. 在一个二维或三维空间,元素可以被扭曲.移位或旋转.只不过2D变形工作在X轴和Y轴,也就是大家常说的水平轴和垂直轴:而3D变形工作在X轴和Y轴之外,还有一个Z轴.这些3D变换不仅可以定义元素的长度和宽度,还有深度.我们将首先讨论元素在2D平面如何变换,然后我们在进入3D变换的讨论. CSS3 2D变换让

网页多边框效果:CSS3中的box

文章简介:大家常见的应该是双线边框效果,使用页面部分元素具有层次的效果.在CSS2中依靠的是背景图片或者借助相邻两个元素的border来实现.而现在CSS3中的box-shadow可以直接在一个元素中完成. 多边框效果,大家常见的应该是双线边框效果,使用页面部分元素具有层次的效果.在CSS2中依靠的是背景图片或者借助相邻两个元素的border来实现.而现在CSS3中的box-shadow可以直接在一个元素中完成,我们来看一个简单的片段: <!-- HTML --> <div id=&qu

css3中的@font

文章简介:ICOFONT制作常用社交图标. icofont为何物?图标字体也.图标和字体怎能混为一谈呢?icofont就是用font-family来实现icon,主要用到了css3中的@font-face. 实现我们来熟悉一下@font-face这个属性. @font-face的语法规则: @font-face {   font-family: <YourWebFontName>;   src: <source> [<format>][,<source> [

CSS3中box

今天我们学习CSS3中box-shadow属性,首先感谢作者帕兰映像的无私奉献精神,box-shadow可以让我们打造阴影效果. firefox可能过其自身属性-moz-box-shadow.Safari和Chrome通过自身属性-webkit-box-shadow来实现下面的效果 css3中box-shadow属性的语法 box-shadow有六个可设值:box-shadow:阴影类型 X轴位移 Y轴位移 阴影大小 阴影扩展 阴影颜色,其相关属性:text-shadow,如果不调置阴影类型时,

css3中Border

从我开始学做网页的时候起,页面上用到的圆角都是头痛的事情,最初是用表格,三行三死,然后把圆角图片切成9块分别填充,呵呵,现在想起来无语. 后面网上又找了css圆角代码,1像素1像素的把圆角拼出来,这时候,我开始懒了,用了几次,当时就无语了. 如今,我更懒了,遇见圆角效果,就做成图片用CSS设置成背景,方便快捷. css3来了,这里有一项新的技术,圆角的效果让我们从此不再忧愁(别急!css3还未正式发布),现在就让我们先睹为快,了解下css3中这一强大的技术:border-radius吧. css

详解CSS3中使用gradient实现渐变效果的方法

  CSS3 Gradient分为linear-gradient(线性渐变)和radial-gradient(径向渐变). 线性渐变在Webkit下的应用 CSS Code复制内容到剪贴板 -webkit-linear-gradient( [ || ,]? , [, ]* )//最新发布书写语法 第一个参数表示渐变类型(type),可以是linear(线性渐变)或者radial(径向渐变). 第二个参数和第三个参数,都是一对值,分别表示渐变起点和终点.这对值可以用坐标形式表示,也可以用关键值表示