当前位置:首页 > JavaScript

js实现阴影

2026-02-02 03:08:52JavaScript

使用 box-shadow 属性

在 CSS 中,box-shadow 是最常用的阴影实现方式。通过 JavaScript 动态设置元素的 box-shadow 属性,可以实现阴影效果。

const element = document.getElementById('myElement');
element.style.boxShadow = '2px 2px 10px rgba(0, 0, 0, 0.5)';

参数说明:

  • 水平偏移(2px):阴影向右偏移的距离。
  • 垂直偏移(2px):阴影向下偏移的距离。
  • 模糊半径(10px):阴影的模糊程度。
  • 颜色(rgba(0, 0, 0, 0.5)):阴影的颜色和透明度。

使用 text-shadow 属性

对于文本阴影,可以使用 text-shadow 属性。通过 JavaScript 动态设置文本的阴影效果。

const textElement = document.getElementById('myText');
textElement.style.textShadow = '1px 1px 3px #000000';

参数说明:

  • 水平偏移(1px):阴影向右偏移的距离。
  • 垂直偏移(1px):阴影向下偏移的距离。
  • 模糊半径(3px):阴影的模糊程度。
  • 颜色(#000000):阴影的颜色。

使用 Canvas 绘制阴影

在 Canvas 中,可以通过设置 shadowBlurshadowColorshadowOffsetXshadowOffsetY 属性来实现阴影效果。

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);

参数说明:

  • shadowColor:阴影的颜色。
  • shadowBlur:阴影的模糊程度。
  • shadowOffsetXshadowOffsetY:阴影的偏移距离。

使用 SVG 实现阴影

在 SVG 中,可以通过 filterfeGaussianBlur 元素实现阴影效果。

const svg = document.getElementById('mySvg');
const filter = document.createElementNS('http://www.w3.org/2000/svg', 'filter');
filter.setAttribute('id', 'shadow');
const feGaussianBlur = document.createElementNS('http://www.w3.org/2000/svg', 'feGaussianBlur');
feGaussianBlur.setAttribute('in', 'SourceAlpha');
feGaussianBlur.setAttribute('stdDeviation', '2');
filter.appendChild(feGaussianBlur);
svg.appendChild(filter);

const rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');
rect.setAttribute('x', '20');
rect.setAttribute('y', '20');
rect.setAttribute('width', '100');
rect.setAttribute('height', '100');
rect.setAttribute('filter', 'url(#shadow)');
svg.appendChild(rect);

使用 CSS 变量动态控制阴影

通过 CSS 变量和 JavaScript 结合,可以动态调整阴影效果。

<style>
  :root {
    --shadow-color: rgba(0, 0, 0, 0.5);
    --shadow-offset: 2px;
    --shadow-blur: 10px;
  }
  .shadow-box {
    box-shadow: var(--shadow-offset) var(--shadow-offset) var(--shadow-blur) var(--shadow-color);
  }
</style>

<script>
  document.documentElement.style.setProperty('--shadow-color', 'rgba(255, 0, 0, 0.5)');
  document.documentElement.style.setProperty('--shadow-offset', '5px');
  document.documentElement.style.setProperty('--shadow-blur', '15px');
</script>

使用第三方库

如果需要更复杂的阴影效果,可以使用第三方库如 anime.jsGSAP 来实现动画阴影。

js实现阴影

import anime from 'animejs';

anime({
  targets: '.shadow-box',
  boxShadow: ['0 0 0 rgba(0,0,0,0)', '10px 10px 20px rgba(0,0,0,0.5)'],
  duration: 1000,
  easing: 'easeInOutQuad'
});

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

相关文章

js实现倒计时

js实现倒计时

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

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现图片

js实现图片

图片加载与显示 在JavaScript中,可以通过Image对象动态加载图片。创建实例后设置src属性触发加载,通过onload回调处理加载完成后的操作: const img = new Ima…