標籤:情境 中心 scale 中間 時間 統一 狀態 小數 css3
前言:今天又是一個周末,心情不錯,趁著閑暇之餘,把剩下來的CSS3學習的內容全部整理出來,練慣用的源碼也稍微整理了一下。
2D轉換
transform:translate||rotate||scale||skew
平移、旋轉、縮放、斜切
1. 平移 transform:translate()
參數說明:
- 只有一個值的情況下,表示水平方向運動,正值向右,負值向左,也可以接受百分比,百分比參照的是自身的寬,高
- 兩個值分別控制水平和垂直
- 移動不會影響其他的元素,類似於相對定位
- 我們可以通過盒子的絕對位置配合transform:translate(-50%,-50%)實現一個沒有寬度高度的盒子水平垂直置中 ,如果沒有寬度的話,盒子最大的寬只能達到父盒子的一半
- 如果想要單個的方向移動 可以寫成 translateX()和translateY()
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> .box{ width: 200px; height: 200px; background-color: pink; } .box:hover{ /* transform: translate(-10px,10px); */ /* transform: translateY(-10px); */ transform: translateY(10%); } </style></head><body> <div class="box">1</div> <div class="box">2</div></body></html>
2. 旋轉 transform:rotate()
參數說明:
- 單位是deg 角度
- 整體發生旋轉(包括裡面的內容)
- 正值是順時針方向旋轉 負值反之
- 中心點可以控制 transform-origin:值(值可以是方位名詞,可以是像素,也可以是百分比,參照的是自身的寬高)
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> .box{ width: 200px; height: 200px; background-color: pink; margin: 100px auto; transition: all 10s; transform-origin: 50% 50%; } .box:hover{ transform: rotate(-50deg); } </style></head><body> <div class="box">1</div></body></html>
3.縮放 transform:scale()
參數說明:
- 沒有單位,接受數值和小數
- 只有一個值的情況,整體縮放(等比例)
- 兩個值的情況,寬度和高度分別縮放(可能會變形)
- 邊框也是會縮放的,並且如果想要一個方向縮放,另外一個方向需要寫一個1
- 縮放的中心點也可以被控制
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> .box{ width: 200px; height: 200px; background-color: pink; margin: 100px auto; transition: all 1s; border: 5px solid #000; transform-origin: right; } .box:hover{ transform: scale(2,1); } </style></head><body> <div class="box">1</div></body></html>
4.斜切 transform:skew()
參數說明:
- 單位是deg
- 只有一個值的情況下,水平斜切
- 兩個值的情況下,水平垂直分別斜切
- 斜切的中心點也可以被控制 如果是X軸斜切 中心點控制上下 如果是Y軸斜切 中心點控制左右
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> .box{ width: 200px; height: 200px; background-color: pink; margin: 100px auto; transition: all 1s; border: 5px solid #000; transform-origin: bottom; } .box:hover{ transform: skew(45deg); } </style></head><body> <div class="box">1</div></body></html>
5.過渡 transition
transition:屬性 期間 過渡曲線 延時
過渡不是動畫,是由css的一種狀態到另外一種狀態中間變換的過程。
值說明:
- 那個屬性需要過渡就寫什麼屬性 可以用all來代替全部 (必寫)
- 過渡持續的時間,單位可以s或者是ms (必寫)
- 過渡的曲線
- 過渡從延時多長時間開始
6.2D轉換總結
- 移動,斜切,放大都是可以通過X或者Y去控制某一個方向
- 中心點可以控制旋轉,縮放,斜切
- 如果我們想要多個2D效果共存,需要採用連寫的方式
- 當在不同情境出現需要transfrom的時候,需要複製前面已經存在的,防止覆蓋
- Transform的轉換效果順序盡量保持統一,如果不統一會出現一些問題
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> .box{ width: 200px; height: 200px; background-color: pink; transition: all 1s; border: 5px solid #000; position: absolute; left: 50%; top: 50%; transform:translate(-50%,-50%) rotate(0deg) scale(1); } .box:hover{ transform:translate(-50%,-50%) rotate(360deg) scale(2); } </style></head><body> <div class="box">1</div></body></html>
CSS學習筆記2-2d變換和過渡屬性