点击我 #myB…">
当前位置:首页 > JavaScript

js实现按钮效果

2026-02-03 07:43:00JavaScript

实现基础按钮效果

使用HTML和CSS创建基础按钮样式,通过JavaScript添加交互效果:

<button id="myButton">点击我</button>
#myButton {
  padding: 10px 20px;
  background-color: #4CAF50;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.3s;
}

#myButton:hover {
  background-color: #45a049;
}
const button = document.getElementById('myButton');
button.addEventListener('click', function() {
  this.textContent = '已点击!';
  this.style.backgroundColor = '#ff9800';
});

添加点击动画效果

使用CSS动画和JavaScript触发:

js实现按钮效果

@keyframes bounce {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(0.9); }
}

.animate {
  animation: bounce 0.3s;
}
button.addEventListener('click', function() {
  this.classList.add('animate');
  setTimeout(() => this.classList.remove('animate'), 300);
});

实现按钮禁用状态

通过JavaScript控制按钮状态:

js实现按钮效果

button.addEventListener('click', function() {
  this.disabled = true;
  this.textContent = '处理中...';

  // 模拟异步操作
  setTimeout(() => {
    this.disabled = false;
    this.textContent = '完成!';
  }, 2000);
});

创建波纹点击效果

添加视觉反馈的波纹动画:

.ripple {
  position: relative;
  overflow: hidden;
}

.ripple-effect {
  position: absolute;
  border-radius: 50%;
  background-color: rgba(255, 255, 255, 0.7);
  transform: scale(0);
  animation: ripple 0.6s linear;
}

@keyframes ripple {
  to {
    transform: scale(4);
    opacity: 0;
  }
}
button.addEventListener('click', function(e) {
  const ripple = document.createElement('span');
  ripple.classList.add('ripple-effect');

  const rect = this.getBoundingClientRect();
  const size = Math.max(rect.width, rect.height);
  ripple.style.width = ripple.style.height = `${size}px`;
  ripple.style.left = `${e.clientX - rect.left - size/2}px`;
  ripple.style.top = `${e.clientY - rect.top - size/2}px`;

  this.appendChild(ripple);
  setTimeout(() => ripple.remove(), 600);
});

实现按钮加载状态

创建加载动画指示器:

.loading::after {
  content: "";
  display: inline-block;
  width: 16px;
  height: 16px;
  margin-left: 8px;
  border: 2px solid #fff;
  border-radius: 50%;
  border-color: #fff transparent #fff transparent;
  animation: loading 1.2s linear infinite;
}

@keyframes loading {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
button.addEventListener('click', function() {
  this.classList.add('loading');
  this.disabled = true;

  setTimeout(() => {
    this.classList.remove('loading');
    this.disabled = false;
  }, 3000);
});

标签: 按钮效果
分享给朋友:

相关文章

vue实现按钮实现点击功能

vue实现按钮实现点击功能

Vue 按钮点击功能实现 在 Vue 中实现按钮点击功能可以通过多种方式完成,以下是常见的实现方法: 方法一:使用 v-on 指令 通过 v-on:click 或简写 @click 绑定事件:…

vue实现吸附效果

vue实现吸附效果

实现吸附效果的基本思路 吸附效果通常指当页面滚动到某个位置时,元素固定在视口的特定位置。Vue中可以通过监听滚动事件结合CSS的position: sticky或动态样式切换实现。 使用CSS的po…

vue实现玻璃效果

vue实现玻璃效果

实现玻璃效果的方法 在Vue中实现玻璃效果(毛玻璃或磨砂玻璃)可以通过CSS的backdrop-filter属性结合Vue的动态样式绑定来实现。以下是具体步骤: 使用CSS backdrop-fil…

vue实现翻牌效果

vue实现翻牌效果

实现翻牌效果的基本思路 翻牌效果通常指卡片正面和背面的翻转动画,可以通过CSS 3D变换和Vue的过渡系统实现。核心是利用transform-style: preserve-3d和rotateY旋转完…

vue实现筛选效果

vue实现筛选效果

Vue 实现筛选效果的方法 基于计算属性的筛选 在 Vue 中可以通过计算属性实现数据的动态筛选。定义一个计算属性,根据用户输入的筛选条件返回过滤后的数据列表。 <template>…

vue实现弹幕效果

vue实现弹幕效果

实现弹幕效果的基本思路 在Vue中实现弹幕效果,通常需要结合CSS动画和动态数据渲染。弹幕的核心是让文字从右向左平滑移动,同时支持多行显示和碰撞检测。 使用CSS动画实现移动效果 通过CSS的@ke…