How to use CSS and D3 to achieve the effect of endless hexagonal space
This article introduces you to how to use CSS and D3 to achieve the effect of endless hexagonal space. It has a good reference value and I hope it can help friends in need.
Effect Preview
< ;span>'s
:
<p> </p><p> <span></span> <span></span> <span></span> <span></span> <span></span> </p>Centered display:
body { margin: 0; height: 100vh; display: flex; align-items: center; justify-content: center; background: radial-gradient(circle at center, gold, black); }Define the dimensions of the circular outer container:
.container { width: 20em; height: 20em; font-size: 20px; border-radius: 50%; }Draw a rectangle in the hexagon container:
.hexagons { width: inherit; height: inherit; display: flex; align-items: center; justify-content: center; } .hexagons span { position: absolute; width: calc(20em / 1.732); height: inherit; background-color: currentColor; }Use pseudo-elements to create 2 more rectangles of the same size, together forming a hexagon:
.hexagons span:before, .hexagons span:after { content: ''; position: absolute; width: inherit; height: inherit; background-color: currentColor; } .hexagons span:before { transform: rotate(60deg); } .hexagons span:after { transform: rotate(-60deg); }Let the hexagons The colors of the shapes are staggered:
.hexagons span:nth-child(odd) { color: gold; } .hexagons span:nth-child(even) { color: #222; }Set the variables so that the hexagons gradually shrink, and the small hexagons overlap the large hexagons:
.hexagons span { transform: scale(var(--scale)) ; } .hexagons span:nth-child(1) { --scale: 1; } .hexagons span:nth-child(2) { --scale: calc(1 * 0.9); } .hexagons span:nth-child(3) { --scale: calc(1 * 0.9 * 0.9); } .hexagons span:nth-child(4) { --scale: calc(1 * 0.9 * 0.9 * 0.9); } .hexagons span:nth-child(5) { --scale: calc(1 * 0.9 * 0.9 * 0.9 * 0.9); }Set the variables again to make the hexagons smaller The shapes are tilted at different angles in turn:
.hexagons span { transform: scale(var(--scale)) rotate(calc(var(--n) * 6deg)); } .hexagons span:nth-child(1) { --n: 1; } .hexagons span:nth-child(2) { --n: 2; } .hexagons span:nth-child(3) { --n: 3; } .hexagons span:nth-child(4) { --n: 4; } .hexagons span:nth-child(5) { --n: 5; }Define the animation effect:
.hexagons { animation: twist 0.5s linear infinite; } @keyframes twist { from { transform: rotate(0deg) scale(1); } to { transform: rotate(calc(6deg * -2)) scale(1.25); } }Hide the content outside the container:
.container { overflow: hidden; }Next, use d3 to create hexagons in batches.
Introducing the d3 library:
<script></script>Use d3 to create a hexagonal dom element:
const COUNT = 5; d3.select('.hexagons') .selectAll('span') .data(d3.range(COUNT)) .enter() .append('span');Use d3 to assign values to the hexagonal --n and --scale variables:
d3.select('.hexagons') .selectAll('span') .data(d3.range(COUNT)) .enter() .append('span') .style('--scale', (d) => Math.pow(0.9, d)) .style('--n', (d) => d + 1);Delete the hexagonal dom element in the html file and the variables declared in the css file. Finally, change the number of hexagons to 100:
const COUNT = 100;You’re done! Related recommendations:
How to use css to draw a bird (code)
How to use pure CSS to realize a dynamic trainThe above is the detailed content of How to use CSS and D3 to achieve the effect of endless hexagonal space. For more information, please follow other related articles on the PHP Chinese website!

The fact that anchor positioning eschews HTML source order is so CSS-y because it's another separation of concerns between content and presentation.

Article discusses CSS margin property, specifically "margin: 40px 100px 120px 80px", its application, and effects on webpage layout.

The article discusses CSS border properties, focusing on customization, best practices, and responsiveness. Main argument: border-radius is most effective for responsive designs.

The article discusses CSS background properties, their uses in enhancing website design, and common mistakes to avoid. Key focus is on responsive design using background-size.

Article discusses CSS HSL colors, their use in web design, and advantages over RGB. Main focus is on enhancing design and accessibility through intuitive color manipulation.

The article discusses the use of comments in CSS, detailing single-line and multi-line comment syntaxes. It argues that comments enhance code readability, maintainability, and collaboration, but may impact website performance if not managed properly.

The article discusses CSS Selectors, their types, and usage for styling HTML elements. It compares ID and class selectors and addresses performance issues with complex selectors.

The article discusses CSS priority, focusing on inline styles having the highest specificity. It explains specificity levels, overriding methods, and debugging tools for managing CSS conflicts.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

Dreamweaver Mac version
Visual web development tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

Dreamweaver CS6
Visual web development tools
