当前位置:首页 > JavaScript

JS实现闪动

2026-03-15 06:09:40JavaScript

使用CSS动画实现闪动效果

通过CSS的@keyframes规则定义动画,结合opacity属性控制元素的透明度变化,实现闪动效果。JavaScript仅用于触发或控制动画。

.blink {
  animation: blink-animation 1s infinite;
}

@keyframes blink-animation {
  0% { opacity: 1; }
  50% { opacity: 0; }
  100% { opacity: 1; }
}
const element = document.getElementById('target');
element.classList.add('blink');

使用JavaScript定时器实现闪动

通过setInterval周期性切换元素的显示/隐藏状态,实现更灵活的闪动控制。可自定义闪动速度和次数。

JS实现闪动

function blink(element, duration = 500, times = Infinity) {
  let count = 0;
  const interval = setInterval(() => {
    element.style.visibility = 
      element.style.visibility === 'hidden' ? 'visible' : 'hidden';
    if (++count >= times * 2) clearInterval(interval);
  }, duration);
}

blink(document.getElementById('target'), 300, 5);

使用requestAnimationFrame实现高性能闪动

适合需要平滑动画效果的场景,通过浏览器原生动画API实现性能优化的闪动效果。

JS实现闪动

function smoothBlink(element, duration = 1000) {
  let start = null;
  function step(timestamp) {
    if (!start) start = timestamp;
    const progress = (timestamp - start) % duration;
    element.style.opacity = Math.abs(0.5 - progress / duration) * 2;
    requestAnimationFrame(step);
  }
  requestAnimationFrame(step);
}

smoothBlink(document.getElementById('target'));

结合CSS变量实现可控闪动

通过JavaScript动态修改CSS变量值,实现可实时调整的闪动效果。

.element {
  --blink-opacity: 1;
  opacity: var(--blink-opacity);
}
function variableBlink(element, speed = 1) {
  let direction = -0.05;
  function update() {
    const current = parseFloat(
      getComputedStyle(element).getPropertyValue('--blink-opacity')
    );
    const newValue = current + direction * speed;
    if (newValue <= 0 || newValue >= 1) direction *= -1;
    element.style.setProperty('--blink-opacity', newValue);
    requestAnimationFrame(update);
  }
  update();
}

variableBlink(document.querySelector('.element'));

使用Web Animations API实现

现代浏览器支持的Web Animations API提供更强大的动画控制能力。

function webApiBlink(element) {
  element.animate([
    { opacity: 1 },
    { opacity: 0 },
    { opacity: 1 }
  ], {
    duration: 1000,
    iterations: Infinity
  });
}

webApiBlink(document.getElementById('anim-element'));

标签: JS
分享给朋友:

相关文章

JS实现跳表

JS实现跳表

跳表的基本概念 跳表(Skip List)是一种基于概率的数据结构,允许快速查询、插入和删除操作,时间复杂度平均为O(log n)。它通过多层链表实现,每一层都是下一层的子集,高层链表跳过多个元素,从…

JS如何调用react组件

JS如何调用react组件

调用React组件的常见方法 在JavaScript中调用React组件通常涉及以下几种场景和方式: 直接渲染组件 通过ReactDOM.render()方法将组件渲染到DOM节点: import…

实现 slice JS

实现 slice JS

实现 JavaScript 的 slice 方法 JavaScript 的 slice 方法用于从数组或字符串中提取一部分,返回一个新的数组或字符串,而不修改原始数据。以下是实现 slice 的核心逻…

JS实现GPS

JS实现GPS

GPS定位的基本原理 GPS定位主要通过浏览器提供的Geolocation API实现。该API允许网页获取用户设备的地理位置信息,前提是用户授权同意。位置信息通常来源于设备的GPS模块、Wi-Fi或…

JS实现inpubox

JS实现inpubox

实现 InputBox 的基本结构 使用 HTML 和 CSS 创建一个基础的输入框结构,确保样式简洁且易于扩展。 <div class="input-box"> <input…

JS原子锁实现

JS原子锁实现

实现原子锁的方法 使用JavaScript的Atomics对象和SharedArrayBuffer可以实现原子锁。Atomics提供了一组静态方法用于对SharedArrayBuffer进行原子操作,…