在 Web 开发中采用 CSS3 技术将会显著的美化我们的应用程序,提高用户体验,同时也能极大的提高程序的性能。本文将重点介绍一些比较绚丽且实用 CSS3 新特性。
border-radius:5px 4px 3px 2px;/*四个值分别代表左上角,右上角,右下角,左下角,顺时针*/
例子:
<style>
ul {
margin: 0;
padding: 0;
}
li {
list-style: none;
margin: 10px 0 0 10px;
width: 200px;
height: 200px;
float: left;
background: #bbb;
}
h2 {
clear: left;
}
.test .one {
border-radius: 20px;
}
.test .two {
border-radius: 20px 40px;
}
.test .three {
border-radius: 20px 40px 60px;
}
.test .four {
border-radius: 20px 40px 60px 80px;
}
.test2 .one {
border-radius: 20px/10px;
}
.test2 .two {
border-radius: 20px 40px/10px 20px;
}
.test2 .three {
border-radius: 20px 40px 60px/10px 20px 30px;
}
.test2 .four {
border-radius: 20px 40px 60px 80px/10px 20px 30px 40px;
}
</style>
</head>
<body>
<h2>水平与垂直半径相同时:</h2>
<ul class="test">
<li class="one">提供1个参数<br>border-radius:20px;</li>
<li class="two">提供2个参数<br>border-radius:20px 40px;</li>
<li class="three">提供3个参数<br>border-radius:20px 40px 60px;</li>
<li class="four">提供4个参数<br>border-radius:20px 40px 60px 80px;</li>
</ul>
<h2>水平与垂直半径不同时:</h2>
<ul class="test2">
<li class="one">提供1个参数<br>border-radius:20px/10px;</li>
<li class="two">提供2个参数<br>border-radius:20px 40px/10px 20px;</li>
<li class="three">提供3个参数<br>border-radius:20px 40px 60px/10px 20px 30px;</li>
<li class="four">提供4个参数<br>border-radius:20px 40px 60px 80px/10px 20px 30px 40px;</li>
</ul>
</body>
box-shadow:X轴偏移量 Y轴偏移量 [阴影模糊半径] [阴影扩展半径] [阴影颜色] [投影方式];
值描述:
.box-shadow{
box-shadow:4px 2px 6px #333333;
}
为元素设置内阴影:
.box-shadow{
box-shadow:4px 2px 6px #333333 inset;
}
为元素添加多个阴影(只需用逗号隔开即可):
.box-shadow{
box-shadow:4px 2px 6px #f00,-4px -2px px #000,0px 0px 12px 5px #33cc00 inset;
}
可以把border-image理解为就是一个切片工具,会自动把用做边框的图片切割。
border-image 属性是五个 border-image-* 属性的简写,其语法格式如下:
border-image:border-image-source [border-image-slice] [border-image-width] [border-image-outset] [border-image-repeat];
border-image:url(border.png) 70 70 70 70 repeat;
color:rgba(R,G,B,A)
以上R,G,B三个参数,正整数的取值范围为:0-255。百分数值的取值范围为0.0%-100%。A为透明度参数,取值在0-1之间,不可为负值。
background-color:rgba(255,255,255,0.5);/*透明度为0.5的白色*/
线性渐变指的是颜色沿一条直线进行渐变(例如右上到下,从左到右等),要创建线性渐变,至少需要定义两个色标(色标指的是想要平滑过渡的颜色),若要创建更加复杂的渐变效果,则需要定义更多的色标。创建线性渐变的基本语法如下:
liner-gradient(to bottom,#fff,#999)/*to bottom渐变方向,后面两个参数表示颜色的起始点和结束点*/
第一个参数为渐变方向,可以用角度的关键词或英文来表示:
角度 | 英文 | 作用 |
---|---|---|
0deg | to top | 从下向上 |
90deg | to right | 从左向右 |
180deg | to bottom | 从上向下 |
270deg | to left | 从右向左 |
to top left | 从右下角到左上角 | |
to top right | 从左下角到右上角 |
第二个和第三个参数,表示颜色的起始点和结束点,可以有多个颜色值。
background: liner-gradient(to left,red,orange,yellow,green,blue,indigo,violet);
径向渐变与线性渐变类型,不同之处在于径向渐变是由中心向外延申的渐变,可以指定中心点的位置,也可以设置渐变的形状。定义径向渐变的基本语法如下所示:
radial-gradient(shape size at position, color-stop1, color-stop2, ...);
参数说明如下:
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 210px;
height: 100px;
float: left;
margin: 10px;
border: 1px solid black;
}
.one {
background: radial-gradient(circle at 50%, red, yellow, lime);
}
.two {
background: radial-gradient(ellipse 100px 30px at 30%, red, yellow, lime);
}
.three {
background: radial-gradient(circle 100px at 50%, red 10%, yellow 50%, lime 100px);
}
.four {
background: radial-gradient(circle closest-corner at 50px 30px, red, yellow, lime);
}
</style>
</head>
<body>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
<div class="four"></div>
</body>
</html>
圆锥渐变类似于径向渐变,两者都有一个中心点作为色标的源点,不同的是圆锥渐变是围绕中心点旋转(而不是从中心点向往辐射),定义圆锥渐变的基本语法如下:
conic-gradient(from angle at position, start-color, ..., last-color);
语法说明如下:
【示例】使用 conic-gradient() 定义圆锥渐变:
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 210px;
height: 100px;
float: left;
margin: 10px;
border: 1px solid black;
}
.one {
background: conic-gradient(at 50%, red, orange, yellow, green, blue, indigo, violet, red);
}
.two {
background: conic-gradient(red 0deg 30deg, orange 30deg 50deg, yellow 50deg 200deg, green 200deg 300deg, blue 300deg 360deg);
}
.three {
background: conic-gradient(from 90deg, red 0% 55%, yellow 55% 90%, lime 90% 100%);
}
.four {
background: conic-gradient(#fff 0.25turn, #000 0.25turn 0.5turn, #fff 0.5turn 0.75turn, #000 0.75turn);
}
</style>
</head>
<body>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
<div class="four"></div>
</body>
</html>
在 CSS 中,您还可以使用 repeating-linear-gradient()、repeating-radial-gradient() 和 repeating-conic-gradient() 等函数来分别创建线性渐变、径向渐变和圆锥渐变的重复渐变,所谓重复渐变就是指将渐变的过程重复多次,以铺满整个元素。
提示: repeating-linear-gradient()、repeating-radial-gradient() 和 repeating-conic-gradient() 函数的语法分别与 linear-gradient()、radial-gradient() 和 conic-gradient() 函数的语法相同。
【示例】使用 repeating-linear-gradient()、repeating-radial-gradient() 和 repeating-conic-gradient() 三个函数定义重复渐变:
<!DOCTYPE html>
<html>
<head>
<style>
div {
width: 210px;
height: 100px;
float: left;
margin: 10px;
border: 1px solid black;
}
.one {
background: repeating-linear-gradient(190deg, #000 0px 10px, #FFF 10px 20px);
}
.two {
background: repeating-radial-gradient(circle 100px at 50%, red 0% 10%, yellow 10% 30%, lime 30% 40%);
}
.three {
background: repeating-conic-gradient(#69f 0 36deg, #fd44ff 36deg 72deg);
}
.four {
background: conic-gradient(#fff 0.25turn, #000 0.25turn 0.5turn, #fff 0.5turn 0.75turn, #000 0.75turn) top left / 25% 25% repeat;
}
</style>
</head>
<body>
<div class="one"></div>
<div class="two"></div>
<div class="three"></div>
<div class="four"></div>
</body>
</html>
text-overflow用来设置是否使用一个省略标记(……)表示对象内文本的溢出。
text-overflow:clip(表示剪切) | ellipsis(表示显示省略标记);
但是text-overflow只是用来说明文字溢出时用什么方式显示,要实现溢出时产生省略号的效果,还须其他条件:
text-overflow:ellipsis;
overflow:hidden;
white-space:nowrap;
word-wrap用来设置文本行为,当前行超过指定容器的边界时是否断开转行
word-wrap:normal |break-word;
@font-face能够加载服务器端的字体文件,让浏览器端可以显示用户电脑里没有安装的字体。
@font-face{
font-family:"字体名称";
src:url("字体文件在服务器上的相对或绝对路径");
}
这样设置之后,就可以像使用普通字体一样在(font-*)中设置字体样式。比如:
p{
font-size:12px;
font-family:"my font";/*必须项,设置@font-face中font-family同样的值*/
}
text-shadow用来设置文本的阴影效果。
text-shadow:X-offset Y-offset blur color;
值描述
text-shadow:0 1px 1px #fff;
text-shadow:0 1px 1px #fff, 0 0 25px blue, 0 0 5px darkblue;
让所有的div元素的文本更宽:
div { font-stretch: expanded; }
目前没有主流浏览器支持font-Stretch属性。
值说明:
通过指定font-size-adjust属性,浏览器将调整字体大小,无论字体系列("宋体"性质值0.58):
div{ font-size-adjust: 0.58;}
目前只有Firefox支持 font-size-adjust 属性.
值描述:
background-origin设置元素背景图片的原始起始位置。
background-origin:border-box |padding-box|content-box;
值描述
background-clip用来将背景图片做适当的剪裁以适应实际需要。
background-clip:border-box | padding-box | content-box |no-clip;
值描述
background-size设置背景图片的大小,以长度或百分比显示,还可以通过cover和contain来对图片进行伸缩。
background-size:auto|<长度值>|<百分比>|cover|contain
值描述
旋转rotate()函数通过指定的角度参数使元素相对原点进行旋转。角度值为正值,顺时针旋转角度值为负值,逆时针旋转
.wrapper {
width: 200px;
height: 200px;
border:1px dotted red;
margin:100px auto;
}
.wrapper div {
width: 200px;
height: 200px;
background: orange;
-webkit-transform:rotate(45deg);
transform:rotate(45deg);
}
<div class="wrapper">
<div>旋转 rotate()</div>
</div>
scale()函数让元素根据中心原点对对象进行缩放。scale(X,Y)使元素水平方向和垂直方向同时缩放scaleX(x)scaleY(y)
.wrapper{
width: 200px;
height: 200px;
border:1px dashed red;
margin:100px auto;
}
.wrapper div{
width: 200px;
height: 200px;
line-height:200px;
background: orange;
text-align:center;
color:#fff;
}
.wrapper div:hover{
opacity:.5;
transform:scale(1.5);
-webkit-transform:scale(1.5);
-moz-transform:scale(1.5);
}
<div class="wrapper">
<div>我将放大1.5倍</div>
</div>
它主要应用在文本的多列布局方面,这种布局在报纸和杂志上都使用了几十年了,但要在Web页面上实现这样的效果还是有相当大的难度,庆幸的是,CSS3的多列布局可以轻松实现。接下来咱们一起学习多列布局相关的知识。
columns:<column-width> || <column-count>
值描述:
columns: 200px 2;
需要注意的是,目前所有主流浏览器其该属性都支持,只是仍需加浏览器私有前缀,如-moz,-webkit,-ms,-o等。
column-width的使用和CSS中的width属性一样,不过不同的是,column-width属性在定义元素列宽的时候,既可以单独使用,也可以和多列属性中其他属性配合使用。其基本语法如下所示 ;
column-width: auto | <length>1
值描述
-webkit-column-width:200px;
-moz-column-width:200px;
-o-column-width:200px;
-ms-column-width:200px; column-width:200px;
column-count属性主要用来给元素指定想要的列数和允许的最大列数。其语法规则:
column-count:auto | <integer>1
值描述
-webkit-column-count:4; -moz-column-count:4;
-o-column-count:4; -ms-column-count:4; column-count:4;
column-gap主要用来设置列与列之间的间距,其语法规则如下:
column-gap: normal || <length>
值描述
column-count: 3;
column-gap: 2em;
column-rule主要是用来定义列与列之间的边框宽度、边框样式和边框颜色。简单点说,就有点类似于常用的border属性。但column-rule是不占用任何空间位置的,在列与列之间改变其宽度不会改变任何列的位置。
column-rule:<column-rule-width>|<column-rule-style>|<column-rule-color>1
值描述
column-rule: 2px dotted green;
column-span主要用来定义一个分列元素中的子元素能跨列多少。column-width、column-count等属性能让一元素分成多列,不管里面元素如何排放顺序,他们都是从左向右的放置内容,但有时我们需要基中一段内容或一个标题不进行分列,也就是横跨所有列,此时column-span就可以轻松实现,此属性的语法如下。
column-span: none | all
值描述
column-span:all;
在CSS3中新增加了box-sizing属性,能够事先定义盒模型的尺寸解析方式,其语法规则如下:
box-sizing: content-box | border-box | inherit
Flex 布局教程:语法篇
box-decoration-break 属性规定当元素框被分段时,如何应用元素的 background、padding、border、border-image、box-shadow、margin 以及 clip-path。
box-decoration-break: slice|clone|initial|inherit|unset;
属性值:
object-fit 属性指定元素的内容应该如何去适应指定容器的高度与宽度。
object-fit 一般用于 img 和 video 标签,一般可以对这些元素进行保留原始比例的剪切、缩放或者直接进行拉伸等。
您可以通过使用 object-position 属性来切换被替换元素的内容对象在元素框内的对齐方式。
img.a {
width: 200px; height: 400px; object-fit: cover;
}
属性值
根据容器大小重置图片的大小,并设置图片的位置:
img.a {
width: 200px; height: 400px; object-fit: none; object-position: 5px 10%; border: 5px solid red;
}
object-position 属性一般与 object-fit一起使用,用来设置元素的位置。
object-position 一般用于 img 和 video 标签。
object-position: 50% 50%;
object-position: right top;
object-position: left bottom;
object-position: 250px 125px;
设置元素被查看位置的视图:
div {
perspective: 500; -webkit-perspective: 500; /* Safari 和 Chrome */
}
perspective 属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。
当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。
注释:perspective 属性只影响 3D 转换元素。
提示:请与 perspective-origin 属性一同使用该属性,这样您就能够改变 3D 元素的底部位置。
perspective: number|none;
设置一个3D元素的基数位置:
div {
perspective:150; perspective-origin: 10% 10%;
-webkit-perspective:150; /* Safari and Chrome */
-webkit-perspective-origin: 10% 10%; /* Safari and Chrome */
}
perspective-origin 属性定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置。
定义时的perspective -Origin属性,它是一个元素的子元素,透视图,而不是元素本身。
语法:
perspective-origin: x-axis y-axis;
pointer-events:字面理解是点击鼠标事件,值分别是auto和none。
当使用pointer-events:none,表示它将捕获不到任何点击,而只是让事件穿透到它的下面
pointer-events: auto|none;
属性值:
规定可以由用户调整 div 元素的大小:
div {
resize:both; overflow:auto;
}
resize 属性规定是否可由用户调整元素的尺寸。
注释:如果希望此属性生效,需要设置元素的 overflow 属性,值可以是 auto、hidden 或 scroll。