微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计

这篇具有很好参考价值的文章主要介绍了微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、业务背景

在做微信小程序的项目时,有一个需求是当用户左右旋转手机屏幕时,页面上特定的元素要随着用户的旋转动作左右移动。当将手机屏幕向左旋转时,人物向左移动;手机屏幕向右旋转时,人物向右移动。
微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计

二、用到的微信API

这里主用到了微信小程序的加速计:

  • 开始监听加速度数据,wx.startAccelerometer(Object object)
  • 监听加速度数据事件,wx.onAccelerometerChange(function callback)

微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计
官方文档链接:https://developers.weixin.qq.com/miniprogram/dev/api/device/accelerometer/wx.startAccelerometer.html

先来写个demo,看下 wx.onAccelerometerChange() 回调函数里参数的打印:

wx.startAccelerometer({
	interval: 'normal',
	success: () => {
		wx.onAccelerometerChange((res) => {
			console.log('res :>> ', res);
		})
	}
})

这个API效果在微信开发者工具里模拟不了,只能在手机上看。微信开发者工具点击预览,在手机的控制台上我们可以看到,将手机屏幕向左旋转至垂直于水平面,打印出来的 x 值无限接近于 -1。将手机屏幕向右旋转至垂直于水平面,打印出来的 x 值无限接近于 1。

微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计
有了这个API的帮助,我们就可以愉快地开始写效果了。

三、效果实现

思路:如果元素向左向右最大移动的距离是20,而且既然我能拿到手机旋转的 res.x 值,那么当手机旋转的时候,将元素向左或向右移动 res.x *20 距离,不就可以了。

既然是移动,首先想到的就是用 transform 来实现这个效果,在手机上预览时,发现人物在移动的过程中会一卡一卡的,不是很流畅,就像下面这样。
微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计
思考了好久后,想到既然是要做动画效果,那么能想到的有以下三种方式:

  • animation
  • transition
  • requestAnimationFrame

transform 不行,那就换 transition。两种实现方式在下面也都写出来了。

3.1 transform

当手机屏幕旋转时,设置元素的 transform:translateX(res.x*20)

页面结构代码:

<view class="wrap">
  <image src="/assets/bg.png" />
  <image src="/assets/img.png" style="transform:translateX({{left}}%);" />
</view>

css 代码:

.wrap {
  width: 100%;
  height: 422rpx;
  position: relative;
}

image {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
}

js 代码:

Page({
  data: {
    left: ""
  },
  onShow() {
	wx.startAccelerometer({
		interval: 'normal',
		success: () => {
			wx.onAccelerometerChange((res) => {
				this.setData({
					left: res.x*20
				})
			})
		}
	}),
	onHide: function () {
		// 停止监听加速计数据
		wx.offAccelerometerChange()
		wx.stopAccelerometer()
	}
})

3.2 transition

用 transition 来实现位移的效果,当手机屏幕旋转时,改变元素的 left 值,还可以指定转速曲线和时间。具体的效果大家可以试一下。

css 和 js 代码同上,只需要将上面的 html 改成下面这样,就可以实现完美的移动了。

<view class="wrap">
  <image src="/assets/bg.png" />
  <image src="/assets/img.png" style="left:{{left}}%;transition:left .3s;" />
</view>

在同一情况下旋转手机屏幕,两种实现方式的效果对比,可以看出使用 transition 元素移动的效果更流畅一些。
微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计

后来我想了下, 好像 transform 结合 animation 一起使用,也可以达到这个效果。文章来源地址https://www.toymoban.com/news/detail-485152.html

到了这里,关于微信小程序实现手机屏幕左右旋转,页面元素左右移动,小程序加速计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序——调节手机屏幕亮度案例分享

    ✅作者简介:2022年 博客新星 第八 。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:前端案例分享专栏 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:微信小程序——调节

    2024年02月03日
    浏览(26)
  • 微信小程序(二)微信小程序选择本地图片显示并预览(实现左右滑动)

    在微信小程序里面实现选择图片然后预览是一个非常普遍的功能,在我们上传图片文件的时候,都会选择本地的图片进行上传,在上传之前会查看一下自己上传的图片是否准确。所以要做到预览图片。 下面就实现一个简单的本地图片显示预览的功能~~ 1、创建页面 这里我直接

    2024年02月03日
    浏览(44)
  • 微信小程序 简单的实现左右内容联动

    scroll-view 的属性 scroll-into-view 可以实现类似于瞄点链接的效果,在绑定的属性修改时会触发,滑动到对应id的地方 注意: id不能以数字开头 设置两个变量 tabIndex 、 nowIndex 保存状态,如果只设置一个更新变量时会触发瞄点更新 通过 tabIndex 更新瞄点 通过 nowIndex 设置当前的分类

    2024年02月03日
    浏览(53)
  • 微信小程序点单左右联动的效果实现

    微信小程序点单左右联动的效果实现 原理解析:   点击左边标签会跳到右边相应位置:点击改变rightCur值,转跳相应位置滑动右边,左边标签会跳到相应的位置:监听并且设置每个右边元素的top和bottom,再判断当前滑动高度在那个元素之间,再改变左边的标签的tabCur,并且

    2024年02月06日
    浏览(37)
  • uniapp-微信小程序实现swiper左右滚动切换tab,上下滚动加载列表

    思路:左右滑动使用swiper,上下滑动用scroll-view,swiper改变时同时改变tab并更新列表 坑点: 1. swiper高度问题,导致滑动不到最底部和最顶部         需要手动计算,减去顶部高度和底部tabbar,并且需要同时设置padding-top和paddin-botton,否则列表显示不完整 2. 由于最开始的代码

    2024年02月04日
    浏览(41)
  • 微信小程序在苹果手机中打不开小程序页面,wx.agentConfig没有执行

    最近在写一个小程序,其中使用到了wx.agentConfig获取“launchMiniprogram”,打开小程序页面。 然后在安卓中可以正常打开,在苹果手机中打不开。 期间更换了n次引入的js,头大最后发现是授权的url在苹果手机和安卓中获取的不一样,导致页面授权签名报错40093 以下为简略代码 第

    2024年02月06日
    浏览(42)
  • 微信小程序| 基于ChatGPT+明基屏幕挂灯实现超智能家居物联网小程序

    在尝试了这么多次的 ChatGPT 在纯软方向的应用开发后,深感 LLM(大语言模型) 的能力之强大。俗话说得好: 心有多大舞台就有多大! 基于AI大模型,可以尝试的方面实在是数不胜数!轻轻松松就可以突破在移动互联网时代APP/平台所积累下的数据壁垒和优势!以及像一些高门槛

    2024年02月08日
    浏览(55)
  • 微信小程序 uniapp 电商项目使用scroll-view实现左右菜单联动,点击菜单子分类联动对应商品

    最近写了个微信小程序项目,一开始不理解scroll-view用法,用的另外一种方法写的,虽然实现了效果,但是代码层面来说,不大合理,后来又通过努力,用scroll-view实现了效果。现写个文章做个记录,方便自己和大家学习记录。 效果图请看第一张。布局:左右布局,右边又分

    2024年02月14日
    浏览(57)
  • 微信小程序内实现图层的移动、缩放、旋转等其他编辑操作

    图层有3种 1、 背景图层 : 不可操作,只能替换,不可改变层级(最底层) 2、 图片图层 : 可移动,缩放(支持双指缩放),旋转,可改变层级 3、 文字图层 : 可移动,缩放(会改变文字大小,支持双指缩放),旋转,文字编辑区域拉伸长度和宽度(不会改变文字大小),

    2024年02月09日
    浏览(29)
  • 利用微信小程序新动画API之this.animate()实现3D旋转

    从微信小程序基础库 2.9.0 开始支持一种更友好的动画创建方式,用于代替旧的 wx.createAnimation 。它具有更好的性能和更可控的接口。 在页面或自定义组件中,当需要进行关键帧动画时,可以使用 this.animate 接口(官方API文档链接地址:https://developers.weixin.qq.com/miniprogram/dev/fr

    2023年04月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包