123 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			123 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: CSS3 Transitions | |||
|  | localeTitle: CSS3过渡 | |||
|  | --- | |||
|  | ## CSS3过渡
 | |||
|  | 
 | |||
|  | 如果您希望您的应用或网页更具动态性和美观,则使用CSS3 **过渡**非常有用。 | |||
|  | 
 | |||
|  | 实际上,转换允许您以**平滑的**方式更改属性( `width` , `color` ,...)值。 | |||
|  | 
 | |||
|  | `transition`属性是`transition-property` , `transition-duration` , `transition-timing-function` , `transition-delay`的简写属性,语法如下: | |||
|  | 
 | |||
|  | ```css | |||
|  | transition: transition-property transition-duration transition-timing-function transition-delay  | |||
|  | ``` | |||
|  | 
 | |||
|  | 例如 : | |||
|  | ``` | |||
|  | transition: width 2s ease-in-out 1s;  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### 属性描述
 | |||
|  | 
 | |||
|  | #### `transition-property`
 | |||
|  | 
 | |||
|  | 指定应应用转换的属性的**名称** : | |||
|  | 
 | |||
|  | *   `background-color` | |||
|  | *   `color` | |||
|  | *   `width` | |||
|  | *   `height` | |||
|  | *   `margin` | |||
|  | *   `border-radius` | |||
|  | *   等等 ! | |||
|  | 
 | |||
|  | 例如 : | |||
|  | ``` | |||
|  | transition-property: width; /* means the transition applies on the width */  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### `transition-duration`
 | |||
|  | 
 | |||
|  | 指定转换应**采用** **的秒数或毫秒数** : | |||
|  | 
 | |||
|  | 例如 : | |||
|  | ``` | |||
|  | transition-duration: 2s /* means the transition effect last 2s */  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### `transition-timing-function`
 | |||
|  | 
 | |||
|  | 指定过渡效果的**速度曲线** 。因此,您可以**在其持续时间内**更改**转换的速度** 。 | |||
|  | 
 | |||
|  | 以下是最常用的值: | |||
|  | 
 | |||
|  | *   `linear` | |||
|  | *   `ease` | |||
|  | *   `ease-in` | |||
|  | *   `ease-out` | |||
|  | *   `ease-in-out` | |||
|  | *   `cubic-bezier(n, n, n, n)` | |||
|  | 
 | |||
|  | 例如 : | |||
|  | 
 | |||
|  | ```css | |||
|  | transition-timing-function: linear  | |||
|  | ``` | |||
|  | 
 | |||
|  | 注意:上面的所有值实际上都是特定的`cubic-bezier` 。例如, `linear`相当于`cubic-bezier(0.25,0.1,0.25,1)` | |||
|  | 
 | |||
|  | 您可以[在这里](http://cubic-bezier.com/)试验并了解有关_Cubic Bezier的_更多信息 | |||
|  | 
 | |||
|  | #### `transition-delay`
 | |||
|  | 
 | |||
|  | 转换**开始**时以**秒或毫秒**指定。 | |||
|  | 
 | |||
|  | 例如 : | |||
|  | ``` | |||
|  | transition-delay: 1s /* means wait 1s before the transition effect start */  | |||
|  | ``` | |||
|  | 
 | |||
|  | ### 如何使用过渡?
 | |||
|  | 
 | |||
|  | 您可以通过两种方式编写转换: | |||
|  | 
 | |||
|  | #### 使用速记属性( `transition` )
 | |||
|  | 
 | |||
|  | ```css | |||
|  | div {  | |||
|  |   width: 200px;  | |||
|  |   transition: all 1s ease-in-out;  | |||
|  |  }  | |||
|  |   | |||
|  |  div:hover {  | |||
|  |   width: 300px;  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | #### 为所有过渡属性赋予值
 | |||
|  | 
 | |||
|  | ```css | |||
|  | div {  | |||
|  |   width: 200px;  | |||
|  |   transition-property: width;  | |||
|  |   transition-duration: 1s;  | |||
|  |   transition-timing-function: ease-in-out;  | |||
|  |  }  | |||
|  | ``` | |||
|  | 
 | |||
|  | 注意:两个例子都是**等价的** | |||
|  | 
 | |||
|  | ### 例子
 | |||
|  | 
 | |||
|  | 以下是一些包含简单过渡的简单笔: | |||
|  | 
 | |||
|  | *   [基本过渡](https://codepen.io/thomlom/pen/gGqzNp) | |||
|  | *   [过渡+ JavaScript](https://codepen.io/thomlom/pen/JrxZKz?editors=1111) | |||
|  | 
 | |||
|  | #### 更多信息:
 | |||
|  | 
 | |||
|  | *   [w3schools:CSS3过渡](https://www.w3schools.com/css/css3_transitions.asp) | |||
|  | *   [MDN Web文档:使用CSS过渡](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions) | |||
|  | *   [DevTips:CSS Transition](https://www.youtube.com/watch?v=8kK-cA99SA0) |