当前位置:首页 > JavaScript

js实现内发光

2026-04-07 17:09:07JavaScript

在JavaScript中实现内发光效果通常可以通过CSS的box-shadowfilter: drop-shadow()结合Canvas或SVG来实现。以下是几种常见的方法:

使用CSS box-shadow实现内发光

CSS的box-shadow属性可以通过inset参数实现内发光效果。以下是一个示例代码:

<div class="glow-effect"></div>

<style>
.glow-effect {
  width: 200px;
  height: 200px;
  background-color: #333;
  box-shadow: inset 0 0 20px 10px rgba(255, 0, 0, 0.7);
}
</style>
  • inset:表示阴影向内投射。
  • 0 0:阴影的水平和垂直偏移(内发光通常不需要偏移)。
  • 20px:模糊半径,控制发光的扩散程度。
  • 10px:扩展半径,控制发光的范围。
  • rgba(255, 0, 0, 0.7):发光颜色和透明度。

使用Canvas实现动态内发光

如果需要动态控制内发光效果,可以使用Canvas绘制:

<canvas id="glowCanvas" width="300" height="300"></canvas>

<script>
const canvas = document.getElementById('glowCanvas');
const ctx = canvas.getContext('2d');

// 绘制矩形
ctx.fillStyle = '#333';
ctx.fillRect(50, 50, 200, 200);

// 使用阴影模糊实现内发光
ctx.shadowColor = 'rgba(255, 0, 0, 0.7)';
ctx.shadowBlur = 20;
ctx.fillStyle = 'transparent';
ctx.fillRect(50, 50, 200, 200);
</script>

使用SVG实现内发光

SVG的feGaussianBlurfeComposite滤镜可以实现内发光效果:

<svg width="300" height="300">
  <defs>
    <filter id="innerGlow">
      <feGaussianBlur stdDeviation="5" result="blur"/>
      <feComposite operator="in" in="blur" in2="SourceGraphic"/>
    </filter>
  </defs>
  <rect x="50" y="50" width="200" height="200" fill="#333" filter="url(#innerGlow)"/>
</svg>
  • feGaussianBlur:定义模糊效果。
  • feComposite:通过operator="in"将模糊限制在图形内部。

使用JavaScript动态调整CSS内发光

通过JavaScript动态修改CSS属性,实现交互式内发光:

<div id="dynamicGlow" class="glow-effect"></div>

<script>
const glowElement = document.getElementById('dynamicGlow');

// 动态调整发光颜色和大小
function updateGlow(color, blur, spread) {
  glowElement.style.boxShadow = `inset 0 0 ${blur}px ${spread}px ${color}`;
}

// 示例:红色内发光,模糊20px,扩展10px
updateGlow('rgba(255, 0, 0, 0.7)', 20, 10);
</script>

结合CSS变量实现灵活控制

通过CSS变量和JavaScript结合,可以更灵活地控制内发光效果:

js实现内发光

<div class="glow-effect" style="--glow-color: rgba(255, 0, 0, 0.7);"></div>

<style>
.glow-effect {
  width: 200px;
  height: 200px;
  background-color: #333;
  box-shadow: inset 0 0 20px 10px var(--glow-color);
}
</style>

<script>
document.querySelector('.glow-effect').style.setProperty('--glow-color', 'rgba(0, 255, 0, 0.7)');
</script>

注意事项

  • CSS的box-shadow性能较好,适合静态或简单动态效果。
  • Canvas和SVG适合需要复杂或动态控制的场景。
  • 内发光效果可能会影响页面渲染性能,尤其是在移动设备上,需谨慎使用。

标签: js
分享给朋友:

相关文章

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现上传图片

js实现上传图片

使用HTML5的File API实现图片上传 HTML5的File API允许通过JavaScript访问用户选择的文件。需要创建一个文件输入元素,并监听其change事件。 <input t…

js 实现日历

js 实现日历

实现日历的基本思路 日历的核心功能是展示日期,并允许用户进行日期选择或导航。JavaScript 可以动态生成日历的 HTML 结构,并处理用户交互逻辑。 基础日历结构 日历通常包含头部(显示月份和…