当前位置:首页 > JavaScript

JS实现勋章

2026-02-01 11:41:18JavaScript

实现动态勋章效果

使用CSS和JavaScript创建动态旋转勋章。HTML部分定义勋章容器,CSS设置样式和动画,JavaScript控制交互行为。

JS实现勋章

<div class="badge-container">
  <div class="badge">
    <span class="badge-text">VIP</span>
  </div>
</div>
.badge-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 200px;
}

.badge {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background: linear-gradient(45deg, #ff0000, #ff7300);
  display: flex;
  justify-content: center;
  align-items: center;
  box-shadow: 0 0 20px rgba(255, 115, 0, 0.7);
  animation: rotate 3s linear infinite;
  cursor: pointer;
}

.badge-text {
  color: white;
  font-weight: bold;
  font-size: 24px;
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
}

@keyframes rotate {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
const badge = document.querySelector('.badge');
badge.addEventListener('click', () => {
  badge.style.animationPlayState = badge.style.animationPlayState === 'paused' ? 'running' : 'paused';
});

创建进度勋章系统

实现基于用户进度的动态勋章解锁功能。HTML定义勋章展示区域,CSS设置勋章样式,JavaScript处理进度逻辑。

JS实现勋章

<div class="achievement-system">
  <div class="badge locked" data-target="5">
    <div class="badge-icon">🥇</div>
    <div class="badge-title">初级玩家</div>
  </div>
  <div class="progress-tracker">
    当前进度: <span class="progress-count">0</span>/5
  </div>
  <button class="add-progress">增加进度</button>
</div>
.achievement-system {
  text-align: center;
  font-family: Arial, sans-serif;
}

.badge {
  display: inline-block;
  padding: 15px;
  margin: 10px;
  border-radius: 10px;
  background: #f0f0f0;
  transition: all 0.3s;
}

.badge.unlocked {
  background: linear-gradient(45deg, #ffd700, #ffbf00);
  box-shadow: 0 0 15px rgba(255, 215, 0, 0.5);
}

.badge.locked {
  filter: grayscale(80%);
  opacity: 0.7;
}

.badge-icon {
  font-size: 40px;
}

.badge-title {
  margin-top: 5px;
  font-weight: bold;
}

.progress-tracker {
  margin: 20px;
  font-size: 18px;
}

.add-progress {
  padding: 10px 20px;
  background: #4CAF50;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}
const badge = document.querySelector('.badge');
const progressCount = document.querySelector('.progress-count');
const addProgressBtn = document.querySelector('.add-progress');
const target = parseInt(badge.dataset.target);
let currentProgress = 0;

addProgressBtn.addEventListener('click', () => {
  currentProgress = Math.min(currentProgress + 1, target);
  progressCount.textContent = currentProgress;

  if(currentProgress >= target) {
    badge.classList.remove('locked');
    badge.classList.add('unlocked');
    addProgressBtn.disabled = true;
  }
});

实现3D勋章效果

使用CSS 3D变换创建立体勋章效果,通过JavaScript添加悬停交互。

<div class="scene">
  <div class="badge-3d">
    <div class="badge-face front">🏆</div>
    <div class="badge-face back">冠军</div>
  </div>
</div>
.scene {
  perspective: 1000px;
  width: 200px;
  height: 200px;
  margin: 50px auto;
}

.badge-3d {
  width: 100%;
  height: 100%;
  position: relative;
  transform-style: preserve-3d;
  transition: transform 1s;
}

.badge-face {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 60px;
  backface-visibility: hidden;
}

.front {
  background: radial-gradient(circle, #ffd700, #ff9800);
  transform: rotateY(0deg);
}

.back {
  background: radial-gradient(circle, #ff9800, #ffd700);
  transform: rotateY(180deg);
  font-size: 30px;
  color: white;
}
const badge3d = document.querySelector('.badge-3d');

badge3d.addEventListener('mouseenter', () => {
  badge3d.style.transform = 'rotateY(180deg)';
});

badge3d.addEventListener('mouseleave', () => {
  badge3d.style.transform = 'rotateY(0deg)';
});

标签: 勋章JS
分享给朋友:

相关文章

JS实现跳表

JS实现跳表

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

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实现跳表

跳表(Skip List)简介 跳表是一种基于概率的平衡数据结构,通过多层链表实现高效查找、插入和删除操作,时间复杂度为 $O(\log n)$。其核心思想是通过“跳跃”式访问节点减少遍历次数。 跳…

JS实现哀悼

JS实现哀悼

实现网页哀悼效果的方法 在网页上实现哀悼效果通常指将页面整体调整为黑白或灰色调,以示哀悼。以下是几种常见的实现方式: CSS滤镜实现 通过CSS的filter属性可以快速将整个页面转为灰度。将以下代…

JS拖拽的实现

JS拖拽的实现

基本拖拽实现 使用原生JavaScript实现拖拽功能需要监听三个事件:mousedown、mousemove和mouseup。在mousedown事件中记录初始位置,在mousemove事件中计算偏…