当前位置:首页 > JavaScript

js实现效果

2026-03-13 17:23:32JavaScript

在JavaScript中实现特定效果通常涉及DOM操作、事件处理、动画或异步请求等。以下是几种常见效果的实现方法及示例代码:

点击按钮显示/隐藏元素

通过切换CSS的display属性实现显隐效果:

js实现效果

const button = document.getElementById('toggleButton');
const element = document.getElementById('targetElement');

button.addEventListener('click', () => {
  if (element.style.display === 'none') {
    element.style.display = 'block';
  } else {
    element.style.display = 'none';
  }
});

平滑滚动到页面顶部

使用window.scrollTo配合动画实现:

function scrollToTop() {
  const scrollDuration = 500;
  const scrollStep = -window.scrollY / (scrollDuration / 15);

  const scrollInterval = setInterval(() => {
    if (window.scrollY === 0) {
      clearInterval(scrollInterval);
    } else {
      window.scrollBy(0, scrollStep);
    }
  }, 15);
}

实时搜索过滤列表

通过输入框事件动态过滤内容:

js实现效果

const searchInput = document.getElementById('searchInput');
const items = document.querySelectorAll('.list-item');

searchInput.addEventListener('input', (e) => {
  const searchTerm = e.target.value.toLowerCase();

  items.forEach(item => {
    const text = item.textContent.toLowerCase();
    item.style.display = text.includes(searchTerm) ? 'block' : 'none';
  });
});

图片懒加载

使用Intersection Observer API延迟加载图片:

const lazyImages = document.querySelectorAll('img[data-src]');

const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      observer.unobserve(img);
    }
  });
});

lazyImages.forEach(img => observer.observe(img));

拖放功能实现

通过拖拽API实现元素拖放:

const draggable = document.getElementById('draggable');
const dropzone = document.getElementById('dropzone');

draggable.addEventListener('dragstart', (e) => {
  e.dataTransfer.setData('text/plain', e.target.id);
});

dropzone.addEventListener('dragover', (e) => {
  e.preventDefault();
});

dropzone.addEventListener('drop', (e) => {
  e.preventDefault();
  const id = e.dataTransfer.getData('text/plain');
  e.target.appendChild(document.getElementById(id));
});

注意事项

  1. 现代浏览器支持使用classList.toggle()替代直接操作style属性
  2. 滚动动画可结合requestAnimationFrame优化性能
  3. 搜索过滤建议添加防抖(debounce)减少频繁触发
  4. 拖放需确保目标元素设置了draggable="true"属性

以上代码需根据实际HTML结构调整选择器。复杂场景建议考虑使用CSS过渡或动画库(如GSAP)增强效果。

标签: 效果js
分享给朋友:

相关文章

vue实现效果展示

vue实现效果展示

Vue 实现效果展示的方法 动态数据绑定展示 通过 Vue 的响应式特性,实时展示数据变化。例如,表单输入与预览同步: <template> <div> <…

vue实现吸附效果

vue实现吸附效果

Vue实现吸附效果的方法 吸附效果通常指页面滚动时,某个元素固定在特定位置(如顶部或底部)。以下是几种实现方式: 使用CSS的position: sticky 通过CSS的sticky定位实现吸附效…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现pdf在线预览

js实现pdf在线预览

使用PDF.js实现PDF在线预览 PDF.js是由Mozilla开发的一个开源JavaScript库,可以在网页中直接渲染PDF文件。以下是实现PDF在线预览的步骤: 引入PDF.js库 在HT…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…