按下右側的「點擊預覽」按鈕能夠在當前頁面預覽,點擊連接能夠全屏預覽。css
https://codepen.io/comehope/pen/BxbQJjhtml
此視頻是能夠交互的,你能夠隨時暫停視頻,編輯視頻中的代碼。前端
請用 chrome, safari, edge 打開觀看。git
https://scrimba.com/c/crvq8hqgithub
每日前端實戰系列的所有源代碼請從 github 下載:chrome
https://github.com/comehope/front-end-daily-challengesdom
定義 dom,一個容器中包含 4 個子元素,每一個子元素的內容就是一堆斜線:flex
<div class="frame"> <div class="wall top"><marquee>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</marquee></div> <div class="wall right"><marquee>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</marquee></div> <div class="wall bottom"><marquee>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</marquee></div> <div class="wall left"><marquee>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</marquee></div> </div>
居中顯示:spa
body { height: 100%; display: flex; align-items: center; justify-content: center; }
定義容器尺寸:3d
.frame { width: 100vmin; height: 100vmin; background-color: whitesmoke; }
隱藏超出容器的內容:
.wall { overflow: hidden; }
把 4 個元素向四個方向旋轉,互相垂直:
.wall { transform-origin: 0 0; } .wall.top { transform: rotate(0deg); } .wall.right { transform: rotate(90deg); } .wall.bottom { transform: rotate(180deg); } .wall.left { transform: rotate(270deg); }
定位它們,造成一個正方形:
.frame { position: relative; } .wall { position: absolute; width: 100%; } .wall.top { top: 0; left: 0; } .wall.right { top: 0; left: 100%; } .wall.bottom { top: 100%; left: 100%; } .wall.left { top: 100%; left: 0; }
對 4 個元素進行 3d 旋轉:
.frame { perspective: 40vmin; } .wall.top { transform: rotate(0deg) rotateX(-90deg); } .wall.right { transform: rotate(90deg) rotateX(-90deg); } .wall.bottom { transform: rotate(180deg) rotateX(-90deg); } .wall.left { transform: rotate(270deg) rotateX(-90deg); }
把斜線加粗、放大:
.wall { font-size: 75vmin; font-weight: bold; }
最後,把 dom 中的斜線用 <marquee> 標籤包圍起來:
<div class="frame"> <div class="wall top"><marquee>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</marquee></div> <div class="wall right"><marquee>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</marquee></div> <div class="wall bottom"><marquee>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</marquee></div> <div class="wall left"><marquee>////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////</marquee></div> </div>
大功告成!