按下右側的「點擊預覽」按鈕能夠在當前頁面預覽,點擊連接能夠全屏預覽。css
https://codepen.io/comehope/pen/QrxxaWhtml
此視頻是能夠交互的,你能夠隨時暫停視頻,編輯視頻中的代碼。git
請用 chrome, safari, edge 打開觀看。github
https://scrimba.com/p/pEgDAM/cgRgQHrchrome
請從 github 下載。dom
https://github.com/comehope/front-end-daily-challenges/tree/master/021-a-text-sliding-effect-uiflex
定義 dom,容器中包含 question 和 answer:動畫
<div> <p> <span class="question">Who gives you milk?</span> <span class="answer">cow</span> </p> </div>
居中顯示:ui
html, body { height: 100%; display: flex; align-items: center; justify-content: center; background: darkcyan; }
設置文本樣式:spa
p { width: 400px; height: 2.5em; color: gold; font-size: 24px; border: 2px solid gold; line-height: 2.5em; text-align: center; border-radius: 10px; font-family: sans-serif; letter-spacing: 2px; word-spacing: 2px; box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.2); }
設置答案的樣式:
p { position: relative; } p span { position: absolute; width: 100%; top: 0; left: 0; } p .answer { color: whitesmoke; font-size: 1.1em; text-transform: uppercase; background: rgba(0, 0, 0, 0.1); }
增長問題與答案滑動切換的動畫效果:
p { overflow: hidden; } p span { transition: 0.5s ease-out; } p .question { left: 0; } p:hover .question { left: 100%; } p .answer { left: -100%; } p:hover .answer { left: 0; }
dom 中再增長 2 個問題:
<div> <p> <span class="question">Who gives you milk?</span> <span class="answer">cow</span> </p> <p> <span class="question">Who likes to eat flies?</span> <span class="answer">frog</span> </p> <p> <span class="question">Who have large claws?</span> <span class="answer">crab</span> </p> </div>
dom 中增長標題:
<div> <h1>Who Am I</h1> <p> <span class="question">Who gives you milk?</span> <span class="answer">cow</span> </p> <p> <span class="question">Who likes to eat flies?</span> <span class="answer">frog</span> </p> <p> <span class="question">Who have large claws?</span> <span class="answer">crab</span> </p> </div>
設置標題樣式:
h1 { font-family: sans-serif; color: gold; text-align: center; }
最後,用僞元素增長大問號做爲裝飾背景:
h1 { position: relative; } h1::after { content: '?'; position: absolute; top: -0.35em; left: 0; font-size: 25em; transform: rotate(15deg); color: cyan; filter: opacity(0.3); text-shadow: 10px 10px 10px rgba(0, 0, 0, 0.2); }