1

投影

1.单侧投影
思路是box-shadow 的第四个长度参数。它排在模糊半径参数之后,称作扩张半径。这个参数会根据你指定的值去扩大或当指定负值时,缩小投影的尺寸。例如,一个-5px 的扩张半径会把投影的宽度和高度各减少10px(即每边各5px)。

box-shadow: 0 5px 4px -4px black;

clipboard.png

2.邻边投影

box-shadow: 3px 3px 6px -3px black;

clipboard.png

3.双侧投影

用两块投影(每边各一块)来实现

box-shadow: 5px 0 5px -5px black,
            -5px 0 5px -5px black;

不规则投影

解决办法是使用滤镜效果,filter。值有很多,比如blur()、grayscale() 以及drop-shadow()等。

实现不规则投影使用的是drop-shadow

filter: drop-shadow(2px 2px 10px rgba(0,0,0,.5));

clipboard.png

注:drop-shadow会给任何非透明的部分打上投影,包括文本。如果文本设置了text-shadow,就是投影的投影。

染色效果

方案一:
为了解决给图片加一层统一的渲染风格,使用filter滤镜,并且需要将一些滤镜的值叠加使用。

sepia滤镜,它会给图片增加一种降饱和度的橙黄色染色效果。
saturate滤镜,给每个像素提升饱和度
hue-rotate滤镜,把每个像素的色相以指定的度数进行偏移

filter: sepia(1) saturate(4) hue-rotate(295deg);

clipboard.png

原图:
clipboard.png

方案二:
基于混合模式的方案。mix-blendmode可以为整个元素设置混合模式。background-blend-mode 可以为每层背景单独指定混合模式。

实现方式:

<a>
    <img src="tiger.jpg" alt="Rawrrr!" />
</a>
a {
    background: hsl(335, 100%, 50%);
}
img {
    mix-blend-mode: luminosity;
}

毛玻璃效果

<div class="bg">
    <main>
      <blockquote>
        "The only way to get rid of a temptation[...]"
      </blockquote>
    </main>
</div>

.bg {
  width: 500px;
  height: 300px;
  background: url("dog.jpg");
  background-size: cover;
}

main {
  position: relative;
  background: hsla(0, 0%, 100%, .3);
  overflow: hidden;
}

main::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  filter: blur(20px);
  margin: -30px;
}

clipboard.png

折角效果

45°折角的解决方案
增加一个暗色的三角形来实现翻折效果。实现方法是增加另一层渐变来生成这个三角形并将其定位在右上角,这样就可以通过background-size 来控制折角的大小。

div {
    background: #58a; /* 回退样式 */
    background:
    linear-gradient(to left bottom, transparent 50%, rgba(0,0,0,.4) 0) no-repeat 100% 0 / 2em 2em,
    linear-gradient(-135deg, transparent 1.5em, #58a 0);
}

clipboard.png


mary_xi
46 声望2 粉丝