|
導讀網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立... 網頁的本質就是超級文本標記語言,通過結合使用其他的Web技術(如:腳本語言、公共網關接口、組件等),可以創造出功能強大的網頁。因而,超級文本標記語言是萬維網(Web)編程的基礎,也就是說萬維網是建立在超文本基礎之上的。超級文本標記語言之所以稱為超文本標記語言,是因為文本中包含了所謂“超級鏈接”點。 本篇文章給大家帶來的內容是關于如何使用CSS和D3實現黑白交疊的動畫效果,文章介紹了對js中this的理解,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。效果預覽![]() 代碼解讀定義 dom,容器中包含 3 個子元素,每個子元素代表一個圓: <div class="circles">
<span></span>
<span></span>
<span></span>
</div>居中顯示: body {
margin: 0;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background-color: black;
}定義容器尺寸: .circles {
width: 60vmin;
height: 60vmin;
}畫出容器中的1個圓: .circles {
position: relative;
}
.circles span {
position: absolute;
box-sizing: border-box;
width: 50%;
height: 50%;
background-color: white;
border-radius: 50%;
left: 25%;
}定義變量,畫出多個圓,每個圓圍繞著第 1 個圓的底部中點旋轉,圍成一個更大的圓形: .circles {
--particles: 3;
}
.circles span {
transform-origin: bottom center;
--deg: calc(360deg / var(--particles) * (var(--n) - 1));
transform: rotate(var(--deg));
}
.circles span:nth-child(1) {
--n: 1;
}
.circles span:nth-child(2) {
--n: 2;
}
.circles span:nth-child(3) {
--n: 3;
}為子元素增加動畫效果: .circles span {
animation: rotating 5s ease-in-out infinite;
}
@keyframes rotating {
0% {
transform: rotate(0);
}
50% {
transform: rotate(var(--deg)) translateY(0);
}
100% {
transform: rotate(var(--deg)) translateY(100%) scale(2);
}
}設置子元素混色模式,使子元素間交疊的部分顯示成黑色: .circles span {
mix-blend-mode: difference;
}為容器增加動畫效果,抵銷子元素放大,使動畫流暢銜接: .circles {
animation: zoom 5s linear infinite;
}
@keyframes zoom {
to {
transform: scale(0.5) translateY(-50%);
}
}接下來用 d3 批量處理 dom 元素和 css 變量。 <script src="https://d3js.org/d3.v5.min.js"></script> 用 d3 為表示圓數量的變量賦值: const COUNT_OF_PARTICLES = 30;
d3.select('.circles')
.style('--particles', COUNT_OF_PARTICLES)用 d3 生成 dom 元素: d3.select('.circles')
.style('--particles', COUNT_OF_PARTICLES)
.selectAll('span')
.data(d3.range(COUNT_OF_PARTICLES))
.enter()
.append('span');用 d3 為表示子元素下標的變量賦值: d3.select('.circles')
.style('--particles', COUNT_OF_PARTICLES)
.selectAll('span')
.data(d3.range(COUNT_OF_PARTICLES))
.enter()
.append('span')
.style('--n', (d) => d + 1);刪除掉 html 文件中的相關 dom 元素和 css 文件中相關的 css 變量。 最后,把圓的數量調整為 30 個: const COUNT_OF_PARTICLES = 30; 大功告成! 相關推薦: 如何使用CSS實現貨車loader的效果以上就是如何使用CSS和D3實現黑白交疊的動畫效果的詳細內容,更多請關注php中文網其它相關文章! 網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。 |
溫馨提示:喜歡本站的話,請收藏一下本站!