.hexagon-gallery {
margin: auto;
margin-top: 50px;
max-width: 1000px;
display: grid;
grid-template-columns: repeat(8, 1fr);
grid-auto-rows: 200px;
padding-bottom: 50px;
}
.hex {
display: flex;
position: relative;
width: 240px;
height: 265px;
background-color: #424242;
-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
}
.hex:first-child {
grid-row-start: 1;
grid-column: 3 / span 2;
}
.hex:nth-child(2) {
grid-row-start: 1;
grid-column: 4 / span 2;
}
.hex:nth-child(3) {
grid-row-start: 1;
grid-column: 6 / span 2;
}
<section class="hexagon-gallery">
<div class="hex"><img src="https://images.pexels.com/photos/1421264/pexels-photo-1421264.jpeg?cs=srgb&dl=aerial-aerial-photo-aerial-photography-1421264.jpg&fm=jpg" alt="some"></div>
<div class="hex"></div>
<div class="hex"></div>
</section>

我試圖瞄準類似形狀的東西。六邊形拉伸錯字形狀,如果有其他更簡單的方法可以做到這一點,我不確定。也許兩邊形狀的矩形可以作業我不確定。
uj5u.com熱心網友回復:
您好,我不能百分百確定這就是您要找的東西,但請看一下。
我使用了兩個 css 自定義屬性來使其作業(
--max它指的是每行的最大元素,
--order它指的是元素的順序)
.hexagon-gallery {
--max: 4;
margin-inline: auto;
margin-top: 50px;
max-width: fit-content;
display: grid;
grid-template-columns: repeat(var(--max, 1), 1fr);
grid-auto-rows: 200px;
padding-bottom: 50px;
}
.hex {
display: flex;
position: relative;
background-color: #424242;
width: 200px;
aspect-ratio: 1 / 1;
-webkit-clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);
z-index: calc(var(--max, 1) - var(--order, 0));
overflow: hidden;
}
.hex > img {
max-width: 100%;
object-fit: cover;
}
.hex:not(:first-child) {
transform: translateX(calc(calc(var(--order, 1) - 1) * -40%));
}
<section class="hexagon-gallery">
<div class="hex" style="--order: 1;"><img src="https://images.pexels.com/photos/1421264/pexels-photo-1421264.jpeg?cs=srgb&dl=aerial-aerial-photo-aerial-photography-1421264.jpg&fm=jpg" alt="some"></div>
<div class="hex" style="--order: 2;"><img src="https://images.pexels.com/photos/1421264/pexels-photo-1421264.jpeg?cs=srgb&dl=aerial-aerial-photo-aerial-photography-1421264.jpg&fm=jpg" alt="some"></div>
<div class="hex" style="--order: 3;"><img src="https://images.pexels.com/photos/1421264/pexels-photo-1421264.jpeg?cs=srgb&dl=aerial-aerial-photo-aerial-photography-1421264.jpg&fm=jpg" alt="some"></div>
<div class="hex" style="--order: 4;"><img src="https://images.pexels.com/photos/1421264/pexels-photo-1421264.jpeg?cs=srgb&dl=aerial-aerial-photo-aerial-photography-1421264.jpg&fm=jpg" alt="some"></div>
</section>
uj5u.com熱心網友回復:
那行得通嗎?我稍微整理了代碼以洗掉無關的 CSS 屬性。
主要部分是:
clip-path: polygon(85% 0%, 100% 50%, 85% 100%, 15% 100%, 0% 50%, 15% 0%);得到正確的形狀。grid-auto-flow: column;和grid-auto-columns: 168px;(這是你的.hex寬度 -30%,因為形狀每邊都削減了 15%)以正確對齊專案。`z-indexwhich 應該按遞減順序排列,以便每個專案始終覆寫下一個專案。如果洗掉 ,z-index則會產生相反的效果(每個元素都被下一個元素覆寫),正如 HTML 中默認的那樣,位于其同級組底部的元素出現在其上方元素的“上方”。- 只是為了整潔
grid-auto-rows: 0px;,它取代了grid-row-start: 1;每個元素。
.hexagon-gallery {
display: grid;
grid-auto-rows: 0px;
grid-auto-columns: 168px;
grid-auto-flow: column;
}
.hex {
display: flex;
width: 240px;
height: 265px;
clip-path: polygon(85% 0%, 100% 50%, 85% 100%, 15% 100%, 0% 50%, 15% 0%);
}
.hex:first-child {
background: red;
z-index: 1000;
}
.hex:nth-child(2) {
background: green;
z-index: 900;
}
.hex:nth-child(3) {
background: blue;
z-index: 800;
}
<section class="hexagon-gallery">
<div class="hex"><img src="https://images.pexels.com/photos/1421264/pexels-photo-1421264.jpeg?cs=srgb&dl=aerial-aerial-photo-aerial-photography-1421264.jpg&fm=jpg" alt="some"></div>
<div class="hex"></div>
<div class="hex"></div>
</section>
要調整形狀,請修改85%and 15%(如果要保持對稱形狀,它們的總和應始終為 100)。
例如,將 75% 和 25% 改為會使角度更大。
不要忘記將grid-auto-columns值更改為width * (25*2)%,因此120px在這種情況下要保持每個元素之間的正確間距。
帶有這些引數的示例:

uj5u.com熱心網友回復:
您將需要計算z-index活動幻燈片以及從左側和右側開始的每張后續幻燈片。活動六邊形將具有最高的z-index。最遠的六邊形(左和右)將有一個低得多的z-index; 很像鐘形曲線。
提示:輪播下方有一個播放/暫停按鈕(向下滾動)。
const
gallery = document.querySelector('.hexagon-gallery'),
slides = gallery.querySelectorAll('.hex'),
refreshRate = 2000;
let activeIndex = 0, intervalId;
const update = () => {
for (let i = 0; i < slides.length; i ) {
const
slide = slides[i],
newIndex = ((slides.length - i) activeIndex) % slides.length,
zIndex = ((activeIndex - Math.abs(activeIndex - i)) slides.length) * 100;
slide.style.zIndex = zIndex;
slide.classList.remove('active');
}
activeIndex = (activeIndex 1) % slides.length;
slides[activeIndex].classList.add('active');
};
const play = () => {
intervalId = setInterval(update, refreshRate);
};
const pause = () => {
if (intervalId) {
clearInterval(intervalId);
intervalId = null;
}
};
const toggleAction = (e) => {
if (intervalId) {
pause() ; e.target.textContent = 'Play';
} else {
play() ; e.target.textContent = 'Pause';
}
}
document.querySelector('[data-action="pause"]').addEventListener('click', toggleAction);
play();
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
body {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
gap: 1em;
background: #222;
}
.hexagon-gallery {
display: grid;
grid-template-columns: repeat(8, 1fr);
grid-auto-rows: 120px;
max-width: 360px;
}
.hex {
display: flex;
position: relative;
width: 120px;
height: 120px;
background-color: #424242;
-webkit-clip-path: polygon(15% 0%, 85% 0%, 100% 50%, 85% 100%, 15% 100%, 0% 50%);
clip-path: polygon(15% 0%, 85% 0%, 100% 50%, 85% 100%, 15% 100%, 0% 50%);
}
.hex:nth-child(1) {
grid-row-start: 1;
grid-column: 1 / span 2;
}
.hex:nth-child(2) {
grid-row-start: 1;
grid-column: 2 / span 2;
}
.hex:nth-child(3) {
grid-row-start: 1;
grid-column: 3 / span 2;
}
.hex:nth-child(4) {
grid-row-start: 1;
grid-column: 4 / span 2;
}
.hex:nth-child(5) {
grid-row-start: 1;
grid-column: 5 / span 2;
}
<section class="hexagon-gallery">
<div class="hex">
<img
src="https://images.pexels.com/photos/1421264/pexels-photo-1421264.jpeg"
alt="Beach">
</div>
<div class="hex">
<img
src="https://images.pexels.com/photos/54323/rose-composites-flowers-spring-54323.jpeg"
alt="Rose">
</div>
<div class="hex">
<img
src="https://images.pexels.com/photos/102104/pexels-photo-102104.jpeg"
alt="Apple">
</div>
<div class="hex">
<img
src="https://images.pexels.com/photos/1343537/pexels-photo-1343537.jpeg"
alt="Lemon">
</div>
<div class="hex">
<img
src="https://images.pexels.com/photos/3686216/pexels-photo-3686216.jpeg"
alt="Flower">
</div>
</section>
<button data-action="pause">Pause</button>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/480375.html
標籤:javascript html css
上一篇:新訊息到達時未完全向下滾動
