摘要:可交互視頻此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。上部下部源代碼下載每日前端實戰系列的全部源代碼請從下載代碼解讀定義,容器包含個元素,分別代表紙張尺子記事本日歷和鉛筆。
效果預覽
按下右側的“點擊預覽”按鈕可以在當前頁面預覽,點擊鏈接可以全屏預覽。
https://codepen.io/comehope/pen/oMgmwB
可交互視頻此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。
請用 chrome, safari, edge 打開觀看。
上部:
https://scrimba.com/p/pEgDAM/cEb3nhK
下部:
https://scrimba.com/p/pEgDAM/cqwzqAR
每日前端實戰系列的全部源代碼請從 github 下載:
https://github.com/comehope/front-end-daily-challenges
代碼解讀定義 dom,容器包含 5 個元素,分別代表紙張、尺子、記事本、日歷和鉛筆。
居中顯示:
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; }
定義容器尺寸:
.desk { width: 70em; height: 70em; font-size: 5px; position: relative; }
定義各元素的共有屬性:
.desk { --b: 1em solid darkslategray; } .desk * { position: absolute; border: var(--b); box-sizing: border-box; } .desk *::before, .desk *::after { content: ""; position: absolute; box-sizing: border-box; }
畫出紙張的輪廓:
.paper { width: 24em; height: 30em; color: skyblue; background-color: currentColor; border-radius: 0 0 0 3em; top: 14em; left: 4em; }
畫出紙張左側卷曲的部分:
.paper::before { width: 4em; height: 32em; background-color: currentColor; border: var(--b); filter: saturate(150%) brightness(0.9); bottom: 1.6em; left: -1em; border-radius: 3em 0 3em 0; } .paper::after { width: 4em; height: 5em; background-color: currentColor; border: var(--b); bottom: -1em; left: -1em; border-radius: 2.5em 0 0 2.5em; border-right: none; }
畫出尺子的輪廓:
.ruler { width: 6em; height: 24em; background: linear-gradient( to right, peru 30%, sandybrown 30% ); top: 8em; left: 14em; transform: rotate(25deg); }
畫出尺子上的長刻度線:
.ruler::before { width: 2em; height: calc(100% - 3em); background-image: linear-gradient(darkslategray 1em, transparent 0); background-size: 4em 4em; top: 1em; }
畫出尺子上的短刻度線:
.ruler::after { width: 1em; height: calc(100% - 3em); background-image: linear-gradient(darkslategray 1em, transparent 0); background-size: 4em 4em; top: 3em; }
畫出日歷的輪廓:
.calendar { width: 28em; height: 28em; background: linear-gradient(coral 30%, white 30%); border-radius: 2em; top: 14em; right: 4em; transform: rotate(15deg); }
畫出日歷頂部的轉軸:
.calendar::before { width: 3em; height: 4em; color: sandybrown; background-color: currentColor; top: -2em; left: 4em; border-radius: 100% 100% 50% 50%; box-shadow: 0 0, 0 0 0 1em darkslategray, 15em 0, 15em 0 0 1em darkslategray; }
畫出日歷上的日期:
.calendar::after { width: 3em; height: 3em; color: silver; background-color: silver; top: 10em; left: 4em; border-radius: 0.4em; box-shadow: 0 0, 5em 0, 10em 0, 15em 0, 0 5em, 5em 5em, 10em 5em, 15em 5em, 0 10em, 5em 10em, 10em 10em, 15em 10em; }
畫出記事本的輪廓:
.notebook { width: 26em; height: 34em; background: linear-gradient( to right, tomato 12%, coral 12%, coral 60%, darkslategray 60%, darkslategray 64%, sandybrown 64%, sandybrown 78%, darkslategray 78%, darkslategray 82%, coral 82% ); border-radius: 3em; bottom: 8em; left: 20em; }
畫出記事本的底部:
.notebook::before { width: inherit; height: 5em; background-color: white; border: var(--b); bottom: -1em; left: -1em; border-radius: 3em 0 3em 3em; }
畫出記事本的書簽:
.notebook::after { width: 4em; height: 5em; background-color: coral; border: var(--b); bottom: -3em; left: 4em; border-top: none; border-radius: 0 0 1em 1em; }
畫出鉛筆的輪廓:
.pencil { width: 6em; height: 12em; background: linear-gradient( coral 20%, darkslategray 20%, darkslategray 25%, sandybrown 25% ); border-radius: 0.8em; bottom: 14em; right: 13em; transform: rotate(-35deg); }
畫出鉛筆的筆尖:
.pencil::before { border: 3em solid transparent; border-top-color: darkslategray; bottom: -6.5em; left: -1em; } .pencil::after { border: 2em solid transparent; border-top-color: sandybrown; bottom: -4.5em; left: 0; }
增加鼠標懸停效果,把物品都推向桌面的邊緣:
.desk * { transition: 1s; } .desk:hover .paper { top: 0; left: 0; } .desk:hover .ruler { top: 0; left: 50%; transform: rotate(0); } .desk:hover .calendar { top: 0; right: 0; transform: rotate(0deg); } .desk:hover .notebook { bottom: 0; left: 0; } .desk:hover .pencil { bottom: 0; right: 0; transform: rotate(180deg); }
dom 中增加文字 “Hey, Take it easy”:
Hey!
Take it easy!
設置文字樣式:
.desk p { border: none; color: darkslategray; font-size: 6em; font-weight: bold; font-family: sans-serif; text-align: center; bottom: 2em; right: 1em; }
最后,為文字增加慢慢浮現的效果:
.desk p { transform: rotate(-35deg) scale(0); } .desk:hover p { transform: rotate(-35deg) scale(1); }
大功告成!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/52628.html
摘要:可交互視頻此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。上部下部源代碼下載每日前端實戰系列的全部源代碼請從下載代碼解讀定義,容器包含個元素,分別代表紙張尺子記事本日歷和鉛筆。 showImg(https://segmentfault.com/img/bVbdFrO?w=500&h=500); 效果預覽 按下右側的點擊預覽按鈕可以在當前頁面預覽,點擊鏈接可以全屏預覽。 htt...
摘要:過往項目年月份項目匯總共個項目年月份項目匯總共個項目年月份項目匯總共個項目年月份發布的項目前端每日實戰專欄每天分解一個前端項目,用視頻記錄編碼過程,再配合詳細的代碼解讀,是學習前端開發的活的參考書視頻演示如何用純創作一臺咖啡機視頻演示如何用 過往項目 2018 年 6 月份項目匯總(共 27 個項目) 2018 年 5 月份項目匯總(共 30 個項目) 2018 年 4 月份項目匯總(...
摘要:過往項目年月份項目匯總共個項目年月份項目匯總共個項目年月份項目匯總共個項目年月份發布的項目前端每日實戰專欄每天分解一個前端項目,用視頻記錄編碼過程,再配合詳細的代碼解讀,是學習前端開發的活的參考書視頻演示如何用純創作一臺咖啡機視頻演示如何用 過往項目 2018 年 6 月份項目匯總(共 27 個項目) 2018 年 5 月份項目匯總(共 30 個項目) 2018 年 4 月份項目匯總(...
閱讀 1019·2022-07-19 10:19
閱讀 1794·2021-09-02 15:15
閱讀 1007·2019-08-30 15:53
閱讀 2653·2019-08-30 13:45
閱讀 2651·2019-08-26 13:57
閱讀 1983·2019-08-26 12:13
閱讀 1006·2019-08-26 10:55
閱讀 545·2019-08-26 10:46