天天看點

第97天:CSS3漸變和過渡詳解

一、漸變

漸變是CSS3當中比較豐富多彩的一個特性,通過漸變我們可以實作許多炫麗的效果,有效的減少圖檔的使用數量,并且具有很強的适應性和可擴充性。

可分為線性漸變、徑向漸變

1、 線性漸變 (gradient 變化)

  linear-gradient線性漸變指沿着某條直線朝一個方向産生漸變效果。

linear-gradient:方向,起始顔色,終止顔色
  方向:to left/ to right / to top      
1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>漸變</title>
 6     <style>
 7         div{
 8             width: 1000px;
 9             height: 100px;
10             margin: 30px auto;
11             border:1px solid #000;
12         }
13         /*linear-gradient:方向 起始顔色 終止顔色*/
14         /*方向:to left to right  to top*/
15         div:nth-child(1){
16             background-image: linear-gradient(to right,yellow,green);
17         }
18         /*不寫方向,預設從上到下*/
19         div:nth-child(2){
20             background-image: linear-gradient(yellow,green);
21         }
22         /*方向可以寫角度 deg*/
23         div:nth-child(3){
24             width: 100px;
25             height: 100px;
26             background-image: linear-gradient(45deg,yellow,green);
27         }
28         /*用百分比控制漸變的範圍*/
29         div:nth-child(4){
30             background-image: linear-gradient(to right,yellow 0%,red 40%,blue 100%);
31         }
32         /*顔色突變*/
33         div:nth-child(5){
34             background-image: linear-gradient(45deg,yellow 0%,yellow 25%,blue 25%,blue 50%,red 50%,red 75%,green 75%,green 100%);
35         }
36         div:nth-child(6){
37             background-image: linear-gradient(135deg,
38             #000 0%,
39             #000 25%,
40             #fff 25%,
41             #fff 50%,
42             #000 50%,
43             #000 75%,
44             #fff 75%,
45             #fff 100%);
46             background-repeat: repeat;
47             background-size: 100px 100%;
48         }
49     </style>
50 </head>
51 <body>
52     <div></div>
53     <div></div>
54     <div></div>
55     <div></div>
56     <div></div>
57     <div></div>
58 </body>
59 </html>

運作效果:

      

2、徑向漸變

radial-gradient徑向漸變指從一個中心點開始沿着四周産生漸變效果

  1、必要的元素:

    a、輻射範圍即圓半徑  (半徑越大,漸變效果越大)

    b、中心點 即圓的中心  (中心點的位置是以盒子自身)

    c、漸變起始色

    d、漸變終止色

  2、關于中心點:中心位置參照的是盒子的左上角

  3、關于輻射範圍:其半徑可以不等,即可以是橢圓

1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>徑向漸變</title>
 6     <style>
 7         div{
 8             width: 200px;
 9             height: 200px;
10             border:1px solid #000;
11             margin: 20px 20px;
12             float: left;
13         }
14 
15         /* 徑向漸變:
16         radial-gradient(輻射半徑,中心的位置,起始顔色,終止顔色)
17         中心點位置:at left right center bottom top*/
18         div:nth-child(1){
19             background-image: radial-gradient(at left top,red,blue);
20         }
21         div:nth-child(2){
22             background-image: radial-gradient(at 50px 50px,red,blue);
23         }
24 
25         /* 在at前可加輻射半徑*/
26         div:nth-child(3){
27             background-image: radial-gradient(100px at 50px 50px,red,blue);
28         }
29 
30         /*多個顔色漸變*/
31         div:nth-child(4){
32             background-image: radial-gradient(at 50px 50px,red 10%,blue 60%,yellow 75%);
33         }
34 
35         /*橢圓漸變*/
36         div:nth-child(5){
37             background-image: radial-gradient(at 50px 100px,red 10%,blue 60%,yellow 75%);
38         }
39 
40         /*球體 用rgba控制透明度,實作立體效果*/
41         div:nth-child(6){
42             border-radius: 50%;
43             border: 0;
44             background-color: blue;
45             background-image: radial-gradient(at 80px 80px,rgba(0,0,0,0),rgba(0,0,0,0.6) );
46         }
47         
48     </style>
49 </head>
50 <body>
51     <div></div>
52     <div></div>
53     <div></div>
54     <div></div>
55     <div></div>
56     <div></div>
57 
58 </body>
59 </html>
運作效果:

      

 二、過渡(transition)

  1、Transition:param1  param2

  param1    要過渡的屬性

  param2    過渡的時間.

  過渡是CSS3中具有颠覆性的特征之一,可以實作元素不同狀态間的平滑過渡(補間動畫),經常用來制作動畫效果。

  補間動畫:自動完成從起始狀态到終止狀态的的過渡。不用管中間的狀态

  幀動畫:撲克牌切換.通過一幀一幀的畫面按照固定順序和速度播放。如電影膠片

  特點:目前元素隻要有“屬性”發生變化時,可以平滑的進行過渡。

1 .box{
 2             width: 200px;
 3             height: 200px;
 4             border:1px solid #000;
 5             margin: 100px auto;
 6             background-color: red;
 7             /*transition: width 2s,background-color 2s;*/
 8             /*如果多個過渡的特效相同,可以簡寫,過渡必須加給盒子本身*/
 9             /*transition:過渡屬性,過渡時間,速度曲線(linear勻速),延遲時間*/
10             transition: all 2s linear 1s;
11         }
12 
13         /*過渡屬性*/
14         .box:hover{
15             width: 600px;
16             background-color: blue;
17         }      

2、 過渡屬性

  •   transition-property設定過渡屬性
  •   transition-duration設定過渡時間 用來控制速度linear(勻速)
  •   ease(減速) / ease-in(加速) / ease-out(減速) / ease-in-out(先加速後減速)
  •   transition-timing-function設定過渡速度  
  •   transition-delay設定過渡延時  超過時間後執行動畫.
如果所有屬性都過渡,可以使用transition-property:all;      
1  .box{
 2             width: 200px;
 3             height: 200px;
 4             background-color: red;
 5             margin: 100px auto;
 6 
 7             /*過度屬性詳解*/
 8             transition-property: width;/*過度屬性*/
 9             transition-duration: 2s;/*過渡持續時間*/
10             transition-timing-function: linear;/*運動曲線 linear 線性*/
11            /* transition-timing-function: ease(減速)/ease-in(加速)/ease-out(減速)/ease-in-out(先加速後減速);*/
12 
13             /*過渡延遲*/
14             transition-delay: 1s;
15             /*如果所有屬性都過渡,可以使用transition-property:all;*/
16 
17         }
18         .box:hover{
19             width: 600px;
20         }