gpt4 book ai didi

css - 向 flex 容器中的多个元素添加渐变

转载 作者:行者123 更新时间:2023-11-28 10:59:43 25 4
gpt4 key购买 nike

如何在考虑元素数量的同时,将渐变类背靠背添加到此 flex 容器中的多个元素?目前它只能通过将一个类添加到一组特定的“单元”并产生单独的渐变来工作。

我想要一个渐变来覆盖两个或多个元素,同时保持所有元素的 flex 和相等。

     .chart {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 0 15px;
margin-bottom: 50px;
}
.dot-black {
width: 8px;
height: 8px;
border-radius: 4px;
background: black;
}

.dot-grey {
width: 22px;
height: 22px;
border-radius: 11px;
background: grey;
}

.dot-green {
width: 22px;
height: 22px;
border-radius: 11px;
background: green;
}

.unit {
flex: 1;
display: flex;
align-items: center;
}

.line-black {
height: 2px;
background: black;

}

.line-grey {
height: 2px;
background: grey;
flex-grow: 1;
}

.gradient {
background: rgb(2,0,36);
background: linear-gradient(90deg, rgba(2,0,36,1) 0%, rgba(9,9,121,1) 35%, rgba(0,212,255,1) 100%);
}
    <div class="chart">
<div class="unit gradient">
<div class="dot-black"></div>
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit gradient">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">

<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
</div>

最佳答案

您可以控制父元素上的渐变,您可以在其中指定所需的背景大小,以便仅覆盖所需的元素:

.chart {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 0 15px;
margin-bottom: 50px;
background:
linear-gradient(90deg, rgba(2, 0, 36, 1), rgba(9, 9, 121, 1) 35%, rgba(0, 212, 255, 1))
left /* Start from the left */
/
calc(var(--n,0)* 100%/8) 100% /* we have 8 circles so Nx(width)/8 */
content-box /* Cover only the content, don't account for padding */
no-repeat; /* Don' repeat */
}

.dot-black {
width: 8px;
height: 8px;
border-radius: 4px;
background: black;
}

.dot-grey {
width: 22px;
height: 22px;
border-radius: 11px;
background: grey;
}

.dot-green {
width: 22px;
height: 22px;
border-radius: 11px;
background: green;
}

.unit {
flex: 1;
display: flex;
align-items: center;
}

.line-black {
height: 2px;
background: black;
}

.line-grey {
height: 2px;
background: grey;
flex-grow: 1;
}
<div class="chart" style="--n:2">
<div class="unit">
<div class="dot-black"></div>
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">

<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
</div>

<div class="chart" style="--n:5">
<div class="unit">
<div class="dot-black"></div>
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">

<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
</div>

<div class="chart" style="--n:6">
<div class="unit">
<div class="dot-black"></div>
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">
<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
<div class="unit">

<div class="line-grey"></div>
<div class="dot-grey"></div>
</div>
</div>

如果您有兴趣,您可以构建只有背景而没有 html 元素的整个布局:

.chart {
margin: 0 15px 5px;
height:22px;
background:
/* Small dot */
radial-gradient(circle 4px,black 95%,transparent 100%) left center/8px 8px no-repeat,
/* horizontal line */
linear-gradient(grey,grey) center/100% 2px no-repeat,
/* big dots */
radial-gradient(circle 11px at calc(100% - 11px) 50% ,grey 95%,transparent 100%) left/calc(100%/8) 100%,
/* Our Gradient */
linear-gradient(90deg, rgba(2, 0, 36, 1), rgba(9, 9, 121, 1) 35%, rgba(0, 212, 255, 1)) left/calc(var(--n, 0)* 100%/8) 100% no-repeat;
}
<div class="chart" ></div>
<div class="chart" style="--n:2"></div>
<div class="chart" style="--n:5"></div>
<div class="chart" style="--n:8"></div>

关于css - 向 flex 容器中的多个元素添加渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56068231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com