我试图在日历中为过去的日子添加渐变,但渐变线未对齐看起来有点无聊。
div.month {
flex: 1 1 auto;
display: grid;
grid-gap: 1px;
grid-template-columns: repeat(7, 1fr);
background-color: var(--color-border);
}
div.day {
background-color: var(--color-fill);
}
div.day + .past {
background: repeating-linear-gradient(
-45deg,
var(--color-fill),
var(--color-fill) 1.5rem,
var(--color-gradient-calendar-past) 1.5rem,
var(--color-gradient-calendar-past) 3rem
);
}
<div class="month noselect">
<div class="day void"><div class="day-number"></div></div>
<div class="day past"><div class="day-number">1</div></div>
<div class="day past"><div class="day-number">2</div></div>
<div class="day past"><div class="day-number">3</div></div>
<div class="day past"><div class="day-number">4</div></div>
...
<div class="day today"><div class="day-number">17</div></div>
如果不将日子变成正方形(aspect-ratio: 1/1
),是否可以对齐这些梯度?
我在想也许我可以让整个组件的背景变成渐变,但是如果我想在其他日子使用不同颜色的相同渐变,我就会遇到同样的问题。
我会这样做:
使用渐变作为背景
div.month
并将其设为红色。对于正常情况,div.day
您添加白色背景,对于正常情况,.past
您使背景透明并添加backdrop-filter
.通过使用
grayscale(1)
背景不再是红色,然后我稍微提高亮度。我假设您想使用红色来表示阻止的日期。如果您想使用红色和灰色之外的更多颜色(例如假期绿色),您可以使用
hue-rotate
:我认为这可能会让你到达那里,但如果没有实际的代码,很难说。
background-gradient
.::after
的伪元素(这是您可能需要针对应用程序进行修改的位置)。day
today
day
元素上设置位置,因此 usingposition: absolute
会将pseudo
元素定位到month
我设置的元素position: relative
上。clip-path: content-box;
将视图限制pseudo
为仅.today
包含类元素。使用
inset(0)