发布于 4年前

css 如何创建动态阴影

创建与类似的阴影box-shadow 而是基于元素本身的颜色。

HTML

<div class="dynamic-shadow-parent">
  <div class="dynamic-shadow"></div>
</div>

CSS

.dynamic-shadow-parent {
  position: relative;
  z-index: 1;
}
.dynamic-shadow {
  position: relative;
  width: 10rem;
  height: 10rem;
  background: linear-gradient(75deg, #6d78ff, #00ffb8);
}
.dynamic-shadow::after {
  content: '';
  width: 100%;
  height: 100%;
  position: absolute;
  background: inherit;
  top: 0.5rem;
  filter: blur(0.4rem);
  opacity: 0.7;
  z-index: -1;
}

说明 代码片段需要一些复杂的情况来正确堆叠上下文,这样伪元素将定位在元素本身的下面,同时仍然可见。

  1. position: relative 在父元素上为子元素建立笛卡尔定位上下文。
  2. z-index: 1 建立新的堆叠内容。
  3. position: relative 在子级上建立伪元素的定位上下文。
  4. ::after 定义伪元素。
  5. position: absolute 从文档流中取出伪元素,并将其相对于父元素定位。
  6. width: 100% 和height: 100% 调整伪元素的大小以填充其父元素的尺寸,使其大小相等。
  7. background: inherit 使伪元素继承在元素上指定的线性渐变。
  8. top: 0.5rem 将伪元素从其父元素稍微向下偏移。
  9. filter: blur(0.4rem) 将模糊伪元素以在下面创建阴影的外观。
  10. opacity: 0.7 使伪元素部分透明。
  11. z-index: -1 将伪元素定位在父元素后面。
CSS
©2020 edoou.com   京ICP备16001874号-3