按下右側的「點擊預覽」按鈕能夠在當前頁面預覽,點擊連接能夠全屏預覽。css
https://codepen.io/comehope/pen/zaqKPxhtml
此視頻是能夠交互的,你能夠隨時暫停視頻,編輯視頻中的代碼。前端
請用 chrome, safari, edge 打開觀看。vue
https://scrimba.com/p/pEgDAM/cw9WzuVgit
每日前端實戰系列的所有源代碼請從 github 下載:github
https://github.com/comehope/front-end-daily-challengeschrome
定義 dom,一個容器中包含 3 個子元素:dom
<div class="vue"> <span class="outer"></span> <span class="middle"></span> <span class="inner"></span> </div>
居中顯示:flex
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; background: radial-gradient(circle at center,lightgreen, white); }
定義 3 層三角形的尺寸:動畫
:root { --outer-w: 49em; --outer-h: 40em; --middle-w: 32em; --middle-h: 26em; --inner-w: 16em; --inner-h: 13em; }
定義容器的尺寸:
.vue { width: var(--outer-w); height: var(--outer-h); font-size: 8px; }
畫出 3 層三角形:
.vue { position: relative; display: flex; justify-content: center; } .outer, .medium, .inner { position: absolute; border-style: solid; border-color: transparent; border-top-width: var(--h); border-top-color: var(--c); border-left-width: calc(var(--w) / 2); border-right-width: calc(var(--w) / 2); } .outer { --w: var(--outer-w); --h: var(--outer-h); --c: #42b883; /* aragon green */ } .middle { --w: var(--middle-w); --h: var(--middle-h); --c: #35495e; /* derk denim */ } .inner { --w: var(--inner-w); --h: var(--inner-h); --c: white; }
定義動畫效果:
.outer, .middle, .inner { animation: animate 3s in ease-out infinite; } .middle { animation-delay: 0.1s; } .inner { animation-delay: 0.2s; } @keyframes animate { 0%, 5% { top: -100%; } 15%, 80% { top: 0; filter: opacity(1); transform: scale(1); } 90%, 100% { top: 100%; filter: opacity(0); transform: scale(0); } }
最後,隱藏容器外的內容:
.vue { overflow: hidden; }
大功告成!