css3 基础
- background-size 背景属性
- 以像素或者百分比来规定背景图片的尺寸
div { background:url(bg_flower.gif); -moz-background-size:63px 100px; /* 老版本的 Firefox */ background-size:63px 100px; //宽为63px 高为100px background-repeat:no-repeat; }
对背景图片进行拉升,填充背景区域
div { background:url(bg_flower.gif); -moz-background-size:40% 100%; /* 老版本的 Firefox */ background-size:40% 100%; background-repeat:no-repeat; }
background-origin:content-box,padding-box,border-box 规定背景图片的定位区域
div { background:url(bg_flower.gif); background-repeat:no-repeat; background-size:100% 100%; -webkit-background-origin:content-box; /* Safari */ background-origin:content-box; }
background-clip 规定背景的绘制区域,cotent-box,padding-box,border-boxs
- text-shadow 设置文本阴影,参数分别为:水平阴影,垂直阴影,模糊距离,阴影颜色
h1 { text-shadow: 5px 5px 5px #FF0000; }
word-wrap:属性运行长单词换到下一行,参数有normal、break-word
<!DOCTYPE html> <html> <head> <style> p.test { width:11em; border:1px solid #000000; word-wrap:break-word; } </style> </head> <body> <p class="test">This paragraph contains a very long word: thisisaveryveryveryveryveryverylongword. The long word will break and wrap to the next line.</p> </body> </html>
@font-face 首先定义字体的名称(myFirstFont) 然后指向该字体文件,改属性可以把文件字体放到服务器直接引用就行
<!DOCTYPE html> <html> <head> <style> @font-face { font-family: myFirstFont; src: url('/example/css3/Sansation_Light.ttf') ,url('/example/css3/Sansation_Light.eot'); /* IE9+ */ } @font-face { font-family: myFirstFont; src: url('/example/css3/Sansation_Bold.ttf') ,url('/example/css3/Sansation_Bold.eot'); /* IE9+ */ font-weight:bold; } div { font-family:myFirstFont; } </style> </head> <body> <div> With CSS3, websites can <b>finally</b> use fonts other than the pre-selected "web-safe" fonts. </div> <p><b>注释:</b>Internet Explorer 9+ 支持新的 @font-face 规则。Internet Explorer 8 以及更早的版本不支持新的 @font-face 规则。</p> </body> </html>
transform 使用2d 或者 3d 转换来转换参数。属性包括:translate(),rotate(),scale(),skew(),matrix(),所有参数都可以带上X,Y
translate(50px,100px) 把元素从左侧移动 50 像素,从顶端移动 100 像素。
-
div { transform: translate(50px,100px); -ms-transform: translate(50px,100px); /* IE 9 */ -webkit-transform: translate(50px,100px); /* Safari and Chrome */ -o-transform: translate(50px,100px); /* Opera */ -moz-transform: translate(50px,100px); /* Firefox */ }
rotate(30deg) 把元素顺时针旋转 30 度。
div { transform: rotate(30deg); -ms-transform: rotate(30deg); /* IE 9 */ -webkit-transform: rotate(30deg); /* Safari and Chrome */ -o-transform: rotate(30deg); /* Opera */ -moz-transform: rotate(30deg); /* Firefox */ }
scale(2,4) 把宽度转换为原始尺寸的 2 倍,把高度转换为原始高度的 4 倍
div { transform: scale(2,4); -ms-transform: scale(2,4); /* IE 9 */ -webkit-transform: scale(2,4); /* Safari 和 Chrome */ -o-transform: scale(2,4); /* Opera */ -moz-transform: scale(2,4); /* Firefox */ }
skew(30deg,20deg)围绕X轴把元素翻转30度,围绕Y轴把元素翻转20度
-
div { transform: skew(30deg,20deg); -ms-transform: skew(30deg,20deg); /* IE 9 */ -webkit-transform: skew(30deg,20deg); /* Safari and Chrome */ -o-transform: skew(30deg,20deg); /* Opera */ -moz-transform: skew(30deg,20deg); /* Firefox */ }
matrix() 方法需要六个参数,包含数学函数,允许您:旋转、缩放、移动以及倾斜元素。
<!DOCTYPE html> <html> <head> <style> div { width:100px; height:75px; background-color:yellow; border:1px solid black; } div#div2 { transform:matrix(0.866,0.5,-0.5,0.866,0,0); -ms-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* IE 9 */ -moz-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Firefox */ -webkit-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Safari and Chrome */ -o-transform:matrix(0.866,0.5,-0.5,0.866,0,0); /* Opera */ } </style> </head> <body> <div>你好。这是一个 div 元素。</div> <div id="div2">你好。这是一个 div 元素。</div> </body> </html>
transform-origin 属性允许您改变被转换元素的位置。
div { transform: rotate(45deg); transform-origin:20% 40%; -ms-transform: rotate(45deg); /* IE 9 */ -ms-transform-origin:20% 40%; /* IE 9 */ -webkit-transform: rotate(45deg); /* Safari 和 Chrome */ -webkit-transform-origin:20% 40%; /* Safari 和 Chrome */ -moz-transform: rotate(45deg); /* Firefox */ -moz-transform-origin:20% 40%; /* Firefox */ -o-transform: rotate(45deg); /* Opera */ -o-transform-origin:20% 40%; /* Opera */ }
查看动画效果例子
<html> <head></head> <style> div{ width:100px; height:75px; background-color:yellow; border:1px solid black; } </style> <script> var x,y,n=0,ny=0,rotINT,rotYINT; function rotateDIV(){ x=document.getElementById("rotate1"); clearInterval(rotINT); rotINT=setInterval("startRotate()",10); } function rotateYDIV() { y=document.getElementById("rotatey1") clearInterval(rotYINT) rotYINT=setInterval("startYRotate()",10) } function startRotate(){ n=n+1; x.style.transform="rotate("+n+"deg)"; x.style.webkitTransform="rotate("+n+"deg)"; x.style.OTransform="rotate("+n+"deg)"; x.style.MozTransform="rotate("+n+"deg)"; if(n==180 || n==360){ clearInterval(rotINT); if(n==360){n=0} } } function startYRotate() { ny=ny+1; y.style.transform="rotateY(" + ny + "deg)" y.style.webkitTransform="rotateY(" + ny + "deg)" y.style.OTransform="rotateY(" + ny + "deg)" y.style.MozTransform="rotateY(" + ny + "deg)" if (ny==180 || ny>=360) { clearInterval(rotYINT) if (ny>=360){ny=0} } } </script> <div onclick="rotateDIV()" id="rotate1" class="animated_div" >这是一个演示</div> <div onclick="rotateYDIV()" id="rotatey1" class="animated_div">这是另一个演示</div> </html>
应用过渡:
transition:用于在一个属性中设置四个过渡属性
transition-property:用于规定应用过渡的css属性的名称
transition-duration:定义过渡花费的时间
transition-timing-function:规定过渡效果的时间曲线
transition-delay:规定过渡效果何时开始<!DOCTYPE html> <html> <head> <style> .animated_div { width:65px; height:40px; background:#92B901; color:#ffffff; position:absolute; font-weight:bold; font:12px '微软雅黑', Verdana, Arial, Helvetica, sans-serif; padding:20px 10px 0px 10px; float:left; margin:5px; -webkit-transition:-webkit-transform 1s,opacity 1s,background 1s,width 1s,height 1s,font-size 1s; -webkit-border-radius:5px; -o-transition-property:width,height,-o-transform,background,font-size,opacity; -o-transition-duration:1s,1s,1s,1s,1s,1s; -moz-transition-property:width,height,-o-transform,background,font-size,opacity; -moz-transition-duration:1s,1s,1s,1s,1s,1s; transition-property:width,height,transform,background,font-size,opacity; transition-duration:1s,1s,1s,1s,1s,1s; border-radius:5px; opacity:0.4; } .animated_div:hover { -moz-transform: rotate(360deg); -webkit-transform: rotate(360deg); -o-transform: rotate(360deg); transform: rotate(360deg); opacity:1; background:#1ec7e6; width:90px; height:60px; font-size:16px; } </style> </head> <body> <div class="animated_div">css3 过渡</div> </body> </html>
@keyframes 创建动画时,需要把它绑定到某个选择器,否则是不会产生动画效果的。
1.规定动画的名称
2.规定动画的时长
动画发生的时间是用百分比来展示的,也可以用from和to,等同于0%和100%
animation 属性是一个简写属性,用于设置六个动画属性:
animation-name:需要绑定的选择器的名称
animation-duration:规定完成动画所花费的时间,以秒或者豪计
animation-timing-function:规定动画的速度曲线
linear:速度相同
ease:开始和结束的时候低速,中间较快
ease-in:动画以低速开始
ease-out:动画以低速结束
ease-in-out:动画以低速开始,低速结束<!DOCTYPE html> <html> <head> <style> #animated_div { width:60px; height:40px; background:#92B901; color:#ffffff; position:relative; font-weight:bold; font:bold 12px '微软雅黑',Verdana, Arial, Helvetica, sans-serif; padding:20px 10px 0px 10px; animation:animated_div 5s 2 alternate; -moz-animation:animated_div 5s 2 alternate; -webkit-animation:animated_div 5s 2 alternate; -o-animation:animated_div 5s 2 alternate; border-radius:5px; -webkit-border-radius:5px; } @keyframes animated_div { 0% {transform: rotate(0deg);left:0px;} 25% {transform: rotate(20deg);left:0px;} 50% {transform: rotate(60deg);left:500px;} 55% {transform: rotate(360deg);left:500px;} 70% {transform: rotate(0deg);left:500px;background:#1ec7e6;} 100% {transform: rotate(-360deg);left:0px;} } @-webkit-keyframes animated_div { 0% {-webkit-transform: rotate(0deg);left:0px;} 25% {-webkit-transform: rotate(20deg);left:0px;} 50% {-webkit-transform: rotate(60deg);left:500px;} 55% {-webkit-transform: rotate(360deg);left:500px;} 70% {-webkit-transform: rotate(0deg);left:500px;background:#1ec7e6;} 100% {-webkit-transform: rotate(-360deg);left:0px;} } @-moz-keyframes animated_div { 0% {-moz-transform: rotate(0deg);left:0px;} 25% {-moz-transform: rotate(20deg);left:0px;} 50% {-moz-transform: rotate(60deg);left:500px;} 55% {-moz-transform: rotate(360deg);left:500px;} 70% {-moz-transform: rotate(0deg);left:500px;background:#1ec7e6;} 100% {-moz-transform: rotate(-360deg);left:0px;} } @-o-keyframes animated_div { 0% {transform: rotate(0deg);left:0px;} 25% {transform: rotate(20deg);left:0px;} 50% {transform: rotate(60deg);left:500px;} 55% {transform: rotate(360deg);left:500px;} 70% {transform: rotate(0deg);left:500px;background:#1ec7e6;} 100% {transform: rotate(-360deg);left:0px;} } </style> </head> <body> <div></div> <p id="animated_div">CSS3 动画</p> </body> </html>
column-count 属性规定元素应该被分隔的列数
div { -moz-column-count:3; /* Firefox */ -webkit-column-count:3; /* Safari 和 Chrome */ column-count:3; }
column-gap 属性规定列之间的间隔
div { -moz-column-gap:40px; /* Firefox */ -webkit-column-gap:40px; /* Safari 和 Chrome */ column-gap:40px; }
resize 属性规定是否可以由用户来调整元素尺寸 resize:none | both | horizontal | vertical
none 不允许用户调整元素的大小
both:用户可以调节元素的宽度和高度
horizontal:用户可以调节元素的宽度
vertical:用户可以调节元素的高度<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8" /> <title>resize_CSS参考手册_web前端开发参考手册系列</title> <style> .test{overflow:auto;width:200px;height:100px;resize:both;background:#eee;} </style> </head> <body> <div class="test"> <ul> <li>新闻列表</li> <li>新闻列表</li> <li>新闻列表</li> </ul> </div> </body> </html>