整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

深入浅出超好用的 CSS 阴影技巧

深入浅出超好用的 CSS 阴影技巧


者 | chokcoco
来源 | https://juejin.im/post/5be1023951882516fd36a38e

最近一个新的项目,CSS-Inspiration,挖掘了其他很多有关 CSS 阴影的点子,是之前的文章没有覆盖到的新内容,而且有一些很有意思,遂打算再起一篇。不过之前小编也发布了几篇关于CSS相关文章不妨一起来回顾回顾:

《手把手整理CSS3知识汇总【思维导图】》

HTML5 中,我们除了上一节讲过的可以对图形设置平移、旋转、缩放,还可以给图形添加阴影效果。添加阴影的时候只需要利用图形上下文对象的几个关于阴影绘制的属性就可以实现啦。

图形阴影绘制的属性



shadowOffsetX 属性和 shadowOffsetY 属性分别用于设置阴影在 X 轴和 Y 轴的延伸距离,属性值为正值表示向下或向右延伸,负值表示向上或向左延伸。

shadowBlur 属性用于设置阴影的模糊度,当我们不希望图形的阴影太清晰时,可以使用这个属性。属性值为必须为正值,否则无效哟,一般设定在 0到10 之间。

shadowColor 属性值用于设置阴影的颜色,属性值可以为任意标准的 CSS 颜色值,默认颜色为黑色。

给图形绘制阴影

例如给一个粉色的矩形绘制阴影。

示例:

绘制向右偏移 10 像素的阴影:

<!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>HTML5学习(9xkd.com)</title>
        </head>
        <body>
            <canvas id="mycanvas" width="300" height="200" style="border: 1px solid #000;"></canvas>
            <script>
                var can=document.getElementById("mycanvas");
                var ctx=can.getContext("2d");
                ctx.shadowOffsetX=10;
                ctx.shadowBlur=10;
                ctx.shadowColor="#000";
                ctx.fillStyle="pink";  // 填充颜色
                ctx.fillRect(50, 50, 150, 70);
            </script>
        </body>
    </html>    

在浏览器中的演示效果:


可以看到上图中,阴影的位置向右偏移,如果想要阴影向左偏移,可以将shadowOffsetX 的值设置为负数。

示例:

如果要绘制向上偏移 20 像素的阴影,则不需要设置 shadowOffsetX,而是设置 shadowOffsetY 属性,正值为向下偏移,负值为向上偏移:

var can=document.getElementById("mycanvas");
var ctx=can.getContext("2d");
ctx.shadowOffsetY=-20;
ctx.shadowBlur=10;
ctx.shadowColor="rgba(0, 0, 0, 0.7)"; // 设置透明度
ctx.fillStyle="pink";  // 填充颜色
ctx.fillRect(50, 50, 150, 70);

在浏览器中的演示效果:


可以看到这张截图中,矩形的阴影颜色要比上面示例中淡一点。这是因为我们在给阴影设置颜色时,指定了一个透明度,用到了 rgba() 函数,函数中第四个参数用于设置透明度,值为 0~1 之间的小数,0表示完全透明,1表示不透明。

示例:

给四个边设置阴影:

var can=document.getElementById("mycanvas");
var ctx=can.getContext("2d");
ctx.shadowBlur=10;
ctx.shadowColor="rgba(0, 0, 0, 0.7)"; // 设置透明度
ctx.fillStyle="pink";   // 填充颜色
ctx.fillRect(50, 50, 150, 70);

在浏览器中的演示效果:


在实际应用中,其实我们会经常用到阴影,例如给导航栏添加阴影、给按钮添加阴影、给图片添加阴影等,这样看上去就会更立体一些,增加层次感。

了解更多可查看链接:https://www.9xkd.com/

加一个简单的阴影


让我们为投影准备一个简单的HTML元素:

然后添加CSS:

输出结果是三个框,通过调用每个框的ID可以很容易地放置阴影。要添加阴影,让我们将属性box-shadow赋予框1:

我们提供三个参数。前两个参数是offset-x和offset-y。两者都确定投影的位置。相对于元素左上角的位置给出偏移量。偏移x处的正值表示将阴影向右引导,偏移y处的正值表示将阴影向下引导。

第三个参数是所需的阴影颜色。尽管这里我们使用elements <div>,但是属性box-shadow可以应用于所有其他HTML元素。

赋予模糊半径

如果想要阴影看起来更逼真,则可以使用blur-radius参数。此参数将设置我们如何给予阴影模糊效果。让我们将其应用于方框2:

注意第三个参数,该值4px调整应用于投影的模糊半径。

提供半径差数

如果要调整阴影的大小,我们可以添加参数spread-radius以使阴影扩大或缩小。让我们8px在框2中添加一个半径扩展:

注意参数的顺序。

合并多个阴影

我们甚至可以一次将多个阴影组合到一个元素中。让框3应用蓝色和绿色投影:

制作阴影

我们可以用参数制作一个向内的阴影inset。参数inset可以写在属性的开头或结尾box-shadow。以下示例使用elements blockquote。

我们还可以添加一些模糊和散布以增强阴影:

使用properties box-shadow,我们可以为所创建的网页提供阴影,从而可以提供良好的3D照明效果。