uniapp移动端悬浮按钮(吸附边缘)

简介: uniapp移动端悬浮按钮(吸附边缘)


Uniapp移动端悬浮按钮可以通过CSS实现吸附边缘的效果。具体实现步骤如下:

html:

<movable-area class="movable-area">
      <movable-view class="movable-view" :position="position" :x="x" :y="y" :direction="direction"
        :damping="damping" @change="onChange" @touchend="onTouchend" @click="record">
        <image :src="url+'/uploads/20231209/45a4381a8d120d73e310d10ad5aadc41.png'" mode="widthFix"
          class="iconImage"></image>
      </movable-view>
    </movable-area>

js:

export default {
    data() {
      return {
        x: 364, //x坐标
        y: 700, //y坐标
        x1: 0,
        x2: 0,
        y1: 0,
        y2: 0,
        move: {
          x: 0,
          y: 0
        }
      }
    },
    onLoad() {
    },
    props: {
      damping: {
        type: Number,
        default: 10
      },
      direction: {
        type: String,
        default: "all"
      },
      position: {
        type: Number,
        default: 4
      },
    },
    mounted() {
      uni.getSystemInfo({
        success: (res) => {
          this.x1 = 0;
          this.x2 = parseInt(res.windowWidth) - 50;
          this.y1 = 0;
          this.y2 = parseInt(res.windowHeight) - 20;
          setTimeout(() => {
            if (this.position == 1 || this.position == 2) this.y = parseInt(this.y2 * 0.2);
            if (this.position == 3 || this.position == 4) this.y = parseInt(this.y2 * 0.8);
            if (this.position == 1 || this.position == 3) this.x = parseInt(this.x1);
            if (this.position == 2 || this.position == 4) this.x = parseInt(this.x2);
            this.move.x = this.x;
            this.move.y = this.y;
          }, 1000)
        }
      })
    },
    methods: {
      onChange(e) {
        if (e.detail.source == "touch") {
          this.move.x = e.detail.x;
          this.move.y = e.detail.y;
        }
      },
      onTouchend() {
        this.x = this.move.x;
        this.y = this.move.y;
        setTimeout(() => {
          if (this.move.x < this.x2 / 2) this.x = this.x1;
          else this.x = this.x2;
          console.log(this.x, this.y)
        }, 100)
      }
    }

css:

.iconImage {
        display: block;
        width: 120rpx;
        height: 120rpx;
        animation: iconImage 5s linear infinite;
    }
    @keyframes iconImage {
        0% {
            -webkit-transform: rotate(0deg);
        }
        25% {
            -webkit-transform: rotate(90deg);
        }
        50% {
            -webkit-transform: rotate(180deg);
        }
        75% {
            -webkit-transform: rotate(270deg);
        }
        100% {
            -webkit-transform: rotate(360deg);
        }
    }
    .contact {
        width: 50px;
        height: 50px;
        overflow: hidden;
        position: absolute;
        left: 0px;
        top: 0px;
        border-radius: 100%;
        opacity: 0;
    }
    .movable-area {
        height: 100vh;
        width: 750rpx;
        top: 0;
        position: fixed;
        pointer-events: none;
        z-index: 9999999;
    }
    .movable-view {
        width: 96rpx;
        height: 96rpx;
        background-color: #2561EF;
        border-radius: 50%;
        pointer-events: auto;
        position: relative;
        z-index: 9999999;
        display: flex;
        align-items: center;
        justify-content: center;
    }
    .movable-view image {
        width: 50rpx;
        height: 50rpx;
    }
相关文章
|
25天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的移动端购物系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的移动端购物系统附带文章和源代码部署视频讲解等
28 4
基于ssm+vue.js+uniapp小程序的移动端购物系统附带文章和源代码部署视频讲解等
|
25天前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的哈尔滨中心医院用户移动端附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的哈尔滨中心医院用户移动端附带文章和源代码部署视频讲解等
22 5
|
10月前
|
移动开发 小程序
小程序-uniapp:URL Link / 适用于在移动端 从短信、邮件、微信外网页 等场景打开小程序任意页面
小程序-uniapp:URL Link / 适用于在移动端 从短信、邮件、微信外网页 等场景打开小程序任意页面
339 0
|
12月前
|
移动开发 JavaScript 前端开发
探究Uniapp在移动端开发中的应用
探究Uniapp在移动端开发中的应用
151 0
|
移动开发 前端开发 weex
uniapp调试基座安装与移动端应用选型
uniapp调试基座安装与移动端应用选型
uniapp调试基座安装与移动端应用选型
|
监控 JavaScript 前端开发
巧用友盟+U-APM 解决uniapp移动端崩溃的问题
本案例是为我校订制的智慧校园APP,由于我校并没有官方的校园APP所以导致学生需要频繁登陆教务系统网站,且因本校教务系统网站对移动端的兼容不是很完善,所以导致部分信息无法清晰查看,基于此,本项目应运而生。在开发工具方面,选择了使用uniapp,uniapp是一个使用Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/快手/钉钉/淘宝)、快应用等多个平台。这能为我们大幅度减少开发时间,提高开发效率。
巧用友盟+U-APM 解决uniapp移动端崩溃的问题
|
监控 JavaScript 前端开发
应用性能管理—uniapp移动端崩溃
本案例是为我校订制的智慧校园APP,由于我校并没有官方的校园APP所以导致学生需要频繁登陆教务系统网站,且因本校教务系统网站对移动端的兼容不是很完善,所以导致部分信息无法清晰查看,基于此,本项目应运而生。在开发工具方面,选择了使用uniapp,uniapp是一个使用Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/快手/钉钉/淘宝)、快应用等多个平台。这能为我们大幅度减少开发时间,提高开发效率。
应用性能管理—uniapp移动端崩溃
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的房地产销售管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的房地产销售管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
16 7
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的广西文化传承小程序的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的广西文化传承小程序的详细设计和实现(源码+lw+部署文档+讲解等)
16 3
|
1天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的宠物服务中心的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的宠物服务中心的详细设计和实现(源码+lw+部署文档+讲解等)
14 6
基于SpringBoot+Vue+uniapp的宠物服务中心的详细设计和实现(源码+lw+部署文档+讲解等)