CSS3核心技术

CSS3核心技术



前言

  • css3是CSS(层叠样式表)技术的升级版本
  • css3功能更为强大,很多浏览器不支持css2.0,现在在css3中重新使用,并且能兼容css3样式
  • css3与css使用语法基本一样

一、过渡

1.1认识过渡

  1. 过渡指的就是关系元素的初始状态和结束状态,没有方法可以获取元素在过渡中的每一帧状态
  2. 元素在初次渲染还没有结束的时候,是不可以触发过渡的
  3. 在大部分变换样式切换时,变换的组合的个数或位置不一样时,是不可以触发过渡的

2.2过渡的属性

  • transition-property
    指定过渡动画的属性(并不是所有的属性都可以动画)

语法:transition-property:none | all | property

属性值描述
none没有属性会获得过渡条件
all所有属性都会获得过渡效果
property定义应用过渡效果的CSS属性名称,多个名称之间用逗号隔开
  • transition-duration
    指定过渡动画的时间(0也要带单位)

语法:transition-duration:时间;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html{
            height: 100%;
        }
        #maxbox{
            width: 60%;
            height: 60%;
            border: 1px solid rebeccapurple;
            margin: 100px auto 0;
        }
        #box{
            width: 200px;
            height: 200px;
            border-radius: 50%;
            background-color: antiquewhite;
            transition-property: background,width,height;
            transition-duration: 1s,0s,1s;
            margin: auto; 
        }
        #box:hover{
            width: 100px;
            height: 100px;
            background: #000;
        }
    </style>
</head>
<body>
    <div id="maxbox">
    <div id="box"></div>
    </div>
</body>
</html>

效果图
图片效果

transition-timing-function
**作用:**指定过渡动画的形式(贝塞尔)

属性值描述
linear以相同速度开始到结束的过渡效果
ease先慢后快
ease-in先快后慢
ease-out以慢速结束
ease–in-out以慢速开始和结束的过渡效果
cubic-bezier(n,n,n,n)定义用于加速或者减速的贝塞尔曲线的形状
  • transition-delay
    作用:规定过渡效果何时开始

语法:transition-delay:时间;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        html{
            height: 100%;
        }
        #maxbox{
            width: 60%;
            height: 60%;
            border: 1px solid rebeccapurple;
            margin: 100px auto 0;
        }
        #box{
            width: 200px;
            height: 200px;
            border-radius: 50%;
            background-color: antiquewhite;
            transition-property: width;
            transition-duration: 2s;
            transition-timing-function: linear;
            transition-delay: 2s;
            margin: auto; 
        }
        #box:hover{
            width: 100px;
            height: 100px;
            background: #000;
        }
    </style>
</head>
<body>
    <div id="maxbox">
    <div id="box"></div>
    </div>
</body>
</html>

效果图
效果图

  • transtionend 事件
    在每个属性完成过渡时都会触发这个事件

二、变形

2.1 2D变形(transform)

rotate旋转
translate平移
skew斜切
scale缩放

旋转测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            margin: 100px auto;
			width: 200px;
			height: 200px;
			background: pink;
			transition: 3s;
        }

        body:hover #box{
			transform: rotate(360deg);
		}
    </style>
</head>
<body>
    <div id="box">
        bgyl
    </div>
</body>
</html>

平移测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            margin: 100px auto;
			width: 200px;
			height: 200px;
			background: pink;
			transition: 3s;
        }

        body:hover #box{
			transform: translateX(300px);
		}
    </style>
</head>
<body>
    <div id="box">
        bgyl
    </div>
</body>
</html>

斜切测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            margin: 100px auto;
			width: 200px;
			height: 200px;
			background: pink;
			transition: 3s;
        }

        body:hover #box{
			transform: skewY(-30deg);
		}
    </style>
</head>
<body>
    <div id="box">
        bgyl
    </div>
</body>
</html>

缩放测试

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            margin: 100px auto;
			width: 200px;
			height: 200px;
			background: pink;
			transition: 3s;
        }

        body:hover #box{
			transform: scale(.5);
		}
    </style>
</head>
<body>
    <div id="box">
        bgyl
    </div>
</body>
</html>
  • 基点变换
参数描述
x-axis定义视图被置于x轴的何处
y-axis定义视图被置于y轴的何处
z-axis定义视图被置于z轴的何处

2.2 3D变形

  • 旋转
rotateX()围绕X轴旋转
rotateY()围绕Y轴旋转
rotateZ()围绕Z轴旋转
rotate3d()同时设置三个轴
  • prespective属性(景深)
    理解:景深就是我们的肉眼距离显示器的距离
    作用:构建3D舞台,决定用户的肉眼距离屏幕的水平距离!使3D变换的元素具有近大远小的感觉

灭点:
灭点指的是立体图形各条边的延伸线所产生的相交点,透视点的消失点

景深和灭点的关系
景深越大,灭点越远,元素变形越小
景深越小,灭点越近,元素变形越大
景深是一个不可继承属性,但他可以作用于所有的后代元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #maxbox{
            width: 100px;
            height: 100px;
            padding: 100px;
            border: 1px solid #f00;
            perspective: 100px;
        }
        #box{
			width: 100px;
			height: 100px;
			background: pink;
			transition: 1s;
        }

        body:hover #box{
			transform: rotate3d(1,1,1,360deg);
		}
    </style>
</head>
<body>
<div id="maxbox">
    <div id="box">
        bgyl
    </div>
</div>
</body>
</html>
  • 其他方法属性
方法名称描述
translate3d(x,y,z)定义3d位移
translateX(x)定义3d位移,仅使用用于X轴的值
translateY(y)定义3d位移,仅使用用于Y轴的值
translateZ(z)定义3d位移,仅使用用于Z轴的值
scale3d(x,y,z)定义3d缩放
scaleX(x)定义3d缩放,通过给定一个X轴的值
scaleY(y)定义3d缩放,通过给定一个Y轴的值
scaleZ(z)定义3d缩放,通过给定一个Z轴的值
  • transform-style
  • 作用:构建3D舞台,使3d舞台有层次感
  • transform-style是一个不可继承属性,他只作用于子元素

三、动画

3.1动画关键帧(@keyframes)

animation属性只有配合**@keyframes**才能实现动画效果
animationname:表示当前动画的名称
keyframes-selector:关键帧选择器
css-styles:定义执行到当前关键帧是对应的动画效果

语法:@keyframes animationname{
keyframes-selector(css-styles)
}

3.2 关键帧的名字(animation-name)

语法:animation-name:keyframes | none;

3.3 动画周期的时长(animation-duration)

语法:animation-duration: time;

3.4 animation-timing-function属性

作用:作用于一个关键帧周期而非整个动画周期

属性值描述
linear动画从头到尾速度相同
ease默认值,动画低速开始,然后加快,在结束前变慢
ease-in动画低速开始
ease-out动画低速结束
ease-in-out动画低速开始和结束

语法:animation-timing-function: value;

3.5循环关键帧的次数(animation-iteration-count)

语法:animation-iteration-count: number | infinite;

3.6 执行动画效果延迟的时间(animation-delay)

语法:animation-delay: time;

3.7动画播放的方向 (animation-direction)

改变关键帧的执行方向,还会影响animation-timing-function的形式

语法:animation-direction: normal | alternate;

4、媒体

4.1嵌入视频

<video src="视频文件路径" controls="controls"></video>

4.2嵌入音频

<audio src="视频文件路径" controls="controls"></audio>

4.3媒体属性

  1. List item width(可加max min前缀)
  2. height(可加max min前缀)
  3. device-width(可加max min前缀)
  4. device-pixel-ratio(可加maxmin前缀,需要加webkit前缀)
  5. orientation portrait竖屏 landscape横屏

总结

某些样式介绍只给出了代码,没有效果图,望谅解,看效果直接复制代码查看即可!!

希望这篇文章能对大家有所帮助

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值