CSS即Cascading Style Sheets,中文译为层叠样式表。3表示其版本,那3和1,2有什么区别呢?前端
CSS3的新特征有不少,例如圆角效果、图形化边界、块阴影与文字阴影、使用RGBA实现透明效果、渐变效果、使用@Font-Face实现定制字体、多背景图、文字或图像的变形处理(旋转、缩放、倾斜、移动)、多栏布局、媒体查询等。web
CSS3对网页中的边框进行了一些改进,主要包括支持圆角边框、多层边框、边框色彩与图片等。在CSS3中最经常使用的一个改进就是圆角边框,经过CSS3的属性能够快速实现圆角定义,同时还能够根据实际状况针对特定角进行圆角定义。浏览器
/*圆角边框*/ div { border:2px solid; border-radius:25px; } /*图片边框*/ div { border-image:url(border.png) 30 30 round; -webkit-border-image:url(border.png) 30 30 round; /* Safari 5 and older */ -o-border-image:url(border.png) 30 30 round; /* Opera */ }
CSS3容许使用多个属性(好比background-image、background-repeat、background-size、background-position、background-origin和background-clip等)在一个元素上添加多层背景图片。该属性的应用大大改善了以往面对多层次设计须要多层布局的问题,帮助Web前端开发者在不借助Photoshop的状况下实现对页面背景的设计,简化了背景图片的维护成本。安全
/*多图背景*/ #example1 { background-image: url(img_flwr.gif), url(paper.gif); background-position: right bottom, left top; background-repeat: no-repeat, repeat; } /*或*/ #example1 { background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat; }
CSS3颜色模块的引入,实现了制做Web效果时再也不局限于RGB和十六进制两种模式。CSS3增长了HSL、HSLA、RGBA几种新的颜色模式。这几种颜色模式的提出,在作开发的时候不只能够设置元素的色彩,还能根据须要轻松地设定元素透明度。服务器
CSS3多列布局属性能够不使用多个div标签就能实现多列布局。CSS3中的多列布局模块描述了如何像报纸、杂志那样,把一个简单的区块拆成多列,并经过相应属性来实现列数、列宽、各列之间的空白间距。弹性盒模型布局方便了Web前端开发者根据复杂的前端分辨率进行弹性布局,轻松地实现页面中的某一区块在水平、垂直方向对齐,是进行响应式网站开发的一大利器布局
/*多列布局*/ .newspaper{ column-count:3; column-gap:40px; column-rule-style:outset; column-rule-color:#ff0000; column-rule-width: 1px; } h2{ column-span:all; } /*弹性盒子*/ <style> .flex-container { display: flex; justify-content: center; width: 400px; height: 250px; background-color: lightgrey; } .flex-item { background-color: cornflowerblue; width: 100px; height: 100px; margin: 10px; } </style> <div class="flex-container"> <div class="flex-item">flex item 1</div> <div class="flex-item">flex item 2</div> <div class="flex-item">flex item 3</div> </div>
在CSS2.1中,想让某个元素变形必需要借助JavaScript写大量的代码实现,在CSS3中加入了变形属性,该属性在2D或3D空间里操做盒子的位置和形状,来实现例如旋转、扭曲、缩放或者移位。变形属性的出现,使Web前端中的元素展现不单单局限在二维空间,Web前端开发者能够经过旋转、扭曲、缩放或者移位等操做实现元素在三维控件上的展现。经过变形元素,web前端中的内容展现更加形象、真实。性能
/*2D转换*/ /*移动*/ div{ transform: translate(50px,100px); } /*旋转*/ div{ transform: rotate(30deg); } /*改变宽高*/ div{ transform: scale(2,3); } /*倾斜*/ div{ transform: skew(30deg,20deg); } /*使用六个值的矩阵实现转换*/ div{ transform: matrix(0.866,0.5,-0.5,0.866,0,0); } /*3D转换*/ /*围绕X轴旋转*/ div { transform:rotateX(120deg); } /*围绕Y轴旋转*/ div { transform:rotateY(130deg); } /*围绕Z轴旋转*/ div { transform:rotateZ(140deg); } /*围绕Z轴旋转*/ div { transform:rotateZ(140deg); } /*改变被转换元素的位置*/ #div2 { transform: rotate(45deg); transform-origin:20% 40%; } /*让转换的子元素保留3D转换*/ <style> #div1 { padding:50px; position: absolute; border: 1px solid black; background-color: red; transform: rotateY(60deg); transform-style: preserve-3d; } #div2{ padding:40px; position: absolute; border: 1px solid black; background-color: yellow; ransform: rotateY(-60deg); } </style> <div id="div1">HELLO <div id="div2">YELLOW</div> </div> /*透视效果及规定其底部位置*/ div{ perspective:150; perspective-origin: 10% 10%; } /*定义元素在不面对屏幕时是否可见*/ div{ backface-visibility:hidden;/*可见为visible*/ }
CSS3的“过渡”(transition)属性经过设定某种元素在某段时间内的变化实现一些简单的动画效果,让某些效果变得更加具备流线性与平滑性。CSS3的“动画”(animation)属性可以实现更复杂的样式变化以及一些交互效果,而不须要使用任何Flash或JavaScript脚本代码。过渡与动画的出现,使CSS在Web前端开发中再也不仅仅局限于简单的静态内容展现,而是经过简单的方法使页面元素动了起来,实现了元素从静到动的变化。字体
/*过渡*/ div{ transition-property: width; transition-duration: 1s; transition-timing-function: linear; transition-delay: 2s; } /*或*/ div { transition: width 1s linear 2s; } /*动画*/ div{ width:100px; height:100px; background:red; animation:myfirst 5s; } @keyframes myfirst{ 0% {background:red;} 25% {background:yellow;} 50% {background:blue;} 100% {background:green;} }
CSS3中引入了@font-face,@font-face是连接服务器字体的一种方式,这些嵌入的字体能变成浏览器的安全字体,开发人员不用再担忧用户没有这些字体而致使网页在用户浏览器没法正常显示的问题。flex
/*引入字体*/ @font-face{ font-family: myFirstFont; src: url(sansation_light.woff); } div{ font-family:myFirstFont; }
CSS3中引入媒体查询(mediaqueries),可为不一样分辨率的设备定义不一样的样式。好比,在可视区域小于480像素时,可能想让原来在右侧的网站侧栏显示在主内容的下边,以往必须经过JavaScript判断用户浏览器的分辨率,而后再经过JavaScript修改CSS。CSS3中只须要经过媒体查询就可实现上述操做 。动画
/*媒体查询断定屏幕可视窗口尺寸*/ body { background-color: pink; } @media screen and (min-width: 480px) { body { background-color: lightgreen; } }
阴影主要分为两种:文本阴影(text-shadow)和盒子阴影(box-shadow)。文本阴影在CSS2中已经存在,但没有获得普遍的运用(CSS2.1中删除了)。CSS3延续了这个特性,并进行了新的定义,该属性提供了一种新的跨浏览器解决方案,使文本看起来更加醒目。CSS3中的盒子阴影的引入,可轻易地为任何元素添加盒子阴影。
/*文本阴影*/ h1{ text-shadow: 5px 5px 5px #FF0000; } /*盒子阴影*/ div{ box-shadow: 10px 10px 5px #888888; }