当前位置:首页 > 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中实现目录组件通常需要结合页面内容的结构化数据(如标题层级),通过动态渲染生成可交互的目录。核心步骤包括提取标题、生成目录结构、实现滚动联动等。 提取标题信息 通过d…

vue实现穿梭框树组件

vue实现穿梭框树组件

Vue 穿梭框树组件实现 穿梭框树组件通常结合了树形结构和穿梭框功能,允许用户在左右两栏之间移动树节点数据。以下是基于 Vue 的实现方案: 核心功能设计 数据结构 树形数据通常采用嵌套结构,例如:…

uniapp实现懒加载

uniapp实现懒加载

uniapp实现懒加载的方法 在uniapp中实现懒加载可以通过多种方式,以下是几种常见的方法: 使用uni.lazyLoad组件 uniapp提供了内置的懒加载组件,适用于图片等资源的懒加载。在页…

uniapp swiper禁止滑动

uniapp swiper禁止滑动

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

uniapp如何将底部导航组件化

uniapp如何将底部导航组件化

在 uniapp 中将底部导航组件化 将底部导航组件化可以提高代码复用性和维护性。以下是具体实现方法: 创建自定义底部导航组件 新建一个组件文件,例如 tab-bar.vue,放置在 compon…

海康 uniapp

海康 uniapp

海康威视与UniApp集成方案 海康威视的硬件设备(如摄像头、NVR等)与UniApp结合,通常需要通过海康的开放平台API或SDK实现功能调用。以下是具体实现方法: 获取海康威视开放平台权限 注册…