当前位置:首页 > JavaScript

js实现收藏星星

2026-04-07 08:51:02JavaScript

实现收藏星星功能

在JavaScript中实现收藏星星功能通常涉及创建一个可点击的星星图标,点击后切换状态(收藏/取消收藏)。以下是实现方法:

HTML结构

创建一个简单的HTML元素作为星星图标:

<div id="star" class="star">☆</div>

CSS样式

为星星添加基本样式和交互效果:

js实现收藏星星

.star {
  font-size: 24px;
  cursor: pointer;
  user-select: none;
}

.star.filled {
  color: gold;
}

JavaScript实现

使用事件监听器切换星星状态:

const star = document.getElementById('star');

star.addEventListener('click', function() {
  this.classList.toggle('filled');
  this.textContent = this.classList.contains('filled') ? '★' : '☆';

  // 获取当前状态
  const isFavorited = this.classList.contains('filled');
  console.log(isFavorited ? '已收藏' : '未收藏');
});

持久化存储

如果需要记住用户的收藏状态,可以使用localStorage:

js实现收藏星星

// 初始化时检查存储状态
if(localStorage.getItem('favorited') === 'true') {
  star.classList.add('filled');
  star.textContent = '★';
}

star.addEventListener('click', function() {
  this.classList.toggle('filled');
  const isFavorited = this.classList.contains('filled');
  this.textContent = isFavorited ? '★' : '☆';

  // 存储状态
  localStorage.setItem('favorited', isFavorited);
});

动画效果

为点击添加动画效果:

.star {
  transition: transform 0.2s;
}

.star:active {
  transform: scale(1.5);
}

完整示例

整合所有代码的完整实现:

<!DOCTYPE html>
<html>
<head>
  <style>
    .star {
      font-size: 24px;
      cursor: pointer;
      user-select: none;
      transition: transform 0.2s;
    }
    .star.filled {
      color: gold;
    }
    .star:active {
      transform: scale(1.5);
    }
  </style>
</head>
<body>
  <div id="star" class="star">☆</div>

  <script>
    const star = document.getElementById('star');

    // 初始化
    if(localStorage.getItem('favorited') === 'true') {
      star.classList.add('filled');
      star.textContent = '★';
    }

    star.addEventListener('click', function() {
      this.classList.toggle('filled');
      const isFavorited = this.classList.contains('filled');
      this.textContent = isFavorited ? '★' : '☆';
      localStorage.setItem('favorited', isFavorited);
    });
  </script>
</body>
</html>

这种方法创建了一个简单但功能完整的收藏星星交互,包含视觉反馈和状态持久化功能。可以根据需求进一步扩展,如添加AJAX请求与服务器同步收藏状态。

标签: 星星收藏
分享给朋友:

相关文章

vue实现点击收藏

vue实现点击收藏

实现点击收藏功能 在Vue中实现点击收藏功能可以通过以下步骤完成,涉及数据绑定、事件处理和状态管理。 数据绑定与状态管理 在Vue组件中定义一个isFavorited的响应式数据,用于表示当前是否已…

vue 实现星星评分

vue 实现星星评分

vue 实现星星评分的方法 使用组件化方式实现 创建一个独立的评分组件,通过v-for循环生成星星图标,利用v-model或props实现数据双向绑定。 <template> <…

vue实现点击星星评分

vue实现点击星星评分

Vue 实现点击星星评分 使用 Vue 实现点击星星评分功能可以通过动态绑定类名和事件处理来实现。以下是一个简单的实现方法: 模板部分 <template> <div cla…

react实现星星评分

react实现星星评分

实现星星评分组件 使用React实现一个可交互的星星评分组件,可以通过状态管理用户选择的评分值。 import React, { useState } from 'react'; const St…

php实现收藏功能实现

php实现收藏功能实现

数据库设计 创建数据库表存储用户收藏信息,通常需要用户ID和收藏项ID。示例表结构: CREATE TABLE `user_favorites` ( `id` int(11) NOT NULL…

vue实现收藏功能

vue实现收藏功能

实现思路 Vue实现收藏功能通常涉及前端交互与后端数据存储的结合。前端负责用户点击交互和状态展示,后端负责数据持久化。以下是具体实现方法。 前端交互实现 在Vue组件中,使用v-model或v-on…