当前位置:首页 > JavaScript

js实现阴影层

2026-03-15 13:42:39JavaScript

使用CSS box-shadow属性

在HTML元素上直接添加CSS的box-shadow属性是最简单的方法。该属性支持设置阴影的偏移、模糊半径、扩散范围和颜色。

.shadow-element {
  box-shadow: 10px 10px 5px 0px rgba(0,0,0,0.75);
}

参数说明:

  • 第一个值:水平偏移量(正值向右)
  • 第二个值:垂直偏移量(正值向下)
  • 第三个值:模糊半径(值越大越模糊)
  • 第四个值:扩散范围(可选,正值扩大阴影)
  • 第五个值:阴影颜色(支持RGBA透明度)

动态修改阴影样式

通过JavaScript动态修改元素的阴影效果,可以响应交互事件。

const element = document.querySelector('.shadow-element');
element.style.boxShadow = '0 0 20px 5px rgba(255,0,0,0.5)';

创建投影滤镜效果

使用CSS的filter属性配合drop-shadow()函数,可以为非矩形元素(如透明PNG)创建更自然的阴影。

element.style.filter = 'drop-shadow(5px 5px 10px black)';

多层阴影叠加

通过逗号分隔多个box-shadow值,可以实现多层阴影叠加效果。

element.style.boxShadow = 
  '0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)';

使用Canvas绘制阴影

对于Canvas绘制的图形,可以通过设置阴影属性实现更复杂的阴影效果。

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.shadowColor = 'rgba(0,0,0,0.5)';
ctx.shadowBlur = 10;
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.fillRect(20, 20, 100, 100);

SVG阴影效果

在SVG元素中,可以使用filter元素配合feGaussianBlur等滤镜原语创建阴影。

<svg>
  <defs>
    <filter id="shadow">
      <feGaussianBlur in="SourceAlpha" stdDeviation="3"/>
      <feOffset dx="2" dy="2" result="offsetblur"/>
      <feMerge>
        <feMergeNode in="offsetblur"/>
        <feMergeNode in="SourceGraphic"/>
      </feMerge>
    </filter>
  </defs>
  <rect width="100" height="100" filter="url(#shadow)"/>
</svg>

性能优化建议

频繁修改阴影属性可能引发重绘影响性能。对于动画场景,考虑使用transform属性代替直接修改阴影参数,或使用will-change属性提示浏览器优化。

js实现阴影层

.animated-shadow {
  will-change: box-shadow;
  transition: box-shadow 0.3s ease;
}

标签: 阴影js
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

使用 setInterval 实现倒计时 通过 setInterval 定时器每秒更新剩余时间,适用于简单倒计时场景。 function countdown(seconds, callback) {…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现目录

js实现目录

实现目录的基本思路 在JavaScript中实现目录功能通常涉及以下几个核心步骤:解析文档中的标题元素(如h1-h6),动态生成目录结构,并添加交互逻辑(如点击跳转)。以下是具体实现方法: 解析标题…