CSS3新特性(transform),过渡动画,动画,弹性布局,响应式

1.CSS3新特性

1)转换

[1]2D转换

二维平面移动

语法:

transform:translateX(移动的距离) translateY(移动的距离);

Transform:translate(水平移动距离,垂直移动距离)

可以设置负值,水平的正值是向右移动,垂直的正值是向下移动

二维平面旋转

语法:

Transform:rotate(30deg);

旋转原点的设置

 transform-origin:center(默认值)

 可以设置left,top,right,bottom,center,

 百分比设置:transform-origin:水平位置的百分比 垂直位置的百分比

 

[2]3D转换

透视点

在所看元素的父元素或者是祖先元素上设置透视点

语法:perspective: 1000px;

三维立体的移动

语法:

transform: translateZ(200px);

transform: translate3d(水平移动,垂直移动,z轴移动);

z轴:z轴垂直于屏幕,方向是射向我们。

三维立体的旋转

语法:

/*transform: rotateX(30deg);*/

/*transform: rotateY(30deg);*/

/*transform: rotateZ(30deg);*/

transform: rotate3d(1,1,1,30deg);

解析:rotate3d(x,y,z,30deg),用x,y,z建立一个用原点射向(x,y,z)这个坐标的向量,用这个向量作为轴进行旋转。

 

2)缩放

语法:

transform:scale(整体放大的倍数)

Transform:scale(水平缩放的倍数,垂直缩放的倍数)

 

3)倾斜

语法:transform: skew(15deg,0deg);

小技巧:如果先要文字板正,那么反倾斜即可

案例:

 1 <!DOCTYPE html>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta charset="UTF-8">
 8 
 9 <title></title>
10 
11 <style type="text/css">
12 
13 #d1{
14 
15 width: 300px;
16 
17 height: 300px;
18 
19 background: green;
20 
21 margin: 0 auto;
22 
23  
24 
25 /*倾斜*/
26 
27 transform: skew(15deg,0deg);
28 
29 }
30 
31  
32 
33 h1{
34 
35 transform: skew(-15deg,0deg);
36 
37 }
38 
39 </style>
40 
41 </head>
42 
43 <body>
44 
45 <div id="d1">
46 
47 <h1>helloworld</h1>
48 
49 </div>
50 
51 </body>
52 
53 </html>

2.过渡动画

  Transition过渡

  综合设置:

  transition: all 2s;

  分别设置:

 

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <style type="text/css">
 7             #d1{
 8                 width: 200px;
 9                 height: 200px;
10                 background: skyblue;
11                 transform: rotate(0deg);
12                 
13                 /*过渡效果*/
14                 /*transition:height 2s,transform 3s,background 2s;*/
15                 /*transition: all 2s linear;*/
16                 /*过渡的属性*/
17                 transition-property: all;
18                 /*过渡所消耗的时间*/
19                 transition-duration: 2s;
20                 /*过渡变化的速度
21                  linear线性速度
22                  ease/ease-in/ease-out
23                  cubic-bezier(0.57,-0.34, 0.37, 1.44)
24                  * */
25                 transition-timing-function: cubic-bezier(0.57,-0.34, 0.37, 1.44);
26                 /*过渡的延迟时间*/
27                 /*transition-delay: 2s;*/
28             }
29             /*鼠标悬浮上去的状态*/
30             #d1:hover{
31                 height: 400px;
32                 transform: rotate(360deg);
33                 background: purple;
34             }
35         </style>
36     </head>
37     <body>
38         <div id="d1">
39             
40         </div>
41     </body>
42 </html>

 

3.动画

Animation:动画

综合设置语法:animation: donghua 4s infinite;

分别设置:

 1 /*动画*/
 2 
 3 /*animation: donghua 5s;*/
 4 
 5 /*动画的名称*/
 6 
 7 animation-name: donghua;
 8 
 9 /*一次动画所花费的时间*/
10 
11 animation-duration: 3s;
12 
13 /*动画的速度*/
14 
15 animation-timing-function: linear;
16 
17 /*动画延迟时间*/
18 
19 animation-delay: 3s;
20 
21 /*设置动画的次数*/
22 
23 animation-iteration-count: 3;
24 
25 /*设置动画的往返*/
26 
27 animation-direction: alternate;
28 
29 /*保留最后一刻状态*/
30 
31 animation-fill-mode: forwards;

不同状态写在关键帧里

@keyframes donghua{

0%{

transform: translate(0,0);

}

50%{

transform: translate(500px,0);

}

100%{

transform: translate(500px,500px);

}

}

案例:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         
 7         <style type="text/css">
 8             #d1{
 9                 width: 300px;
10                 height: 200px;
11                 background: skyblue;
12                 
13                 /*动画*/
14                 /*animation: donghua 5s;*/
15                 /*动画的名称*/
16                 animation-name: donghua;
17                 /*一次动画所花费的时间*/
18                 animation-duration: 3s;
19                 /*动画的速度*/
20                 animation-timing-function: linear;
21                 /*动画延迟时间*/
22                 animation-delay: 3s;
23                 /*设置动画的次数*/
24                 animation-iteration-count: 3;
25                 /*设置动画的往返*/
26                 animation-direction: alternate;
27                 /*保留最后一刻状态*/
28                 animation-fill-mode: forwards;
29                 
30             }
31             
32             
33             @keyframes donghua{
34                 0%{
35                     transform: translate(0,0);
36                 }
37                 50%{
38                     transform: translate(500px,0);
39                 }
40                 100%{
41                     transform: translate(500px,500px);
42                 }
43             }
44             
45         </style>
46     </head>
47     <body>
48         <div id="d1">
49             
50         </div>
51     </body>
52 </html>

4.弹性布局

 

 1)弹性容器:

 

元素上设置了display:flex;的元素就是弹性容器

 

2)弹性子元素:

 

元素上设置了display:flex;的元素就是弹性容器里面的直接子元素就是弹性子元素。

 

 

语法:display:flex;

 

[1]主轴分布的设置:

 1 justify-content:
 2 
 3  flex-start
 4 
 5  flex-end
 6 
 7  center
 8 
 9  space-around:平均分布,两边有间距,两边的间距是中间的一半
10 
11  space-between:平均分布,两边没有间距
12 
13  space-evenly:平均分布,间距一样

 

[2]侧轴分布的设置:

 

1 Align-items:
2 
3 stretch:拉伸,会默认将没有设置高度的子元素拉伸到跟父元素一样的高度。设置了高度就没有效果
4 
5  flex-start
6 
7  flex-end
8 
9  center

 

 

[3]换行

 

语法:flex-warp:warp

 

 

[4]多行分布的设置:

 

align-content:

 flex-start

 flex-end

 center

 space-around:平均分布,两边有间距,两边的间距是中间的一半

 space-between:平均分布,两边没有间距

 space-evenly:平均分布,间距一样

 

2)剩余空间的占据:

 

Flex:数字;

 

 1 <!DOCTYPE html>
 2 
 3 <html>
 4 
 5 <head>
 6 
 7 <meta charset="utf-8" />
 8 
 9 <title></title>
10 
11 <style type="text/css">
12 
13 .parent{
14 
15 width: 100%;
16 
17 height: 800px;
18 
19 margin: 0 auto;
20 
21 border: 1px solid #000;
22 
23  
24 
25  
26 
27 /*设置弹性容器*/
28 
29 display: flex;
30 
31  
32 
33 }
34 
35  
36 
37 .db{
38 
39 flex: 1;
40 
41 background: yellow;
42 
43 }
44 
45 .c1{
46 
47 /*占据剩余空间的1份*/
48 
49 flex: 2;
50 
51 background: green;
52 
53 }
54 
55  
56 
57 .c2{
58 
59 background: purple;
60 
61 width: 100px;
62 
63 }
64 
65  
66 
67  
68 
69 </style>
70 
71 </head>
72 
73 <body>
74 
75 <div class="parent">
76 
77 <!--db占据剩余空间3份中的1份-->
78 
79 <div class="db"></div>
80 
81 <!--c1是主要内容,占据剩余剩余空间3份中的2份-->
82 
83 <div class="child c1"></div>
84 
85 <!--假设c2是广告位,占100px宽度-->
86 
87 <div class="child c2"></div>
88 
89  
90 
91 </div>
92 
93 </body>
94 
95 </html>

 

 

3)对弹性子元素进行排序

 

 order:数字

 

 根据order的数字,进行从小到大排序

 

 

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <style type="text/css">
 7             .parent{
 8                 width: 800px;
 9                 height: 800px;
10                 margin: 0 auto;
11                 border: 1px solid #000;
12                 
13                 /*设置弹性容器*/
14                 display: flex;    
15             }
16             
17             .child{
18                 width: 200px;
19                 height: 200px;
20             }
21             /*
22  对弹性子元素进行排序
23  order:数字
24  根据order的数字,进行从小到大排序
25              * */
26             .c1{
27                 background: green;
28                 order: 2;
29             }
30             
31             .c2{
32                 background: purple;
33                 order: 3;
34             }
35             
36             .c3{
37                 background: pink;
38                 order: 1;
39             }
40         </style>
41     </head>
42     <body>
43         <div class="parent">
44             <div class="child c1">1</div>
45             <div class="child c2">2</div>
46             <div class="child c3">3</div>
47             
48         </div>
49     </body>
50 </html>

5.响应式

1)移动端响应式解决方案

移动端:手机/平板/智能电视/智能手表/VR设备/AR设置

[1]视viewport(webstorm 快捷键:meta:vp)

<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />

 

width=device-width width等于设备的系统显示宽度

initial-scale=1 :后面4个最终决定不允许任何的缩放。

minimum-scale=1

maximum-scale=1

user-scalable=no

 案例:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 7     </head>
 8     <body>
 9         <h1>helloworld</h1>
10         <p>hello蔡徐坤</p>
11     </body>
12 </html>

 

[2]一套设计稿解决手机端的屏幕大小不一致问题

<meta name="viewport" content="width=750,user-scalable=no" />

 案例;

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <meta name="viewport" content="width=750,user-scalable=no" />
 7     </head>
 8     <body>
 9         <div style="width: 375px;height: 375px;background: skyblue;">
10             
11         </div>
12     </body>
13 </html>

 

2)响应式:

不同的屏幕的大小,显示不一样的内容。

手机端:背景蓝色

手机的显示分辨率:一般小于640px

平板:紫色

平板的分辨率:一般是大于640px,小于960px

Pc:黑色

pc的分辨率:一般是大于1400px

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6         <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
 7         <style type="text/css">
 8             .d1{
 9                 width: 600px;
10                 height: 400px;
11                 background: orange;
12             }
13             /*媒体查询*/
14             /*小于等于640px的分辨率*/
15             
16             @media only screen and (max-width:640px ) {
17                 .d1{
18                     background: skyblue;
19                 }
20             }
21             
22             /*范围在640px-960px之间*/
23             @media only screen and (min-width: 640px) and (max-width: 960px) {
24                 .d1{
25                     background: purple;
26                 }
27             }
28             
29             /*大于1400px*/
30             @media only screen and (min-width:1400px ) {
31                 .d1{
32                     background: black;
33                 }
34             }
35         </style>
36     </head>
37     <body>
38         <div class="d1">
39             
40         </div>
41     </body>
42 </html>

 

posted @ 2019-05-26 21:17  他也就火三年  阅读(2320)  评论(0编辑  收藏  举报