AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题 / 76925375
Accepted
Jan Vladimir Mostert
Jan Vladimir Mostert
Asked: 2023-08-18 06:04:36 +0800 CST2023-08-18 06:04:36 +0800 CST 2023-08-18 06:04:36 +0800 CST

是否可以在元素之间对齐渐变?

  • 772

我试图在日历中为过去的日子添加渐变,但渐变线未对齐看起来有点无聊。

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),是否可以对齐这些梯度?

在此输入图像描述

我在想也许我可以让整个组件的背景变成渐变,但是如果我想在其他日子使用不同颜色的相同渐变,我就会遇到同样的问题。

在此输入图像描述

css
  • 2 2 个回答
  • 41 Views

2 个回答

  • Voted
  1. Best Answer
    RANGO
    2023-08-18T07:05:54+08:002023-08-18T07:05:54+08:00

    我会这样做:

    使用渐变作为背景div.month并将其设为红色。对于正常情况,div.day您添加白色背景,对于正常情况,.past您使背景透明并添加backdrop-filter.

    div.month {
        height: 23vW;
        flex: 1 1 auto;
        display: grid;
        grid-template-columns: repeat(7, 1fr);
        background: repeating-linear-gradient(-45deg, #fff, #fff 1.5rem, #fdc5d0 1.5rem, #fdc5d0 3rem );
    }
    
    div.day {
        border: 1px solid #fff;
        background-color: #fff;
    }
    
    div.day + .past {
        background-color: #0000;
        backdrop-filter: grayscale(1) brightness(1.13);
    }
    
    div.day + .blocked {
        background-color: #0000;
    }
    <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 past"><div class="day-number">5</div></div>
        <div class="day past"><div class="day-number">6</div></div>
        <div class="day past"><div class="day-number">7</div></div>
        <div class="day blocked"><div class="day-number">8</div></div>
        <div class="day past"><div class="day-number">10</div></div>
        <div class="day past"><div class="day-number">11</div></div>
        <div class="day past"><div class="day-number">12</div></div>
        <div class="day past"><div class="day-number">13</div></div>
        <div class="day past"><div class="day-number">14</div></div>
    </div>

    通过使用grayscale(1)背景不再是红色,然后我稍微提高亮度。

    我假设您想使用红色来表示阻止的日期。如果您想使用红色和灰色之外的更多颜色(例如假期绿色),您可以使用hue-rotate:

    div.day + .holiday {
        backdrop-filter: hue-rotate(123deg);
    }
    
    • 3
  2. disinfor
    2023-08-18T06:37:01+08:002023-08-18T06:37:01+08:00

    我认为这可能会让你到达那里,但如果没有实际的代码,很难说。

    1. 这会将整个容器的背景设置为background-gradient.
    2. 它将相同的背景渐变设置为具有该类的元素::after的伪元素(这是您可能需要针对应用程序进行修改的位置)。daytoday
    3. 我们没有在day元素上设置位置,因此 usingposition: absolute会将pseudo元素定位到month我设置的元素position: relative上。
    4. 然后您可以使用clip-path: content-box;将视图限制pseudo为仅.today包含类元素。

    :root {
      --color-border: lightgray;
      --color-fill: white;
      --color-gradient-calendar-past: lightgray;
      --color-gradient-calendar-now: pink;
    }
    
    div.month {
      position: relative;
      flex: 1 1 auto;
      display: grid;
      grid-gap: 1px;
      grid-template-columns: repeat(7, 1fr);
      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.void {
      background: white;
    }
    
    div.day {
      height: 200px;
    }
    
    div.today::after {
      z-index: 2;
      width: 100%;
      height: 100%;
      position: absolute;
      top: 0;
      left: 0;
      content: '';
      display: block;
      background: repeating-linear-gradient( -45deg, var(--color-fill), var(--color-fill) 1.5rem, var(--color-gradient-calendar-now) 1.5rem, var(--color-gradient-calendar-now) 3rem);
    }
    
    div.today {
      clip-path: content-box;
    }
    <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>
      <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>
    </div>

    使用inset(0)

    :root {
      --color-border: lightgray;
      --color-fill: white;
      --color-gradient-calendar-past: lightgray;
      --color-gradient-calendar-now: pink;
    }
    
    div.month {
      position: relative;
      flex: 1 1 auto;
      display: grid;
      grid-gap: 1px;
      grid-template-columns: repeat(7, 1fr);
      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.void {
      background: white;
    }
    
    div.day {
      height: 200px;
    }
    
    div.today::after {
      z-index: 2;
      width: 100%;
      height: 100%;
      position: absolute;
      top: 0;
      left: 0;
      content: '';
      display: block;
      background: repeating-linear-gradient( -45deg, var(--color-fill), var(--color-fill) 1.5rem, var(--color-gradient-calendar-now) 1.5rem, var(--color-gradient-calendar-now) 3rem);
    }
    
    div.today {
      clip-path: inset(0);
    }
    <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>
      <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>
    </div>

    • 0

相关问题

  • 带盒阴影的圆角边缘 - Tailwind CSS

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    使用 <font color="#xxx"> 突出显示 html 中的代码

    • 2 个回答
  • Marko Smith

    为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类?

    • 1 个回答
  • Marko Smith

    您可以使用花括号初始化列表作为(默认)模板参数吗?

    • 2 个回答
  • Marko Smith

    为什么列表推导式在内部创建一个函数?

    • 1 个回答
  • Marko Smith

    我正在尝试仅使用海龟随机和数学模块来制作吃豆人游戏

    • 1 个回答
  • Marko Smith

    java.lang.NoSuchMethodError: 'void org.openqa.selenium.remote.http.ClientConfig.<init>(java.net.URI, java.time.Duration, java.time.Duratio

    • 3 个回答
  • Marko Smith

    为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)?

    • 4 个回答
  • Marko Smith

    为什么库中不调用全局变量的构造函数?

    • 1 个回答
  • Marko Smith

    std::common_reference_with 在元组上的行为不一致。哪个是对的?

    • 1 个回答
  • Marko Smith

    C++17 中 std::byte 只能按位运算?

    • 1 个回答
  • Martin Hope
    fbrereto 为什么在传递 {} 时重载解析更喜欢 std::nullptr_t 而不是类? 2023-12-21 00:31:04 +0800 CST
  • Martin Hope
    比尔盖子 您可以使用花括号初始化列表作为(默认)模板参数吗? 2023-12-17 10:02:06 +0800 CST
  • Martin Hope
    Amir reza Riahi 为什么列表推导式在内部创建一个函数? 2023-11-16 20:53:19 +0800 CST
  • Martin Hope
    Michael A fmt 格式 %H:%M:%S 不带小数 2023-11-11 01:13:05 +0800 CST
  • Martin Hope
    God I Hate Python C++20 的 std::views::filter 未正确过滤视图 2023-08-27 18:40:35 +0800 CST
  • Martin Hope
    LiDa Cute 为什么 'char -> int' 是提升,而 'char -> Short' 是转换(但不是提升)? 2023-08-24 20:46:59 +0800 CST
  • Martin Hope
    jabaa 为什么库中不调用全局变量的构造函数? 2023-08-18 07:15:20 +0800 CST
  • Martin Hope
    Panagiotis Syskakis std::common_reference_with 在元组上的行为不一致。哪个是对的? 2023-08-17 21:24:06 +0800 CST
  • Martin Hope
    Alex Guteniev 为什么编译器在这里错过矢量化? 2023-08-17 18:58:07 +0800 CST
  • Martin Hope
    wimalopaan C++17 中 std::byte 只能按位运算? 2023-08-17 17:13:58 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve