在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 網(wǎng)頁(yè)設(shè)計(jì)教程 > 詳細(xì)頁(yè)面

如何使用CSS與D3完成一個(gè)舞動(dòng)的畫面(附源碼)

如何使用CSS與D3完成一個(gè)舞動(dòng)的畫面(附源碼)

更新時(shí)間:2025-11-20 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

導(dǎo)網(wǎng)頁(yè)的本質(zhì)就是超級(jí)文本標(biāo)記語(yǔ)言,通過(guò)結(jié)合使用其他的Web技術(shù)(如:腳本語(yǔ)言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強(qiáng)大的網(wǎng)頁(yè)。因而,超級(jí)文本標(biāo)記語(yǔ)言是萬(wàn)維網(wǎng)(Web)編程的基礎(chǔ),也就是說(shuō)萬(wàn)維網(wǎng)是建立...
網(wǎng)頁(yè)的本質(zhì)就是超級(jí)文本標(biāo)記語(yǔ)言,通過(guò)結(jié)合使用其他的Web技術(shù)(如:腳本語(yǔ)言、公共網(wǎng)關(guān)接口、組件等),可以創(chuàng)造出功能強(qiáng)大的網(wǎng)頁(yè)。因而,超級(jí)文本標(biāo)記語(yǔ)言是萬(wàn)維網(wǎng)(Web)編程的基礎(chǔ),也就是說(shuō)萬(wàn)維網(wǎng)是建立在超文本基礎(chǔ)之上的。超級(jí)文本標(biāo)記語(yǔ)言之所以稱為超文本標(biāo)記語(yǔ)言,是因?yàn)槲谋局邪怂^“超級(jí)鏈接”點(diǎn)。
本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于如何使用CSS和D3實(shí)現(xiàn)一個(gè)舞動(dòng)的畫面(附源碼),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

效果預(yù)覽

3086138845-5bb2d743aa368_articlex.gif

源代碼下載

https://github.com/comehope/front-end-daily-challenges

代碼解讀

定義 dom,容器中包含 1 個(gè) .square 子容器,子容器中包含 4 個(gè) <span>,每個(gè) <span> 代表一個(gè)對(duì)角扇形:

<figure class="container">
    <div class="square">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
</figure>

居中顯示:

body {
    margin: 0;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: #222;
}

設(shè)置容器的尺寸單位,1em 等于 8px

.container {
    font-size: 8px;
}

子容器中的 4 個(gè) <span> 不設(shè)寬高,只設(shè)邊框,其中第 1 個(gè)和第 4 個(gè) <span> 只取左右邊框,第 2 個(gè)和第 3 個(gè) <span> 只取上下邊框:

.square span {
    display: block;
    border: 2.5em solid transparent;
    color: #ddd;
}

.square span:nth-child(1),
.square span:nth-child(4) {
    border-left-color: currentColor;
    border-right-color: currentColor;
}

.square span:nth-child(2),
.square span:nth-child(3) {
    border-top-color: currentColor;
    border-bottom-color: currentColor;
}

把邊框改為圓弧:

.square span {
    border-radius: 50%;
}

在子容器中用 grid 布局把 4 個(gè) <span> 設(shè)置為 2 * 2 的網(wǎng)格:

.square {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    grid-gap: 0.2em;
    padding: 0.1em;
}

旋轉(zhuǎn) 4 個(gè) <span>,使它們圍合成一個(gè)正方形,看起來(lái)像一個(gè)花朵,算式的結(jié)果是 45 度,寫成這樣是為了和接下來(lái)的動(dòng)畫的算式的形式保持一致:

.square span {
    transform: rotate(calc(45deg + 90deg * 0));
}

增加讓 <span> 旋轉(zhuǎn)的動(dòng)畫,整個(gè)動(dòng)畫過(guò)程旋轉(zhuǎn) 4 次,每次旋轉(zhuǎn) 90 度,4 次旋轉(zhuǎn)之后即返回原位:

.square span {
    animation: rotation 2s ease-in-out infinite;
}

@keyframes rotation {
    0% { transform: rotate(calc(45deg + 90deg * 0)); }
    25% { transform: rotate(calc(45deg + 90deg * 1)); }
    50% { transform: rotate(calc(45deg + 90deg * 2)); }
    75% { transform: rotate(calc(45deg + 90deg * 3)); }
    100% { transform: rotate(calc(45deg + 90deg * 4)); }
}

使其中 2 個(gè) <span> 朝相反的方向運(yùn)動(dòng):

.square span:nth-child(2),
.square span:nth-child(3) {
    animation-direction: reverse;
}

至此,一個(gè) .square 子容器的動(dòng)畫已經(jīng)完成,接下來(lái)制作 4 個(gè) .square 的動(dòng)畫。
在 dom 中再增加 3 組 .square 子容器:

<figure class="container">
    <div class="square">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
    <div class="square">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
    <div class="square">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
    <div class="square">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
</figure>

用 grid 布局把 4 個(gè) .square 布局成網(wǎng)格狀,變量 --columns 是網(wǎng)格的邊長(zhǎng),即每邊有 2 個(gè) .square 子容器:

.container {
    display: grid;
    --columns: 2;
    grid-template-columns: repeat(var(--columns), 1fr);
}

現(xiàn)在看起來(lái)好像是有幾個(gè)黑色的小方塊在不停地移動(dòng),當(dāng) dom 元素越多時(shí),動(dòng)畫效果看起來(lái)就越壯觀,就像集體舞一樣,人越多越有氣勢(shì)。接下來(lái)用 d3 批量增加 dom 的元素。
引入 d3 庫(kù):

<script src="https://d3js.org/d3.v5.min.js"></script>

聲明一個(gè) COLUMNS 常量,表示網(wǎng)格的邊長(zhǎng):

const COLUMNS = 2;

刪除掉 html 文件中的 .square 子元素,改為用 d3 動(dòng)態(tài)創(chuàng)建:

d3.select('.container')
    .selectAll('p')
    .data(d3.range(COLUMNS * COLUMNS))
    .enter()
    .append('p')
    .attr('class', 'square');

繼續(xù)用連綴語(yǔ)法增加 <span> 子元素:

d3.select('.container')
    .selectAll('p')
    .data(d3.range(COLUMNS * COLUMNS))
    .enter()
    .append('p')
    .attr('class', 'square')
    .selectAll('span')
    .data(d3.range(4))
    .enter()
    .append('span');

刪除掉 css 文件中的 --columns 變量聲明,改為用 d3 動(dòng)態(tài)聲明:

d3.select('.container')
    .style('--columns', COLUMNS)
    /*略*/

最后,把邊長(zhǎng)改為 4,即讓 16 個(gè) .square 一起動(dòng)畫:

const COLUMNS = 4;

大功告成!

以上就是如何使用CSS和D3實(shí)現(xiàn)一個(gè)舞動(dòng)的畫面(附源碼)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


網(wǎng)站建設(shè)是一個(gè)廣義的術(shù)語(yǔ),涵蓋了許多不同的技能和學(xué)科中所使用的生產(chǎn)和維護(hù)的網(wǎng)站。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 国产美女视频免费| 久久国产精品免费观看| 国产卡一卡二在线| 91视频免费版污| 日韩欧美视频网站| 18禁网站免费无遮挡无码中文 | 日本香蕉视频在线观看| 污免费在线观看| 中文字幕一区久久| 亚洲最大综合网| 天天影视色综合| 中文字幕第88页| 久久久久久久久久久福利| 国产妇女馒头高清泬20p多| 国产成人免费高清视频| 2022中文字幕| 男人添女荫道口女人有什么感觉| 久久久国产精华液999999 | 在线一区二区不卡| 久久国产这里只有精品| 欧美wwwwwww| 亚洲这里只有精品| 在线免费观看av的网站| 91在线第一页| 欧美午夜精品理论片| 一级淫片在线观看| 欧美精品久久久久久久久久久| 欧美日韩一级在线| 青青草av网站| 99视频精品全部免费看| 黄色一级片黄色| 中文字幕一区久久| 精品国产一区二区三区无码| 日韩精品免费一区| 国产第一页视频| 欧美一级小视频| 国产精品无码av在线播放| 久久久久久久久久久久久国产精品 | 国产奶头好大揉着好爽视频| 久久久久久久久影视| 日本77777| 欧美日韩亚洲一| 天天干天天玩天天操| 国产卡一卡二在线| 91香蕉视频导航| 国产高清不卡无码视频| 91av资源网| 国产又粗又猛又爽又黄的网站 | 国产一区二区在线视频播放| 国产免费视频传媒| 黄色影视在线观看| 中文字幕一区久久| 37pao成人国产永久免费视频| 色播五月综合网| 亚欧在线免费观看| 999久久欧美人妻一区二区| 黄网站色视频免费观看| av在线网站免费观看| 99999精品视频| 蜜臀av无码一区二区三区 | 天天操天天爽天天射| 极品美女扒开粉嫩小泬| 国产成人精品免费看在线播放 | 成人一级生活片| 日本免费色视频| 国产aaaaa毛片| 凹凸日日摸日日碰夜夜爽1| 久久久久久久久网| av日韩在线看| 免费在线黄网站| 国产四区在线观看| av在线网站免费观看| 2025韩国理伦片在线观看| 深爱五月综合网| 五月天激情图片| 成年人三级视频| 亚洲精品国产suv一区88| 先锋影音男人资源| 午夜两性免费视频| 免费网站在线观看黄| 少妇黄色一级片| 亚洲欧美日本一区二区| 在线视频观看91| 中文字幕55页| 青青青青草视频| 午夜精品久久久久久久无码| 久久视频这里有精品| 男女午夜激情视频| 日韩av一二三四| 免费网站在线观看视频 | 久久国产午夜精品理论片最新版本| 精品久久久无码人妻字幂| 国产一区二区片| 大伊香蕉精品视频在线| av一区二区三区免费观看| 久久精品无码中文字幕| 国产精品97在线| 欧美又黄又嫩大片a级| 日韩久久久久久久久久久久| 久久视频这里有精品| 欧美日韩一区二区三区69堂| 亚洲一区二区三区四区精品 | 波多野结衣家庭教师在线播放| 久久精品免费一区二区| 日韩av片免费观看| 久久久天堂国产精品| 黄黄视频在线观看| 白嫩少妇丰满一区二区| 欧美视频国产视频| 亚洲欧洲日本精品| 菠萝蜜视频在线观看入口| 久草精品在线播放| 精品人妻大屁股白浆无码| 欧美成人xxxxx| 熟女视频一区二区三区| 久久美女福利视频| 中国一级大黄大黄大色毛片| 国产成人a亚洲精v品无码| 日本成人性视频| 波多野结衣家庭教师视频| 男人添女荫道口女人有什么感觉| 亚洲国产精品毛片av不卡在线| 99爱视频在线| 欧美不卡在线播放| 涩多多在线观看| 在线观看日本一区二区| 久久久免费视频网站| 欧美一级黄色影院| 成人在线看视频| 国产精品无码免费专区午夜| 亚洲天堂一区二区在线观看| 噼里啪啦国语在线观看免费版高清版| 天天想你在线观看完整版电影免费| 极品粉嫩美女露脸啪啪| 国产1区2区在线| 日韩一级片播放| 色综合久久久久无码专区| 亚洲精品国产久| 制服丝袜中文字幕第一页| 蜜臀av午夜一区二区三区| 成人午夜激情av| 国产又大又硬又粗| www.桃色.com| 日韩video| 中国女人做爰视频| 日韩成人手机在线| 黄色成人在线免费观看| 一级黄色特级片| 夜夜夜夜夜夜操| 欧美爱爱视频网站| 久艹在线免费观看| 青青青在线观看视频| 青青在线视频观看| 国产精品久久久毛片| 国产综合免费视频| 99国产精品久久久久久| 三级黄色片播放| 4444在线观看| 中文字幕无码精品亚洲资源网久久| 人妻夜夜添夜夜无码av| 无限资源日本好片| 日本xxx免费| 国产97在线 | 亚洲| 日本888xxxx| 狠狠干狠狠操视频| 欧美黑人经典片免费观看| 美女扒开大腿让男人桶| 五月婷婷丁香综合网| 6080国产精品| 欧美aⅴ在线观看| 中文字幕免费高清在线| 深夜做爰性大片蜜桃| 大肉大捧一进一出好爽视频| 天天干天天综合| 欧美 日韩 国产在线观看| 不卡av免费在线| 久久久久久久香蕉| 亚洲精品视频三区| 欧美三级在线观看视频| 91香蕉视频在线观看视频| 水蜜桃色314在线观看| 午夜影院免费观看视频| 免费看的黄色大片| 一级黄色大片儿| 久久99爱视频| 免费成人午夜视频| 日本aa在线观看| 中文字幕在线视频精品| 国产精品国三级国产av| 日本网站在线看| 午夜免费精品视频| wwwxxx黄色片| 秋霞无码一区二区| 日韩欧美国产免费| 国产va亚洲va在线va| 特级黄色片视频| 精品少妇人妻av一区二区| 孩娇小videos精品| 亚洲精品20p| 中文字幕有码av|