摘要:可交互視頻此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。引入庫刪除掉文件中代表數(shù)字的元素,用創(chuàng)建代表數(shù)字的元素,并設置變量把改為位同時把網格改為的布局接下來制作循環(huán)點亮的效果。
效果預覽
按下右側的“點擊預覽”按鈕可以在當前頁面預覽,點擊鏈接可以全屏預覽。
https://codepen.io/comehope/pen/XPbeKp
可交互視頻此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。
請用 chrome, safari, edge 打開觀看。
https://scrimba.com/p/pEgDAM/c79DRc4
源代碼下載每日前端實戰(zhàn)系列的全部源代碼請從 github 下載:
https://github.com/comehope/front-end-daily-challenges
代碼解讀定義 dom,容器中包含 9 個元素,代表 9 個數(shù)字:
3 1 4 1 5 9 2 6 5
居中顯示:
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; background-color: black; }
定義容器尺寸:
.pi { width: 30em; height: 30em; font-size: 12px; }
把 9 個數(shù)字布局成 3 * 3 的網格:
.pi { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 0.2em; } .pi span { color: white; font-size: 3em; background-color: hsl(0, 40%, 40%); font-family: sans-serif; border-radius: 50%; display: flex; align-items: center; justify-content: center; user-select: none; }
在 dom 中定義 css 變量,變量值等于該元素代表的數(shù)字:
3 1 4 1 5 9 2 6 5
為不同的數(shù)字設置不同的背景色:
.pi span { --c: hsl(calc(var(--d) * 36), 40%, 40%); background-color: var(--c); }
使數(shù)字的顏色與背景相同,在鼠標懸停時,高度當前的數(shù)字:
.pi span { color: var(--c); transition: 0.3s; } .pi span:hover { background-color: white; color: black; box-shadow: 0 0 1em yellow; }
至此,完成了視覺效果設計,接下來用 d3 批量處理 dom 元素和 css 變量。
引入 d3 庫:
刪除掉 html 文件中代表數(shù)字的 dom 元素,用 d3 創(chuàng)建代表數(shù)字的 dom 元素,并設置 css 變量:
const PI = "314159265"; d3.select(".pi") .selectAll("span") .data(PI) .enter() .append("span") .style("--d", (d) => d) .text((d) => d);
把 PI 改為100位:
const PI = "3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067";
同時把網格改為 10 * 10 的布局:
.pi { grid-template-columns: repeat(10, 1fr); } .pi span { font-size: 1.3em; }
接下來制作循環(huán)點亮的效果。
為各數(shù)字元素增加 css 類,數(shù)字 0 的類名是 d0,數(shù)字 1 的類名是 d2,以此類推:
d3.select(".pi") .selectAll("span") .data(PI) .enter() .append("span") .attr("class", (d) => `d$wwgqcsk`) .style("--d", (d) => d) .text((d) => d);
定義循環(huán)變量 number,它從 1 開始逐漸遞增:
let number = 1;
定義一個函數(shù),用于點亮特定數(shù)字的一組元素:
function show() { d3.selectAll(`.pi span.d${number % 10}`) .classed("show", true); d3.selectAll(`.pi span.d${(number-1) % 10}`) .classed("show", false); number++; }
最后,設置一個間隔時間,不斷重復調用上面這個函數(shù),讓各組數(shù)字依次點亮:
setInterval(show, 500);
大功告成!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96953.html
摘要:可交互視頻此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。引入庫刪除掉文件中代表數(shù)字的元素,用創(chuàng)建代表數(shù)字的元素,并設置變量把改為位同時把網格改為的布局接下來制作循環(huán)點亮的效果。 showImg(https://segmentfault.com/img/bVbfNqO?w=400&h=305); 效果預覽 按下右側的點擊預覽按鈕可以在當前頁面預覽,點擊鏈接可以全屏預覽。 ht...
摘要:過往項目年月份項目匯總共個項目年月份項目匯總共個項目年月份項目匯總共個項目年月份發(fā)布的項目前端每日實戰(zhàn)專欄每天分解一個前端項目,用視頻記錄編碼過程,再配合詳細的代碼解讀,是學習前端開發(fā)的活的參考書視頻演示如何用純創(chuàng)作一臺咖啡機視頻演示如何用 過往項目 2018 年 6 月份項目匯總(共 27 個項目) 2018 年 5 月份項目匯總(共 30 個項目) 2018 年 4 月份項目匯總(...
摘要:過往項目年月份項目匯總共個項目年月份項目匯總共個項目年月份項目匯總共個項目年月份發(fā)布的項目前端每日實戰(zhàn)專欄每天分解一個前端項目,用視頻記錄編碼過程,再配合詳細的代碼解讀,是學習前端開發(fā)的活的參考書視頻演示如何用純創(chuàng)作一臺咖啡機視頻演示如何用 過往項目 2018 年 6 月份項目匯總(共 27 個項目) 2018 年 5 月份項目匯總(共 30 個項目) 2018 年 4 月份項目匯總(...
閱讀 3385·2021-11-24 09:38
閱讀 1385·2021-11-22 15:08
閱讀 1454·2021-09-29 09:35
閱讀 475·2021-09-02 15:11
閱讀 1304·2019-08-30 12:55
閱讀 385·2019-08-29 17:16
閱讀 492·2019-08-29 11:30
閱讀 415·2019-08-26 13:23