第07章-CSS3动画特效

2022-05-18 23:32 更新

第07章-前端核心技术-CSS3动画特效

项目经理(作者):张明星

学习目标

  1. 掌握CSS3特效的制作 重点
  2. 掌握CSS3各种转换的特效 重点
  3. 掌握CSS3动画的制作 重点
  4. 掌握CSS3渐变色的使用
  5. 掌握CSS3响应式设计 难点

CSS3 过渡transition

过渡属性

属性 描述
transition 简写属性,用于在一个属性中设置四个过渡属性。
transition-property 规定应用过渡的 CSS 属性的名称。
transition-duration 定义过渡效果花费的时间。默认是 0。
transition-timing-function 规定过渡效果的时间曲线。默认是 "ease"。
transition-delay 规定过渡效果何时开始。默认是 0。

案例01

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>变换</title>
  6. <style>
  7. div {
  8. width: 100px;
  9. background: blue;
  10. -webkit-transition: width 2s linear 1s,
  11. background-color 2s linear 1s;
  12. transition: width 2s linear 1s,
  13. background-color 2s linear 1s;
  14. }
  15. div:hover {
  16. width: 200px;
  17. background-color: red;
  18. }
  19. img {
  20. width: 100%;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <p><b>注意:</b>无法在 IE9 及更早 IE 版本上工作。</p>
  26. <div><img src="image/avatar.jpg" /></div>
  27. </body>
  28. </html>

效果图

CSS3 转换transform

转换属性

Property 描述
transform 适用于2D或3D转换的元素

2D 转换

函数 描述
matrix(n,n,n,n,n,n) 2D 转换,使用六个值的矩阵。(选修)
translate(x,y) 2D 转换,沿着 X 和 Y 轴移动元素。
translateX(n) 2D 转换,沿着 X 轴移动元素。
translateY(n) 2D 转换,沿着 Y 轴移动元素。
scaleX(n) 2D 缩放转换,改变元素的宽度。
scaleY(n) 2D 缩放转换,改变元素的高度。
rotate(angle) 2D 旋转,在参数中规定角度。
skew(x-angle,y-angle) 2D 倾斜转换,沿着 X 和 Y 轴。
skewX(angle) 2D 倾斜转换,沿着 X 轴。
skewY(angle) 2D 倾斜转换,沿着 Y 轴。

translate(?px/%) 位置变换

translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。

rotate(?deg) 旋转

rotate()方法,在一个给定度数顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转。

scale(x,y) 尺寸改变

scale()方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数:

skew(?deg,?deg) 倾斜

transform:skew(angle [,angle]);

包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。

  • skewX(angle);表示只在X轴(水平方向)倾斜。
  • skewY(angle);表示只在Y轴(垂直方向)倾斜。

3D转换

CSS3 transform-style 属性

描述
flat 表示所有子元素在2D平面呈现。
preserve-3d 表示所有子元素在3D空间中呈现。

3D 转换方法

函数 描述
matrix3d(n,n,n,n,n,n, n,n,n,n,n,n,n,n,n,n) 3D 转换,使用 16 个值的 4x4 矩阵。
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 轴的值。
rotate3d(x,y,z,angle) 3D 旋转。
rotateX(angle) 定义沿 X 轴的 3D 旋转。
rotateY(angle) 定义沿 Y 轴的 3D 旋转。
rotateZ(angle) 定义沿 Z 轴的 3D 旋转。
perspective(n) 3D 转换元素的透视视图。

transform-origin

transform-origin属性用于设置3D变换的中心位置

transform-origin: x-axis y-axis z-axis;

描述
x-axis 定义视图被置于 X 轴的何处。可能的值:leftcenterrightlength%
y-axis 定义视图被置于 Y 轴的何处。可能的值:topcenterbottomlength%
z-axis 定义视图被置于 Z 轴的何处。可能的值:length

案例02

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <link rel="stylesheet" type="text/css" href="css/index.css"/>
  7. </head>
  8. <body>
  9. <h1>Css3 Transform</h1>
  10. <!-- Rotate-->
  11. <div class="card">
  12. <div class="box rotate">
  13. <div class="fill"></div>
  14. </div>
  15. <p>rotate(45deg) </p>
  16. </div>
  17. <div class="card">
  18. <div class="box rotateX">
  19. <div class="fill"></div>
  20. </div>
  21. <p>rotateX(45deg)</p>
  22. </div>
  23. <div class="card">
  24. <div class="box rotateY">
  25. <div class="fill"></div>
  26. </div>
  27. <p>rotateY(45deg)</p>
  28. </div>
  29. <div class="card">
  30. <div class="box rotateZ">
  31. <div class="fill"></div>
  32. </div>
  33. <p>rotateZ(45deg) </p>
  34. </div>
  35. <!-- scale-->
  36. <div class="card">
  37. <div class="box scale">
  38. <div class="fill"></div>
  39. </div>
  40. <p>scale(2)</p>
  41. </div>
  42. <div class="card">
  43. <div class="box scaleX">
  44. <div class="fill"></div>
  45. </div>
  46. <p>scaleX(2) </p>
  47. </div>
  48. <div class="card">
  49. <div class="box scaleY">
  50. <div class="fill"></div>
  51. </div>
  52. <p>scaleY(2) </p>
  53. </div>
  54. <!-- skew-->
  55. <div class="card">
  56. <div class="box skew">
  57. <div class="fill"></div>
  58. </div>
  59. <p>skew(45deg, 45deg) </p>
  60. </div>
  61. <div class="card">
  62. <div class="box skewX">
  63. <div class="fill"></div>
  64. </div>
  65. <p>skewX(45deg)</p>
  66. </div>
  67. <div class="card">
  68. <div class="box skewY">
  69. <div class="fill"></div>
  70. </div>
  71. <p>skewY(45deg)</p>
  72. </div>
  73. <!-- translate-->
  74. <div class="card">
  75. <div class="box translate">
  76. <div class="fill"></div>
  77. </div>
  78. <p>translate(45px) </p>
  79. </div>
  80. <div class="card">
  81. <div class="box translateX">
  82. <div class="fill"></div>
  83. </div>
  84. <p>translateX(45px)</p>
  85. </div>
  86. <div class="card">
  87. <div class="box translateY">
  88. <div class="fill"></div>
  89. </div>
  90. <p>translateY(45px)</p>
  91. </div>
  92. <div class="card">
  93. <div class="box matrix">
  94. <div class="fill"></div>
  95. </div>
  96. <p> matrix(2, 2, 0, 2, 45, 0)</p>
  97. </div>
  98. <h4>Perspective : 100</h4>
  99. <div class="perspective-100">
  100. <div class="card">
  101. <div class="box rotateX">
  102. <div class="fill"></div>
  103. </div>
  104. <p>rotateX(90deg)</p>
  105. </div>
  106. <div class="card">
  107. <div class="box rotateY">
  108. <div class="fill"></div>
  109. </div>
  110. <p>rotateY(45deg)</p>
  111. </div>
  112. </div>
  113. <h4>Perspective : 200</h4>
  114. <div class="perspective-200">
  115. <div class="card">
  116. <div class="box rotateX">
  117. <div class="fill"></div>
  118. </div>
  119. <p>rotateX(90deg)</p>
  120. </div>
  121. <div class="card">
  122. <div class="box rotateY">
  123. <div class="fill"></div>
  124. </div>
  125. <p>rotateY(45deg)</p>
  126. </div>
  127. </div>
  128. <!-- transform origin-->
  129. <h2>Transform origin</h2>
  130. <div class="card">
  131. <div class="box rotate">
  132. <div class="fill to-100-0-0"></div>
  133. </div>
  134. <p>transform-origin : 100% 0 0 <br/>rotate(45deg)</p>
  135. </div>
  136. <div class="card">
  137. <div class="box rotate">
  138. <div class="fill to-0-100-0"></div>
  139. </div>
  140. <p>transform-origin : 0 100% 0<br/>rotate(45deg)</p>
  141. </div>
  142. <div class="card perspective-200">
  143. <div class="box rotateX">
  144. <div class="fill to-0-100-0"></div>
  145. </div>
  146. <p>transform-origin : 0 100% 0<br/>rotateX(45deg)</p>
  147. </div>
  148. <div class="card perspective-200">
  149. <div class="box rotateX">
  150. <div class="fill to-100-0-0"></div>
  151. </div>
  152. <p>transform-origin : 0 100% 0<br/>rotateX(45deg)</p>
  153. </div>
  154. <div class="card perspective-200">
  155. <div class="box rotateY">
  156. <div class="fill to-0-100-0"></div>
  157. </div>
  158. <p>transform-origin : 0 100% 0 <br/>rotateY(45deg)</p>
  159. </div>
  160. <div class="card perspective-200">
  161. <div class="box rotateY">
  162. <div class="fill to-100-0-0"></div>
  163. </div>
  164. <p>transform-origin : 100% 0 0<br/>rotateY(45deg)</p>
  165. </div>
  166. <div class="card">
  167. <div class="box scale">
  168. <div class="fill to-100-0-0"></div>
  169. </div>
  170. <p>transform-origin : 100% 0 0<br/>scale(2)</p>
  171. </div>
  172. <div class="card">
  173. <div class="box scale">
  174. <div class="fill to-0-100-0"></div>
  175. </div>
  176. <p>transform-origin : 0 100% 0<br/>scale(2)</p>
  177. </div>
  178. <div class="card">
  179. <div class="box scaleX">
  180. <div class="fill to-100-0-0"></div>
  181. </div>
  182. <p>transform-origin : 100% 0 0<br/>scaleX(2)</p>
  183. </div>
  184. <div class="card">
  185. <div class="box scaleX">
  186. <div class="fill to-0-100-0"></div>
  187. </div>
  188. <p>transform-origin : 0 100% 0<br/>scaleX(2)</p>
  189. </div>
  190. <div class="card">
  191. <div class="box scaleY">
  192. <div class="fill to-100-0-0"></div>
  193. </div>
  194. <p>transform-origin : 100% 0 0<br/>scaleY(2)</p>
  195. </div>
  196. <div class="card">
  197. <div class="box scaleY">
  198. <div class="fill to-0-100-0"></div>
  199. </div>
  200. <p>transform-origin : 0 100% 0<br/>scaleY(2)</p>
  201. </div>
  202. </body>
  203. </html>

效果图

CSS3 动画

@keyframes规则是创建动画。 @keyframes规则内指定一个CSS样式和动画将逐步从目前的样式更改为新的样式。

当在 @keyframes 创建动画,把它绑定到一个选择器,否则动画不会有任何效果。

CSS3的动画属性

属性 描述 CSS
@keyframes 规定动画。 3
animation 所有动画属性的简写属性,除了 animation-play-state 属性。 3
animation-name 规定 @keyframes 动画的名称。 3
animation-duration 规定动画完成一个周期所花费的秒或毫秒。默认是 0。 3
animation-timing-function 规定动画的速度曲线。默认是 "ease"。 3
animation-delay 规定动画何时开始。默认是 0。 3
animation-iteration-count 规定动画被播放的次数。默认是 1。Infinite:无限循环 3
animation-direction 规定动画是否在下一周期逆向地播放。默认是 "normal"。 3
animation-play-state 规定动画是否正在运行或暂停。默认是 "running"、“paused”。 3

animation-timing-function

指定动画将如何完成一个周期。速度曲线定义动画从一套 CSS 样式变为另一套所用的时间。速度曲线用于使变化更为平滑。

描述
linear 动画从头到尾的速度是相同的。
ease 默认。动画以低速开始,然后加快,在结束前变慢。
ease-in 动画以低速开始。
ease-out 动画以低速结束。
ease-in-out 动画以低速开始和结束。
step-start 只显示动画第一帧
step-end 只显示动画最后一帧
cubic-bezier(n,n,n,n) 在 cubic-bezier 函数中自己的值。可能的值是从 0 到 1 的数值。

  1. #div1 {animation-timing-function:cubic-bezier(0,0,0.25,1);}
  2. #div2 {animation-timing-function:cubic-bezier(0.25,0.1,0.25,1);}
  3. #div3 {animation-timing-function:cubic-bezier(0.42,0,1,1);}
  4. #div4 {animation-timing-function:cubic-bezier(0,0,0.58,1);}
  5. #div5 {animation-timing-function:cubic-bezier(0.42,0,0.58,1);}
  6. #div1 {-webkit-animation-timing-function:cubic-bezier(0,0,0.25,1);}
  7. #div2 {-webkit-animation-timing-function:cubic-bezier(0.25,0.1,0.25,1);}
  8. #div3 {-webkit-animation-timing-function:cubic-bezier(0.42,0,1,1);}
  9. #div4 {-webkit-animation-timing-function:cubic-bezier(0,0,0.58,1);}
  10. #div5 {-webkit-animation-timing-function:cubic-bezier(0.42,0,0.58,1);}

animation-fill-mode

描述
none 默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。
forwards 在动画结束后(由 animation-iteration-count 决定),动画将应用该属性值。
backwards 动画将应用在 animation-delay 定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是 from 关键帧中的值(当 animation-direction 为 "normal" 或 "alternate" 时)或 to 关键帧中的值(当 animation-direction 为 "reverse" 或 "alternate-reverse" 时)。
both 动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性。

animation-direction 属性

描述
normal 默认值。动画按正常播放。
reverse 动画反向播放。
alternate 动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放。
alternate-reverse 动画在奇数次(1、3、5...)反向播放,在偶数次(2、4、6...)正向播放。

animation-play-state 属性

描述
paused 指定暂停动画
running 指定正在运行的动画

案例03

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>动画</title>
  6. <style>
  7. div {
  8. width: 100px;
  9. height: 100px;
  10. background: red;
  11. position: relative;
  12. animation: myfirst 5s;
  13. -webkit-animation: myfirst 5s;
  14. animation-iteration-count: infinite;
  15. }
  16. @keyframes myfirst {
  17. 0% {
  18. background: red;
  19. left: 0px;
  20. top: 0px;
  21. }
  22. 25% {
  23. background: yellow;
  24. left: 200px;
  25. top: 0px;
  26. }
  27. 50% {
  28. background: blue;
  29. left: 200px;
  30. top: 200px;
  31. }
  32. 75% {
  33. background: green;
  34. left: 0px;
  35. top: 200px;
  36. }
  37. 100% {
  38. background: red;
  39. left: 0px;
  40. top: 0px;
  41. }
  42. }
  43. @-webkit-keyframes myfirst
  44. /* Safari and Chrome */
  45. {
  46. 0% {
  47. background: red;
  48. left: 0px;
  49. top: 0px;
  50. }
  51. 25% {
  52. background: yellow;
  53. left: 200px;
  54. top: 0px;
  55. }
  56. 50% {
  57. background: blue;
  58. left: 200px;
  59. top: 200px;
  60. }
  61. 75% {
  62. background: green;
  63. left: 0px;
  64. top: 200px;
  65. }
  66. 100% {
  67. background: red;
  68. left: 0px;
  69. top: 0px;
  70. }
  71. }
  72. </style>
  73. </head>
  74. <body>
  75. <p><b>注意:</b> 该实例在 Internet Explorer 9 及更早 IE 版本是无效的。</p>
  76. <div></div>
  77. </body>
  78. </html>

效果展示

案例04

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style>
  7. div {
  8. width: 100px;
  9. height: 100px;
  10. background: red;
  11. position: relative;
  12. animation-name: myfirst;
  13. animation-duration: 5s;
  14. animation-timing-function: linear;
  15. animation-delay: 2s;
  16. animation-iteration-count: infinite;
  17. animation-direction: alternate;
  18. animation-play-state: running;
  19. -webkit-animation-name: myfirst;
  20. -webkit-animation-duration: 5s;
  21. -webkit-animation-timing-function: linear;
  22. -webkit-animation-delay: 2s;
  23. -webkit-animation-iteration-count: infinite;
  24. -webkit-animation-direction: alternate;
  25. -webkit-animation-play-state: running;
  26. }
  27. @keyframes myfirst {
  28. 0% {background: red;left: 0px;top: 0px;}
  29. 25% {background: yellow;left: 200px;top: 0px;}
  30. 50% {background: blue;left: 200px;top: 200px;}
  31. 75% {background: green;left: 0px;top: 200px;}
  32. 100% {background: red;left: 0px;top: 0px;}
  33. }
  34. @-webkit-keyframes myfirst{
  35. 0% {background: red;left: 0px;top: 0px;}
  36. 25% {background: yellow;left: 200px;top: 0px;}
  37. 50% {background: blue;left: 200px;top: 200px;}
  38. 75% {background: green;left: 0px;top: 200px;}
  39. 100% {background: red;left: 0px;top: 0px;}
  40. }
  41. </style>
  42. </head>
  43. <body>
  44. <p>注意:该实例在 Internet Explorer 9 及更早 IE 版本是无效的。</p>
  45. <div></div>
  46. </body>
  47. </html>

效果展示

CSS3 渐变(Gradients)

以前,你必须使用图像来实现这些效果。但是,通过使用 CSS3 渐变(gradients),你可以减少下载的事件和宽带的使用。此外,渐变效果的元素在放大时看起来效果更好,因为渐变(gradient)是由浏览器生成的。

CSS3 定义了两种类型的渐变(gradients):

  • 线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向
  • 径向渐变(Radial Gradients)- 由它们的中心定义

线性渐变

为了创建一个线性渐变,你必须至少定义两种颜色结点。颜色结点即你想要呈现平稳过渡的颜色。同时,你也可以设置一个起点和一个方向(或一个角度)。

语法

  1. background: linear-gradient(direction direction, color stop1, color stop2, ...);

线性渐变 - 从上到下(默认情况下)

案例05

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>渐变</title>
  6. <style>
  7. #grad1 {
  8. height: 200px;
  9. background: -webkit-linear-gradient(left top,red 20%, blue 80%);
  10. background: -o-linear-gradient(left top,red 20%, blue 80%);
  11. background: -moz-linear-gradient(left top,red 20%, blue 80%);
  12. background: linear-gradient(left top,red 20%, blue 80%);
  13. /* 标准的语法(必须放在最后) */
  14. }
  15. </style>
  16. </head>
  17. <body>
  18. <h3>线性渐变 - 从上到下</h3>
  19. <p>从顶部开始的线性渐变。起点是红色,慢慢过渡到蓝色:</p>
  20. <div id="grad1"></div>
  21. </body>
  22. </html>

效果图

使用角度

如果你想要在渐变的方向上做更多的控制,你可以定义一个角度,而不用预定义方向(to bottom、to top、to right、to left、to bottom right,等等)。

  1. background: linear-gradient(angle, color stop1, color stop2);

角度是指水平线和渐变线之间的角度,逆时针方向计算。

  1. #grad {
  2. background: -webkit-linear-gradient(180deg, red 30px, blue 120px);
  3. background: -o-linear-gradient(180deg, red 30px, blue 120px);
  4. background: -moz-linear-gradient(180deg, red 30px, blue 120px);
  5. background: linear-gradient(180deg, red 30px, blue 120px);
  6. }

重复的线性渐变

repeating-linear-gradient() 函数用于重复线性渐变:

  1. #grad {
  2. background: -webkit-repeating-linear-gradient(red, yellow 10%, green 20%);
  3. background: -o-repeating-linear-gradient(red, yellow 10%, green 20%);
  4. background: -moz-repeating-linear-gradient(red, yellow 10%, green 20%);
  5. background: repeating-linear-gradient(red, yellow 10%, green 20%);
  6. }

径向渐变

为了创建一个径向渐变,你也必须至少定义两种颜色结点。颜色结点即你想要呈现平稳过渡的颜色。同时,你也可以指定渐变的中心、形状(圆形或椭圆形)、大小。默认情况下,渐变的中心是 center(表示在中心点),渐变的形状是 ellipse(表示椭圆形),渐变的大小是 farthest-corner(表示到最远的角落)。

语法

  1. background: radial-gradient(position position, shape size, startColor size, ..., lastColor size);

径向渐变 - 颜色结点均匀分布(默认情况下)

设置形状

shape 参数定义了形状。它可以是值 circle 或 ellipse。其中,circle 表示圆形,ellipse 表示椭圆形。默认值是 ellipse。

size 参数定义了渐变的大小。它可以是以下四个值:

  • closest-side - 靠近最近的边
  • farthest-side - 靠近最远的边
  • closest-corner - 靠近最近的角
  • farthest-corner - 靠近最远的角

  1. #grad1 {
  2. background: -webkit-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
  3. background: -o-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
  4. background: -moz-radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
  5. background: radial-gradient(60% 55%, closest-side,blue,green,yellow,black);
  6. }

重复的径向渐变

repeating-radial-gradient() 函数用于重复径向渐变:

  1. #grad {
  2. background: -webkit-repeating-radial-gradient(red, yellow 10%, green 15%);
  3. background: -o-repeating-radial-gradient(red, yellow 10%, green 15%);
  4. background: -moz-repeating-radial-gradient(red, yellow 10%, green 15%);
  5. background: repeating-radial-gradient(red, yellow 10%, green 15%);
  6. }

CSS3 媒体查询

CSS3 的多媒体查询继承了 CSS2 多媒体类型的所有思想: 取代了查找设备的类型,CSS3 根据设置自适应显示。

媒体查询可用于检测很多事情,例如:

  • viewport(视窗) 的宽度与高度
  • 设备的宽度与高度
  • 朝向 (智能手机横屏,竖屏)
  • 分辨率

目前很多针对苹果手机,Android 手机,平板等设备都会使用到多媒体查询。

  1. @media not|only mediatype and (expressions) { CSS 代码...; }

CSS3 多媒体类型

描述
all 用于所有多媒体类型设备
print 用于打印机
screen 用于电脑屏幕,平板,智能手机等。
speech 用于屏幕阅读器CSS3 多媒体类型

CSS3 多媒体参数类型

描述
not not是用来排除掉某些特定的设备的,比如 @media not print(非打印设备)
only 用来定某种特别的媒体类型。对于支持Media Queries的移动设备来说,如果存在only关键字,移动设备的Web浏览器会忽略only关键字并直接根据后面的表达式应用样式文件。对于不支持Media Queries的设备但能够读取Media Type类型的Web浏览器,遇到only关键字时会忽略这个样式文件。
all 所有设备,这个应该经常看到。

也可以在不同的媒体上使用不同的样式文件:

  1. <link rel="stylesheet" media="mediatype and|not|only (expressions)" href="print.css">

常用尺寸

常用于图片流

  1. @media all and (max-width: 1690px) { ... }
  2. @media all and (max-width: 1280px) { ... }
  3. @media all and (max-width: 980px) { ... }
  4. @media all and (max-width: 736px) { ... }
  5. @media all and (max-width: 480px) { ... }

常用于稍微复杂的基本响应

  1. @media all and (min-width:1200px){ ... }
  2. @media all and (min-width: 960px) and (max-width: 1199px) { ... }
  3. @media all and (min-width: 768px) and (max-width: 959px) { ... }
  4. @media all and (min-width: 480px) and (max-width: 767px){ ... }
  5. @media all and (max-width: 599px) { ... }
  6. @media all and (max-width: 479px) { ... }

基于Bootstrap 3.x 全球主流框架

  1. @media all and (max-width: 991px) { ... }
  2. @media all and (max-width: 768px) { ... }
  3. @media all and (max-width: 480px) { ... }

基于Bootstrap 4.x 全球主流框架

  1. @media (min-width: 576px) { ... }
  2. @media (min-width: 768px) { ... }
  3. @media (min-width: 992px) { ... }
  4. @media (min-width: 1200px) { ... }

移动端页面制作字号大小设定问题,设计稿文字字号规范,解决移动端大小屏适配问题

  1. 逻辑分辨率:320*480 《==》 物理分辨率:640*690 最小字号:12px
  2. 逻辑分辨率:320*658 《==》 物理分辨率:640*1136 最小字号:12px
  3. 逻辑分辨率:375*667 《==》 物理分辨率:750*1334 最小字号:14px(13.5px)
  4. 逻辑分辨率:414*736 《==》 物理分辨率:1242*22081080*1920 最小字号:15px
  5. 前端按照逻辑分辨率设字号大小《==》rem进行适配移动端大小屏幕;

  1. @media screen and (min-width: 480px) {
  2. body {
  3. background-color: lightgreen;
  4. }
  5. }

在屏幕可视窗口尺寸大于 480 像素的设备上修改背景颜色

案例06

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>媒体查询</title>
  6. <style>
  7. ul {
  8. list-style-type: none;
  9. }
  10. ul li a {
  11. color: green;
  12. text-decoration: none;
  13. padding: 3px;
  14. display: block;
  15. }
  16. @media screen and (min-width: 240px) and (max-width: 320px),(min-width: 700px) {
  17. ul li a {
  18. padding-left: 30px;
  19. color: blue;
  20. background: url(image/email-icon.png) left center no-repeat;
  21. }
  22. }
  23. @media screen and (min-width: 320px) and (max-width: 480px) {
  24. ul li a {
  25. color: red;
  26. }
  27. ul li a:before {
  28. content: "邮箱:";
  29. font-style: italic;
  30. color: #666666;
  31. }
  32. }
  33. @media screen and (min-width: 480px) and (max-width: 640px) {
  34. ul li a:before {
  35. content: "邮箱:";
  36. font-style: italic;
  37. color: lightcoral;
  38. }
  39. ul li a:after {
  40. content: " (" attr(data-email) ")";
  41. font-size: 12px;
  42. font-style: italic;
  43. color: #666666;
  44. }
  45. }
  46. @media screen and (min-width: 640px) {
  47. ul li a:before {
  48. content: "邮箱:";
  49. font-style: italic;
  50. color: lightcoral;
  51. padding-left: 30px;
  52. background: url(image/email-icon.png) left center no-repeat;
  53. }
  54. ul li a:after {
  55. content: " (" attr(data-email) ")";
  56. font-size: 12px;
  57. font-style: italic;
  58. color: #666666;
  59. }
  60. }
  61. </style>
  62. </head>
  63. <body>
  64. <ul>
  65. <li><a data-email="johndoe@qq.com" href="mailto:johndoe@qq.com">张三</a></li>
  66. <li><a data-email="marymoe@qq.com" href="mailto:marymoe@qq.com">李四</a></li>
  67. <li><a data-email="amandapanda@qq.com" href="mailto:amandapanda@qq.com">王五</a></li>
  68. </ul>
  69. </body>
  70. </html>

效果图

Animate.css插件

Animate.css是某位大牛写好的动画效果集合,需要的时候可以直接下载导入到项目中,在需要的元素上添加相关的类即可使用相对应的动画效果。

下载地址:https://animate.style/

下载后引入到html文件中即可使用。

使用:

  1. <div id="test" class="animated infinite bounce ">bounce</div>

  • animated:表示使用Animate.css的动画
  • infinite:表示动画效果无限循环
  • bounce:是动画效果

动画效果有很多,下面的案例就展示了各种动画效果

案例07

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <link rel="stylesheet" type="text/css" href="css/animate.min.css" />
  7. <style type="text/css">
  8. #content{
  9. padding-top: 20%;
  10. }
  11. #test {
  12. width: 50%;
  13. line-height: 100px;
  14. margin: auto;
  15. background-color: rgba(10, 10, 10, 0.2);
  16. text-align: center;
  17. }
  18. select{
  19. display: block;
  20. height: 45px;
  21. margin: auto;
  22. }
  23. </style>
  24. <script type="text/javascript">
  25. window.onload = function(){
  26. document.getElementById('select').onchange = function(){
  27. val = this.options[this.selectedIndex].value;
  28. document.getElementById('test').setAttribute('class','animated infinite '+val);
  29. }
  30. }
  31. </script>
  32. </head>
  33. <body>
  34. <div id="content">
  35. <div id="test">bounce</div>
  36. </div>
  37. <select id="select">
  38. <optgroup label="Attention Seekers">
  39. <option value="bounce">bounce</option>
  40. <option value="flash">flash</option>
  41. <option value="pulse">pulse</option>
  42. <option value="rubberBand">rubberBand</option>
  43. <option value="shake">shake</option>
  44. <option value="swing">swing</option>
  45. <option value="tada">tada</option>
  46. <option value="wobble">wobble</option>
  47. <option value="jello">jello</option>
  48. </optgroup>
  49. <optgroup label="Bouncing Entrances">
  50. <option value="bounceIn">bounceIn</option>
  51. <option value="bounceInDown">bounceInDown</option>
  52. <option value="bounceInLeft">bounceInLeft</option>
  53. <option value="bounceInRight">bounceInRight</option>
  54. <option value="bounceInUp">bounceInUp</option>
  55. </optgroup>
  56. <optgroup label="Bouncing Exits">
  57. <option value="bounceOut">bounceOut</option>
  58. <option value="bounceOutDown">bounceOutDown</option>
  59. <option value="bounceOutLeft">bounceOutLeft</option>
  60. <option value="bounceOutRight">bounceOutRight</option>
  61. <option value="bounceOutUp">bounceOutUp</option>
  62. </optgroup>
  63. <optgroup label="Fading Entrances">
  64. <option value="fadeIn">fadeIn</option>
  65. <option value="fadeInDown">fadeInDown</option>
  66. <option value="fadeInDownBig">fadeInDownBig</option>
  67. <option value="fadeInLeft">fadeInLeft</option>
  68. <option value="fadeInLeftBig">fadeInLeftBig</option>
  69. <option value="fadeInRight">fadeInRight</option>
  70. <option value="fadeInRightBig">fadeInRightBig</option>
  71. <option value="fadeInUp">fadeInUp</option>
  72. <option value="fadeInUpBig">fadeInUpBig</option>
  73. </optgroup>
  74. <optgroup label="Fading Exits">
  75. <option value="fadeOut">fadeOut</option>
  76. <option value="fadeOutDown">fadeOutDown</option>
  77. <option value="fadeOutDownBig">fadeOutDownBig</option>
  78. <option value="fadeOutLeft">fadeOutLeft</option>
  79. <option value="fadeOutLeftBig">fadeOutLeftBig</option>
  80. <option value="fadeOutRight">fadeOutRight</option>
  81. <option value="fadeOutRightBig">fadeOutRightBig</option>
  82. <option value="fadeOutUp">fadeOutUp</option>
  83. <option value="fadeOutUpBig">fadeOutUpBig</option>
  84. </optgroup>
  85. <optgroup label="Flippers">
  86. <option value="flip">flip</option>
  87. <option value="flipInX">flipInX</option>
  88. <option value="flipInY">flipInY</option>
  89. <option value="flipOutX">flipOutX</option>
  90. <option value="flipOutY">flipOutY</option>
  91. </optgroup>
  92. <optgroup label="Lightspeed">
  93. <option value="lightSpeedIn">lightSpeedIn</option>
  94. <option value="lightSpeedOut">lightSpeedOut</option>
  95. </optgroup>
  96. <optgroup label="Rotating Entrances">
  97. <option value="rotateIn">rotateIn</option>
  98. <option value="rotateInDownLeft">rotateInDownLeft</option>
  99. <option value="rotateInDownRight">rotateInDownRight</option>
  100. <option value="rotateInUpLeft">rotateInUpLeft</option>
  101. <option value="rotateInUpRight">rotateInUpRight</option>
  102. </optgroup>
  103. <optgroup label="Rotating Exits">
  104. <option value="rotateOut">rotateOut</option>
  105. <option value="rotateOutDownLeft">rotateOutDownLeft</option>
  106. <option value="rotateOutDownRight">rotateOutDownRight</option>
  107. <option value="rotateOutUpLeft">rotateOutUpLeft</option>
  108. <option value="rotateOutUpRight">rotateOutUpRight</option>
  109. </optgroup>
  110. <optgroup label="Sliding Entrances">
  111. <option value="slideInUp">slideInUp</option>
  112. <option value="slideInDown">slideInDown</option>
  113. <option value="slideInLeft">slideInLeft</option>
  114. <option value="slideInRight">slideInRight</option>
  115. </optgroup>
  116. <optgroup label="Sliding Exits">
  117. <option value="slideOutUp">slideOutUp</option>
  118. <option value="slideOutDown">slideOutDown</option>
  119. <option value="slideOutLeft">slideOutLeft</option>
  120. <option value="slideOutRight">slideOutRight</option>
  121. </optgroup>
  122. <optgroup label="Zoom Entrances">
  123. <option value="zoomIn">zoomIn</option>
  124. <option value="zoomInDown">zoomInDown</option>
  125. <option value="zoomInLeft">zoomInLeft</option>
  126. <option value="zoomInRight">zoomInRight</option>
  127. <option value="zoomInUp">zoomInUp</option>
  128. </optgroup>
  129. <optgroup label="Zoom Exits">
  130. <option value="zoomOut">zoomOut</option>
  131. <option value="zoomOutDown">zoomOutDown</option>
  132. <option value="zoomOutLeft">zoomOutLeft</option>
  133. <option value="zoomOutRight">zoomOutRight</option>
  134. <option value="zoomOutUp">zoomOutUp</option>
  135. </optgroup>
  136. <optgroup label="Specials">
  137. <option value="hinge">hinge</option>
  138. <option value="jackInTheBox">jackInTheBox</option>
  139. <option value="rollIn">rollIn</option>
  140. <option value="rollOut">rollOut</option>
  141. </optgroup>
  142. </select>
  143. </body>
  144. </html>

效果展示

Wow.js插件

Wow.js是javascript动画插件,经常配合animate.css一起使用。动画效果会在元素第一次出现在页面中时起作用。

下载地址:https://www.delac.io/WOW/

Wow.js的使用方法

  • 引入wow.js
  • 在需要使用的元素上添加class=”wow”
  • 使用js初始化

案例08

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. <link rel="stylesheet" type="text/css" href="css/animate.min.css" />
  7. <script src="js/wow.min.js" type="text/javascript" charset="utf-8"></script>
  8. <style type="text/css">
  9. #content {
  10. padding-top: 20%;
  11. }
  12. #test {
  13. width: 50%;
  14. line-height: 100px;
  15. margin: auto;
  16. background-color: rgba(10, 10, 10, 0.2);
  17. text-align: center;
  18. }
  19. </style>
  20. <script type="text/javascript">
  21. var wow = new WOW({
  22. boxClass: 'wow', // 动画使用的class
  23. animateClass: 'animated infinite', // 附加的class
  24. offset: 0, // 当元素进入页面多少位置的时候开始动画,默认0
  25. mobile: true, // 是否在移动设备上显示动画效果,默认true
  26. live: true, // 是否异步加载内容,默认true
  27. callback: function(box) {},
  28. scrollContainer: null
  29. });
  30. wow.init();
  31. </script>
  32. </head>
  33. <body>
  34. <div id="content">
  35. <div id="test" class="wow bounce">bounce</div>
  36. </div>
  37. </body>
  38. </html>

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号