成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端每日實(shí)戰(zhàn):109# 視頻演示如何用 CSS 和 D3 創(chuàng)作一個(gè)用文字組成的心形圖案

null1145 / 1966人閱讀

摘要:引入庫聲明一個(gè)數(shù)組,包含若干單詞用創(chuàng)建元素用為變量賦值刪除文件中相關(guān)的元素和文件中相關(guān)的變量。把數(shù)組元素改為愛在各種語言的單詞愛最后,為第個(gè)單詞設(shè)置特殊的文字樣式大功告成

效果預(yù)覽

按下右側(cè)的“點(diǎn)擊預(yù)覽”按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。

https://codepen.io/comehope/pen/xJvERW

可交互視頻

此視頻是可以交互的,你可以隨時(shí)暫停視頻,編輯視頻中的代碼。

請(qǐng)用 chrome, safari, edge 打開觀看。

https://scrimba.com/p/pEgDAM/cm94eu6

源代碼下載

每日前端實(shí)戰(zhàn)系列的全部源代碼請(qǐng)從 github 下載:

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

代碼解讀

定義 dom,容器中包含 3 個(gè)子元素,每個(gè)子元素中有一個(gè)單詞:

aaa bbb ccc

居中顯示:

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

定義容器尺寸:

.love {
    width: 450px;
    height: 450px;
}

設(shè)置文本樣式:

.love {
    position: relative;
}

.love span {
    position: absolute;
    left: 0;
    color: goldenrod;
    font-size: 20px;
    font-family: sans-serif;
    text-shadow: 0 0 1em white;
}

定義文本左右往復(fù)移動(dòng)的動(dòng)畫:

.love span {
    animation: x-move 10s ease-in-out infinite alternate;
}

@keyframes x-move {
    to {
        left: 450px;
    }
}

定義子元素的下標(biāo)變量,設(shè)置動(dòng)畫延時(shí),使各單詞依次入場(chǎng):

.love {
    --particles: 3;
}

.love span {
    animation-delay: calc(20s / var(--particles) * var(--n) * -1);
}

.love span:nth-child(1) {
    --n: 1;
}

.love span:nth-child(2) {
    --n: 2;
}

.love span:nth-child(3) {
    --n: 3;
}

增加文本沿心形運(yùn)動(dòng)的動(dòng)畫效果:

.love span {
    animation: 
        x-move 10s ease-in-out infinite alternate,
        y-move 20s linear infinite;
}

@keyframes y-move {
    0% { transform: translateY(180px); }
    10% { transform: translateY(45px); }
    15% { transform: translateY(5px); }
    18% { transform: translateY(0); }
    20% { transform: translateY(5px); }
    22% { transform: translateY(35px); }
    24% { transform: translateY(65px); }
    25% { transform: translateY(110px); }
    26% { transform: translateY(65px); }
    28% { transform: translateY(35px); }
    30% { transform: translateY(5px); }
    32% { transform: translateY(0); }
    35% { transform: translateY(5px); }
    40% { transform: translateY(45px); }
    50% { transform: translateY(180px); }
    71% { transform: translateY(430px); }
    72.5% { transform: translateY(440px); }
    75% { transform: translateY(450px); }
    77.5% { transform: translateY(440px); }
    79% { transform: translateY(430px); }
    100% { transform: translateY(180px); }
}

接下來用 d3 批量處理 dom 元素和 css 變量。
引入 d3 庫:

聲明一個(gè)數(shù)組,包含若干單詞:

const words = ["aaa", "bbb", "ccc"];

用 d3 創(chuàng)建 dom 元素:

d3.select(".love")
    .selectAll("span")
    .data(words)
    .enter()
    .append("span")
    .text((d) => d);

用 d3 為 css 變量賦值:

d3.select(".love")
    .style("--particles", words.length)
    .selectAll("span")
    .data(words)
    .enter()
    .append("span")
    .style("--n", (d, i) => i + 1)
    .text((d) => d);

刪除 html 文件中相關(guān)的 dom 元素和 css 文件中相關(guān)的 css 變量。

把數(shù)組元素改為“愛”在各種語言的單詞:

const words = [
    "愛", "Love", "Amour", "Liebe", "Amore",
    "Amor", "Любовь", "????", "?????", "Cinta",
    "Αγ?πη", "??", "Liefde", "Dashuri", "Каханне",
    "Ljubav", "Láska", "Armastus", "Mahal", "????", 
    "Szerelem", "Grá", "Mīlestība", "Meil?", "Любов", 
    "?убовта", "Cinta", "???", "Dragoste", "Láska", 
    "Renmen", "???", "muna?a", "Sevgi", "?убав", 
    "karout", "amà", "am?r", "k?rleiki", "mborayhu", 
    "Upendo", "sòòyayyàà", "ljubav", "???", "с?ю", 
    "с?й??", "tia", "aroha", "KHAIR", "?????", 
    "kj?rlighet", "munay", "jecel", "K?rlek", "soymek", 
    "Mahal", "ярату", "????", "sopp", "uthando", 
    "???????", "A?k", "Tình yêu", "????"];

最后,為第 1 個(gè)單詞設(shè)置特殊的文字樣式:

.love span:first-child {
    color: orangered;
    font-size: 3em;
    text-shadow: 
        0 0 0.1em black,
        0 0 1em white;
    z-index: 1;
}

大功告成!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108304.html

相關(guān)文章

  • 前端每日實(shí)戰(zhàn)109# 視頻演示 CSS D3 創(chuàng)作一個(gè)文字組成心形圖案

    摘要:引入庫聲明一個(gè)數(shù)組,包含若干單詞用創(chuàng)建元素用為變量賦值刪除文件中相關(guān)的元素和文件中相關(guān)的變量。把數(shù)組元素改為愛在各種語言的單詞愛最后,為第個(gè)單詞設(shè)置特殊的文字樣式大功告成 showImg(https://segmentfault.com/img/bVbfwGW?w=400&h=303); 效果預(yù)覽 按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。 https://cod...

    EdwardUp 評(píng)論0 收藏0
  • 前端每日實(shí)戰(zhàn) 167# 視頻演示 1 個(gè) dom 元素創(chuàng)作兩顆愛心

    摘要:每一個(gè)陰影屬性值就可以繪制出一個(gè)圓點(diǎn),因?yàn)榭梢越邮斩鄠€(gè)屬性性,所以就可以用多個(gè)圓點(diǎn)來畫點(diǎn)陣圖了。 showImg(https://segmentfault.com/img/bVbsSVm?w=400&h=348); 效果預(yù)覽 按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。 https://codepen.io/comehope/pen/KLvENb 可交互視頻 此視頻...

    mingde 評(píng)論0 收藏0
  • 前端每日實(shí)戰(zhàn) 167# 視頻演示 1 個(gè) dom 元素創(chuàng)作兩顆愛心

    摘要:每一個(gè)陰影屬性值就可以繪制出一個(gè)圓點(diǎn),因?yàn)榭梢越邮斩鄠€(gè)屬性性,所以就可以用多個(gè)圓點(diǎn)來畫點(diǎn)陣圖了。 showImg(https://segmentfault.com/img/bVbsSVm?w=400&h=348); 效果預(yù)覽 按下右側(cè)的點(diǎn)擊預(yù)覽按鈕可以在當(dāng)前頁面預(yù)覽,點(diǎn)擊鏈接可以全屏預(yù)覽。 https://codepen.io/comehope/pen/KLvENb 可交互視頻 此視頻...

    LdhAndroid 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<