当前位置:首页 > VUE

vue实现收藏样式

2026-03-08 02:29:25VUE

Vue 实现收藏样式

方法一:使用 Font Awesome 图标

安装 Font Awesome 依赖:

npm install @fortawesome/fontawesome-svg-core @fortawesome/free-solid-svg-icons @fortawesome/vue-fontawesome

在 Vue 组件中引入并使用:

<template>
  <div @click="toggleFavorite">
    <font-awesome-icon :icon="isFavorite ? 'fas fa-star' : 'far fa-star'" />
  </div>
</template>

<script>
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import { faStar } from '@fortawesome/free-solid-svg-icons'
import { faStar as farStar } from '@fortawesome/free-regular-svg-icons'

export default {
  components: {
    FontAwesomeIcon
  },
  data() {
    return {
      isFavorite: false,
      fas: {
        faStar
      },
      far: {
        farStar
      }
    }
  },
  methods: {
    toggleFavorite() {
      this.isFavorite = !this.isFavorite
    }
  }
}
</script>

方法二:使用 Unicode 字符

直接使用 HTML 实体符号实现简单收藏样式:

vue实现收藏样式

<template>
  <div @click="toggleFavorite" class="favorite">
    {{ isFavorite ? '★' : '☆' }}
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFavorite: false
    }
  },
  methods: {
    toggleFavorite() {
      this.isFavorite = !this.isFavorite
    }
  }
}
</script>

<style>
.favorite {
  font-size: 24px;
  color: gold;
  cursor: pointer;
}
</style>

方法三:自定义 SVG 图标

创建可自定义的 SVG 收藏图标:

<template>
  <div @click="toggleFavorite" class="favorite">
    <svg width="24" height="24" viewBox="0 0 24 24">
      <path 
        :fill="isFavorite ? 'gold' : 'none'" 
        stroke="gold" 
        stroke-width="1.5"
        d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
      />
    </svg>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFavorite: false
    }
  },
  methods: {
    toggleFavorite() {
      this.isFavorite = !this.isFavorite
    }
  }
}
</script>

<style>
.favorite {
  cursor: pointer;
}
</style>

方法四:使用 CSS 动画效果

vue实现收藏样式

为收藏添加点击动画效果:

<template>
  <div 
    @click="toggleFavorite" 
    :class="['favorite', { 'active': isFavorite }]"
  >
    <span class="star">★</span>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFavorite: false
    }
  },
  methods: {
    toggleFavorite() {
      this.isFavorite = !this.isFavorite
    }
  }
}
</script>

<style>
.favorite {
  display: inline-block;
  font-size: 24px;
  cursor: pointer;
  transition: all 0.3s;
}

.favorite .star {
  color: #ccc;
  transition: all 0.3s;
}

.favorite.active .star {
  color: gold;
  transform: scale(1.2);
  text-shadow: 0 0 5px rgba(255, 215, 0, 0.5);
}
</style>

方法五:结合 Vuex 状态管理

当需要全局管理收藏状态时:

<template>
  <div @click="toggleFavorite">
    <font-awesome-icon :icon="isFavorite(itemId) ? 'fas fa-star' : 'far fa-star'" />
  </div>
</template>

<script>
import { mapGetters, mapMutations } from 'vuex'

export default {
  props: ['itemId'],
  computed: {
    ...mapGetters(['isFavorite'])
  },
  methods: {
    ...mapMutations(['toggleFavorite'])
  }
}
</script>

在 Vuex store 中:

export default new Vuex.Store({
  state: {
    favorites: []
  },
  getters: {
    isFavorite: state => itemId => state.favorites.includes(itemId)
  },
  mutations: {
    toggleFavorite(state, itemId) {
      const index = state.favorites.indexOf(itemId)
      if (index === -1) {
        state.favorites.push(itemId)
      } else {
        state.favorites.splice(index, 1)
      }
    }
  }
})

标签: 样式收藏
分享给朋友:

相关文章

vue实现groupbox样式

vue实现groupbox样式

Vue 实现 GroupBox 样式 在 Vue 中实现 GroupBox(分组框)样式,可以通过自定义组件结合 CSS 完成。以下是几种常见方法: 使用 CSS 边框和阴影模拟 GroupBox…

vue实现样式切换

vue实现样式切换

Vue 样式切换实现方法 动态 class 绑定 通过 v-bind:class 或简写 :class 实现动态样式切换,适用于需要根据条件切换多个 class 的场景: <template&…

vue实现导航样式

vue实现导航样式

vue实现导航样式的方法 在Vue中实现导航样式可以通过多种方式完成,以下是一些常见的方法: 使用Vue Router和CSS样式 Vue Router是Vue.js官方的路由管理器,结合CSS可以…

在react中如何写内联样式

在react中如何写内联样式

在 React 中写内联样式的方法 React 中可以通过 JavaScript 对象的形式定义内联样式,并通过 style 属性传递给组件。以下是几种常见的实现方式: 直接传递样式对象 <…

css样式制作表格

css样式制作表格

基础表格结构 使用HTML的<table>标签创建表格框架,搭配<tr>(行)、<th>(表头)、<td>(单元格)标签构建内容。 <table…

jquery 加样式

jquery 加样式

jQuery 添加样式的方法 使用 jQuery 可以方便地操作 DOM 元素的样式。以下是几种常用的添加样式的方法: 1. 使用 .css() 方法直接设置样式 $("#elementId").…