当前位置:首页 > uni-app

uniapp浮动组件

2026-02-05 23:13:03uni-app

实现浮动组件的基本方法

在UniApp中创建浮动组件通常使用position: fixedposition: absolute结合动态样式实现。以下是一个基础示例:

<template>
  <view class="float-button" :style="{bottom: btnBottom + 'px', right: btnRight + 'px'}" @click="handleClick">
    <text>+</text>
  </view>
</template>

<script>
export default {
  data() {
    return {
      btnBottom: 20,
      btnRight: 20
    }
  },
  methods: {
    handleClick() {
      uni.showToast({
        title: '按钮点击'
      })
    }
  }
}
</script>

<style>
.float-button {
  position: fixed;
  width: 60px;
  height: 60px;
  background-color: #007AFF;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  color: white;
  box-shadow: 0 2px 5px rgba(0,0,0,0.2);
  z-index: 999;
}
</style>

可拖拽浮动组件实现

通过touch事件实现组件拖拽功能:

methods: {
  touchStart(e) {
    this.startX = e.touches[0].clientX
    this.startY = e.touches[0].clientY
  },
  touchMove(e) {
    const moveX = e.touches[0].clientX - this.startX
    const moveY = e.touches[0].clientY - this.startY
    this.btnRight = Math.max(0, this.btnRight - moveX)
    this.btnBottom = Math.max(0, this.btnBottom - moveY)
    this.startX = e.touches[0].clientX
    this.startY = e.touches[0].clientY
  }
}

在模板中添加事件绑定:

uniapp浮动组件

<view 
  class="float-button" 
  :style="{bottom: btnBottom + 'px', right: btnRight + 'px'}"
  @touchstart="touchStart"
  @touchmove="touchMove"
  @click="handleClick">
  <text>+</text>
</view>

浮动组件动画效果

添加CSS过渡动画使组件更生动:

.float-button {
  transition: transform 0.2s;
}
.float-button:active {
  transform: scale(0.95);
}

多平台适配方案

考虑不同平台的样式差异:

uniapp浮动组件

/* #ifdef H5 */
.float-button {
  cursor: pointer;
}
/* #endif */

/* #ifdef APP-PLUS */
.float-button {
  elevation: 5;
}
/* #endif */

组件封装与复用

将浮动组件封装为可复用的自定义组件:

<!-- components/float-btn/float-btn.vue -->
<template>
  <view class="float-btn" @click="$emit('click')">
    <slot></slot>
  </view>
</template>

<script>
export default {
  name: 'float-btn'
}
</script>

使用时:

<float-btn @click="handleFloatClick" style="bottom:100px;right:20px">
  <image src="/static/icon.png"></image>
</float-btn>

标签: 组件uniapp
分享给朋友:

相关文章

vue实现组件拖放

vue实现组件拖放

Vue 实现组件拖放的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

uniapp斑马

uniapp斑马

uniapp 斑马相关问题解答 uniapp 斑马打印机连接与使用 uniapp 支持通过蓝牙或网络连接斑马打印机,需要借助原生插件或第三方 SDK。以下为常见方法: 蓝牙连接方式 安装 uni-…

uniapp悬浮

uniapp悬浮

实现悬浮效果的方法 在UniApp中实现悬浮效果可以通过CSS的position: fixed或position: sticky属性结合动态样式控制来实现。以下是具体实现方式: 使用CSS固定定位…

uniapp接入

uniapp接入

接入UniApp的基本流程 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发,多端发布。以下是接入UniApp的基本流程: 环境准备 确保已安装Node.js(建议版本12+)和HB…

uniapp 画板

uniapp 画板

uniapp 实现画板功能的方法 在 uniapp 中实现画板功能,可以通过 canvas 组件结合触摸事件来完成。以下是一个基本的实现方案: 基本画板实现 在 template 中添加 canva…

uniapp 成功案例

uniapp 成功案例

成功案例概览 UniApp 凭借跨平台开发能力,已被多个行业采用,涵盖电商、社交、教育、政务等领域。以下为部分典型案例: 京东拼购 京东拼购(现为“京喜”)采用 UniApp 开发,实现微信小程序、…