CSS3基础

164 阅读5分钟

CSS3简单介绍

CSS3是最新的css标准(新特性)。

浏览器支持度

由于W3C制定标准慢,浏览器厂商快速加入新特性的支持,故加前缀。

W3C制定标准后,全面支持,去掉前缀。

浏览器内核 浏览器 CSS3前缀
webkit safari、chrome -webkit-
gecko firefox -moz-
presto opera -o-
trident ie -ms-

IE9以及之前版本不支持

CSS3特性

border-radius 圆角边框

html:
<div class="box"></div>

css:
.box{
    width: 200px;
    height: 200px;
    background: red;
    border-radius: 40px; /*水平值和垂直值为40px*/
}

属性 描述
border-radius (四个方向)水平值 垂直值
border-top-left-radius 左上角圆角边距
border-bottom-left-radius 左下角圆角边距
border-top-right-radius 右上角圆角边距
border-bottom-right-radius 右下角圆角边距

html:
<div class="box"></div>

css:
.box{
    width: 200px;
    height: 200px;
    background: red;
    border-radius: 100px; 
}

圆角矩形

html:
<div class="box"></div>

css:
.box{
    width: 400px;
    height: 200px;
    background: red;
    border-radius: 100px; 
}

box-shadow 阴影

box-shadow:内阴影(inset)/外阴影(outset 默认) 水平偏移 垂直偏移 模糊程度 颜色;
html:
<div class="box"></div>

css:
.box{
    width: 400px;
    height: 200px;
    background: green;
    box-shadow:inset 10px 10px 50px red;
}

html:
<div class="box"></div>

css:
.box{
    width: 200px;
    height: 200px;
    background: green;
    box-shadow: -20px -20px 10px red;
}

text-shadow 文字阴影

text-shadow: 水平偏移 垂直偏移 模糊程度 颜色;
html:
<p>这是一个段落</p>

css:
p{
   color:#777777;
    box-shadow: -20px -20px 10px red;
}

word-wrap 文本强制换行

允许长单词,url强制换行。

正常情况

强制换行

html:
<p>这是一个长单词段落。avdfasfafafafaerwwwwfbbhjukiiooavdfasfafafafaerwwwwfbbhjukiiooavdfasfafafafaerwwwwfbbhjukiiooavdfasfafafafaerwwwwfbbhjukiioo
    </p>

css:
p{
   width:200px;
   color: #777777;
   border: 1px solid #4bff59;
   word-wrap:break-word; /*强制换行*/
}

@font-face外部字体引用

之前使用字体需要客户端安装字体或者以照片形式使用。

css3将字体放在服务器,需要时使用。

不同浏览器需要不同的字体格式

浏览器 字体格式
ie .eot
chrome、firefox .woff
chrome、iphone .svg
firefox、safari、opera .ttf或.otf

字体转换:www.fontsquirrel.com/

@font-face{ /*定义字体*/
    font-family:"zitimingzi";
    src:url('fonts/ziti.ttf'),
        url('fonts/ziti.svg'),
        url('fonts/ziti.woff'),
        url('fonts/ziti.eot');
}
p{ /*引用字体*/
  font-family:"zitimingzi" ;
}

2D转换

transform对元素旋转、缩放、移动、翻转。

transform默认以元素中心点进行转换

旋转 rotate()
html:
<div class="box">原div</div>
<div class="box addTrans">添加transform属性的div</div>

css:
.box{
    margin: 40px;
    width: 200px;
    height: 200px;
    background: #4bff59;
}
.addTrans{
    background: #718dff;
    transform: rotate(30deg); /*30deg表示顺时针旋转30度,负数表示逆时针旋转*/
}

缩放 scale()
html:
<div class="box">原div</div>
<div class="box addTrans">添加transform属性的div</div>

css:
.box{
    margin: 40px;
    width: 200px;
    height: 200px;
    background: #4bff59;
}
.addTrans{
    background: #718dff;
    transform: scale(0.5); /*0-1表示缩小,大于1表示放大,scale(0.5)表示x轴和y轴都缩小为原来的一半,scale(0.5,0.8)表示x轴缩小为原来的一半,y轴表示缩小为原来的0.8倍*/
}

移动 translate()
html:
<div class="box">原div</div>
<div class="box addTrans">添加transform属性的div</div>

css:
.box{
    width: 200px;
    height: 200px;
    background: #4bff59;
}
.addTrans{
    background: #718dff;
    transform: translate(50px,100px); /*50px表示沿x轴移动50px,100px表示沿y轴移动100px*/
}

翻转 skew()
html:
<div class="box">原div</div>
<div class="box addTrans">添加transform属性的div</div>

css:
.box{
    margin: 40px;
    width: 200px;
    height: 200px;
    background: #4bff59;
}
.addTrans{
    background: #718dff;
    transform: skew(9deg,20deg); /*9deg表示沿x轴翻转9度,20deg表示沿y轴翻转20度,正数表示顺时针,负数表示逆时针*/
}

动画

过渡动画(从一个状态到另一个状态,直接变化无中间过程)

过渡属性transition

属性 描述
transition 属性名(all表示所有属性) 过渡时间 过渡方法
transition-property 对哪个属性进行过渡
transition-duration 过渡持续时间
transition-timing-function 过渡使用方法(函数,如ease)
transition-delay 过渡开始等待时间

transition-timing-function属性值

属性值名称 描述
linear 匀速
ease 慢快慢
ease-in 慢快
ease-out 快慢
ease-in-out 慢快慢
html:
<div class="box">原div</div>

css:
.box{
    margin: 40px;
    width: 160px;
    height: 60px;
    background: #777777;
    color: #fff;
    line-height: 60px;
    text-align: center;
    transition: all 2s ease;
}
.box:hover{
    background: #718dff;
    transform: scale(1.2);
}

animation动画(从一个状态到最终状态,可以多个不同的过程)

@keyframes定义动画,通过animation引用动画;

@keyframes 动画名{
    from{
        backgrounfd:red;/*起始动画的相关属性*/
    }
    to{
        backgrounfd:blue;/*结束动画的相关属性*/
    }
}
div{
    animation:  @keyframe定义的动画名 动画时间 动画方式 动画开始等待时间 循环次数(具体数字或者infinite(无限循环)) 是否应该轮流反向播放动画(alternate 轮流反向播放)
}
@keyframes属性值 描述
from to from相当于0%,to相当于100%
0%-100% 不同百分比可以有不同动画
animationx相关属性 描述
animation 动画属性的相关简写
animation-name @keyframe定义的动画名
animation-duration 动画播放时间
animaition-timing-function 动画方式(函数)
animation-delay 动画开始等待时间
animation-interation-count 动画播放次数
animation-direction 是否应该轮流反向播放动画
@keyframes bcolor{
    0%{
        background:red;
    }
    50%{
        background:yellow;
    }
    100%{
        backgorund:blue;
    }
}
div{
    width: 200px;
    height: 200px;
    animation:bcolor 3s linear 1s infinite alternate;
}

3D转换

transform-style:preserve-3d; (使用3D空间,x,y,z轴)
perspective:1000px;(透视(效果为近大远小))
html:
<div class="allbox">
    <div class="imgbox">
        <img src="images/timg.jpeg" alt="">
    </div>
</div>

css:
.allbox{
    width: 200px;
    height: 200px;
    perspective: 1000px;
}
.imgbox{
    width:200px;
    transform-style: preserve-3d;
}
.imgbox img{
    width: 100%;
}
.imgbox:hover{
    transform: rotateY(30deg);
}