当前位置:首页 > 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实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…

js实现下拉刷新

js实现下拉刷新

监听触摸事件 通过监听 touchstart、touchmove 和 touchend 事件来检测用户下拉手势。记录触摸起始位置和移动距离。 let startY = 0; let currentY…

js实现上传图片

js实现上传图片

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

js实现表单验证提交表单提交表单提交

js实现表单验证提交表单提交表单提交

表单验证与提交的实现 在JavaScript中实现表单验证并提交表单,可以通过监听表单的提交事件,进行验证后决定是否提交。以下是实现方法: 基础表单验证 通过监听表单的submit事件,阻止默认提交…