• CSS – Box Shadow & Text Shadow


    前言

    之前在 CSS – W3Schools 学习笔记 (3) 介绍过这个功能, 但一直不熟练. 每次用都卡卡的, 估计是没有些一篇独立的笔记的缘故. 特此写一篇.

    Text Shadow

    下面这个是 before, after 的效果

    CSS Style

    h1 {
      text-shadow: 5px 5px 5px red;
    }

    4 个值分别代表 x y blur color, 一个一个理解

    Offset

    text-shadow: 50px 50px 0 red;

    效果

    它的逻辑就是通过 x, y 坐标生成一个 "影子" 出来. 之所以没有蒙蒙是因为 blur = 0

    Blur

    text-shadow: 50px 50px 5px red;

    效果

    blur 5px 的逻辑是字体被放大 5px 然后带有颜色带有 gradients 渐变. 所以就蒙蒙了.

    Color

    color 默认是依据字本身的 color 也就是 currentColor 的意思啦.

    multiple shadow

    text-shadow: 50px 50px 5px red, -50px -50px 5px yellow

    可以创建多个 shadow, 只要加上逗号就可以了.

    Box Shadow

    .box {
      width: 100px;
      height: 100px;
      border: 1px solid black;
      color: pink;
      box-shadow: 100px 100px 0 1px;
    }

    效果

    box-shadow 有 5 个值, x y blur spread color

    offset 的原理和 text shadow 是一样的. 需要注意的是它整个 "影子" 都是有颜色的哦,

    color 默认也是 currentColor

    blur 的原理也是往外扩展 px 然后 gradients 渐变

    multiple shadow 也是一样的, 加逗号.

    spread

    spread 和 blur 类似, 都是往外扩展 px, 但它没有 gradients 渐变 而是实打实的颜色

     

    左图是真实效果, 有图是用来解释的, 粉红里的框是我自己加的, 框往外 10px 就是然后没有渐变

    如果是 blur 的话效果是这样的

    因为是渐变所以看上去就小了很多.

    一边 shadow

    参考: stackoverflow – How can I add a box-shadow on one side of an element?

    box-shadow: 10px 0 10px -10px red;

    原理就是 -10px spread, 它让 4 边都吃进去. 然后 10px blur 又长出来. 最后 10px 右就只有边被推出来, 所以看见了 shadow.

    过程类似上图这样. 注意最后一张图, bottom 的 blur 的 width 其实是比较短的, 因为 spread 的原因. 这个效果不一定是想要的

    所以还有另一个方法是用 clip-path

    一样是用 box-shadow 来做影子, 只是用了 clip 把不想要的 3 边影子 clip 掉. 这里的关键是 inset

    inset 的用法是这样的

    clip-path: inset(20px 20px 50px 20px);

    效果

    有点像 padding. top right bottom left 往内 clip.

    回到 box-shadow 的例子. inset(0, -15px 0 0)

    如果是 4 个 0, 那么所有 shadow 都看不见. 

    right 15px 是往内 clip, 反过来 right -15px 是往外. 所以反而 right shadow 就出现了. 很巧妙的技巧.

    但也可以看出不是正规做法. 但是比起 spread 这招还是比较好使的.

    总结

    shadow 的 step 是

    1. 通过 offset 画一个影子 (如果 offset 0 0 就是在原地画影子)

    2. 通过 spread 扩大 / 缩小 影子的体积

    3. 通过 blur 扩大影子的体积.

  • 相关阅读:
    树点涂色
    搜索+DP的一波小水题
    洛谷 P2194 HXY烧情侣
    洛谷 P3119 [USACO15JAN]草鉴定Grass Cownoisseur
    走楼梯升级版(9.8 模拟赛。。。xxy原创)
    洛谷 P2966 [USACO09DEC]牛收费路径Cow Toll Paths
    Tyvj P2207 上学路线route
    cogs 2342. [SCOI2007]kshort
    洛谷 P2740 [USACO4.2]草地排水Drainage Ditches
    洛谷 P1318 积水面积
  • 原文地址:https://www.cnblogs.com/keatkeat/p/16420712.html
Copyright © 2020-2023  润新知