按下右側的「點擊預覽」按鈕能夠在當前頁面預覽,點擊連接能夠全屏預覽。css
https://codepen.io/zhang-ou/pen/GdpPLEhtml
此視頻是能夠交互的,你能夠隨時暫停視頻,編輯視頻中的代碼。git
請用 chrome, safari, edge 打開觀看。github
https://scrimba.com/c/c4vdvcLchrome
請從 github 下載。dom
定義 dom,在一個容器中定義按鈕的文字,每一個字母一個 span,每一個 span 有一個 data-text 屬性,其值與 span 內的字母相同:動畫
<div class="box"> <span data-text="B">B</span> <span data-text="U">U</span> <span data-text="T">T</span> <span data-text="T">T</span> <span data-text="O">O</span> <span data-text="N">N</span> </div>
按鈕居中:spa
html, body { height: 100%; display: flex; align-items: center; justify-content: center; }
設置按鈕的尺寸和文字樣式:code
.box { width: 200px; height: 60px; border: 2px solid black; text-align: center; font-size: 30px; line-height: 60px; font-family: sans-serif; }
按鈕的每一個字母都設置爲行內塊元素,以便單獨設置動效:
.box span { display: inline-block; color: blue; }
把字母交錯地顯示在按鈕容器以外,第奇數個元素顯示在上,第偶數個元素顯示在下:
.box span:nth-child(odd) { transform: translateY(-100%); } .box span:nth-child(even) { transform: translateY(100%); }
用僞元素爲每一個字母增長一個副本:
.box span::before { content: attr(data-text); position: absolute; color: red; }
讓僞元素的字母也交錯顯示,位置與其原始元素相對:
.box span:nth-child(odd)::before { transform: translateY(100%); } .box span:nth-child(even)::before { transform: translateY(-100%); }
爲按鈕增長鼠標劃過樣式,設置緩動時間,使其有動畫效果:
.box:hover span { transform: translateY(0); } .box span { transition: 0.5s; }
最後,隱藏容器外的內容:
.box { overflow: hidden; }
大功告成!