当前位置:首页 > uni-app

uniapp滑动图标

2026-03-04 23:44:15uni-app

在UniApp中实现滑动图标功能

UniApp可以通过多种方式实现滑动图标效果,以下是几种常见方法:

使用swiper组件实现横向滑动图标

<swiper class="swiper" :indicator-dots="false" :autoplay="false" :interval="3000" :duration="1000">
  <swiper-item v-for="(page, index) in iconPages" :key="index">
    <view class="swiper-item">
      <view v-for="(item, i) in page" :key="i" class="icon-item">
        <image :src="item.icon" mode="aspectFit"></image>
        <text>{{item.name}}</text>
      </view>
    </view>
  </swiper-item>
</swiper>
data() {
  return {
    iconPages: [
      [
        {icon: '/static/icon1.png', name: '图标1'},
        {icon: '/static/icon2.png', name: '图标2'},
        // 更多图标...
      ],
      // 更多页...
    ]
  }
}

使用scroll-view实现自由滑动

<scroll-view scroll-x class="scroll-view">
  <view class="scroll-content">
    <view v-for="(item, index) in iconList" :key="index" class="icon-item">
      <image :src="item.icon" mode="aspectFit"></image>
      <text>{{item.name}}</text>
    </view>
  </view>
</scroll-view>
.scroll-view {
  white-space: nowrap;
  width: 100%;
}
.scroll-content {
  display: inline-block;
}
.icon-item {
  display: inline-block;
  width: 80px;
  text-align: center;
  margin-right: 10px;
}

实现拖拽排序功能

<movable-area class="movable-area">
  <movable-view v-for="(item, index) in icons" 
                :key="item.id"
                class="movable-view"
                direction="all"
                :x="item.x"
                :y="item.y"
                @change="onChange(index, $event)">
    <image :src="item.icon"></image>
  </movable-view>
</movable-area>
data() {
  return {
    icons: [
      {id: 1, icon: '/static/icon1.png', x: 0, y: 0},
      {id: 2, icon: '/static/icon2.png', x: 100, y: 0},
      // 更多图标...
    ]
  }
},
methods: {
  onChange(index, e) {
    this.icons[index].x = e.detail.x
    this.icons[index].y = e.detail.y
  }
}

使用第三方组件库

uni-ui和uView等第三方组件库提供了更丰富的滑动图标组件:

<uni-swipe-action>
  <uni-swipe-action-item v-for="(item,index) in list" :key="index">
    <template v-slot:left>
      <view class="swipe-btn" @click="onClick('fav', item.id)">
        <uni-icons type="star" size="20"></uni-icons>
      </view>
    </template>
    <view class="content">{{item.name}}</view>
  </uni-swipe-action-item>
</uni-swipe-action>

性能优化建议

图标数量较多时,应考虑分页加载或虚拟滚动技术。使用image组件的lazy-load属性可以延迟加载不可见区域的图标。避免在滑动过程中频繁操作DOM,合理使用节流函数优化性能。

uniapp滑动图标

滑动图标实现方式应根据具体需求选择,简单展示推荐使用swiper或scroll-view,需要交互功能可考虑movable-view或第三方组件库。

标签: 图标uniapp
分享给朋友:

相关文章

uniapp消息推送

uniapp消息推送

uniapp消息推送实现方法 uniapp支持多种消息推送方式,包括uniPush、个推、极光推送等。以下为常见实现方案: uniPush(官方推荐) uniapp官方提供的推送服务,基于DClou…

uniapp旋转横屏

uniapp旋转横屏

实现横屏模式的方法 在UniApp中实现横屏模式,可以通过配置页面方向或使用CSS旋转实现。以下是两种常见方法: 修改manifest.json配置 在项目的manifest.json文件中…

uniapp视频

uniapp视频

uniapp视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…

uniapp设置背景

uniapp设置背景

设置全局背景样式 在App.vue文件中添加全局样式,使用page选择器设置页面背景。这种方式会影响所有页面背景。 <style> page { background-color:…

uniapp关闭侧滑

uniapp关闭侧滑

禁用全局侧滑返回功能 在pages.json中配置全局禁止侧滑返回: { "globalStyle": { "popGesture": "none" } } 禁用单个页面侧滑…

uniapp swiper禁止滑动

uniapp swiper禁止滑动

禁用 Swiper 滑动的方法 在 UniApp 中,可以通过设置 disableTouch 属性或动态绑定 touchable 属性来禁止 Swiper 组件的滑动行为。 方法一:通过 disab…