国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

滑動驗證組件---設置movable-view組件的x屬性在微信小程序端失效的問題

這篇具有很好參考價值的文章主要介紹了滑動驗證組件---設置movable-view組件的x屬性在微信小程序端失效的問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

場景

采用uniapp的movable-view組件實現滑動驗證組件。

  • 流程
    • 滑塊未滑到最右端時,回彈到原點
    • 滑塊滑到最右端時,則顯示滑動結束,不可再滑動

問題

頻繁設置uniapp的movable-view組件的x屬性,在H5端正常,但在微信小程序端則失效。

index.vue

<template>
	<view style="height: 100vh;width: 800rpx;display: flex;justify-content: center;align-items: center;">
		<wo-slider>
		</wo-slider>
	</view>
</template>

<script>
	import woSlider from './woSlider.vue'
	export default {
		components: {
			woSlider
		},
	}
</script>

<style>
</style>

woSlider.vue

<template>
	<view>
		<movable-area id="skidway" class="skidway">右滑全開
			<movable-view :damping="100" @touchend="onEnd" id="slider" :x="x" class='slider' direction="horizontal" @change="onChange" :disabled="isFinished">
				<view style="border-radius: 50%;height: 100%; width: 100%;overflow: auto;">
					<view v-if="isFinished" style="height: 100%">
						<view style="background: #1BA035; height: 100%; display: flex;justify-content: center;align-items: center;">
							<view class='movable-icon' style="background-image: url(/static/select-bold.svg)"></view>
						</view>
					</view>
					<view v-else style="height: 100%">
						<view style="background: #E5673B;height: 100%; display: flex;justify-content: center;align-items: center;">
							<view class='movable-icon' style="background-image: url(/static/arrow-right-bold.svg)"></view>
						</view>
					</view>
				</view>
			</movable-view>
		</movable-area>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				x: 0,
				oldX: 0,
				skidwayWidth: 0,  // 滑道長度
				sliderWidth: 0,  // 滑塊長度
				isFinished: false,
				moveWidth: 0
			}
		},
		mounted() {
			const elemt = uni.createSelectorQuery().in(this)
			elemt.select('#skidway').boundingClientRect((data) => {
				this.skidwayWidth = data.width;  // 獲取滑道長度
			}).exec()
			elemt.select('#slider').boundingClientRect((data) => {
				this.sliderWidth = data.width;  // 獲取滑塊長度
			}).exec()
		},
		methods: {
			onChange: function(e) {
				this.x = e.detail.x
				if(Math.round(this.x) >= Math.round(this.skidwayWidth - this.sliderWidth)) {
					this.isFinished = true  // 滑到最右端則完成
				}
			},
			onEnd: function(e) {
				if(Math.round(this.x) < Math.round(this.skidwayWidth - this.sliderWidth)) {
					setTimeout(()=>{
						this.x = 0  // 觸摸松開的時候,未滑到最右端時則回到原位
					}, 100)
				}
			}
		}
	}
</script>

<style>
	.skidway{
		background-color: aliceblue;
	  width:200px;
	  height: 80rpx;
	  border-radius: 60rpx;
	  display:flex;
	  justify-content:center;
	  align-items:center;
		position: relative;
	}
	.slider{
	  width: 80rpx;
	  height: 80rpx;
	}
	.movable-icon{
	  width: 30rpx;
	  height: 30rpx;
	  background-size: 100% 100%;
	}
	.end-status {
		border-radius: 60rpx 0rpx 0rpx 60rpx;
		background-color: red;
		height: 100%;
		overflow: auto;
		position: absolute;
		left: 0;
		top: 0;
		display: flex;
		justify-content: center;
		align-items: center;
		color: #fff;
	}
</style>

  • H5端
    滑動驗證組件---設置movable-view組件的x屬性在微信小程序端失效的問題,微信小程序,小程序,uniapp,vue,前端
  • 微信小程序端
    滑動驗證組件---設置movable-view組件的x屬性在微信小程序端失效的問題,微信小程序,小程序,uniapp,vue,前端

原因

官方給出的解釋:

由于app和小程序的架構是邏輯層與視圖層分離,使用js監(jiān)聽拖動時會引發(fā)邏輯層和視圖層的頻繁通訊,影響性能。為了方便高性能的實現拖動,平臺特封裝了movable-area組件。

意思大概就是: 對頻繁變化的組件屬性值做了一些優(yōu)化,將"多次變化"合為"少次變化"來執(zhí)行。

官方給出的解決方案:
滑動驗證組件---設置movable-view組件的x屬性在微信小程序端失效的問題,微信小程序,小程序,uniapp,vue,前端
滑動驗證組件---設置movable-view組件的x屬性在微信小程序端失效的問題,微信小程序,小程序,uniapp,vue,前端
官方推薦第一種方法去解決這個問題,所以我們就來試試第一種。
第一種方法的思路就是:先用一個變量記錄頻繁變化的屬性值,在最后的結束動作再用這個記錄值來修改組件的屬性值。

結果:成功解決在小程序端失效的問題文章來源地址http://www.zghlxwxcb.cn/news/detail-664985.html

<template>
	<view>
		<movable-area id="skidway" class="skidway">右滑全開
			<movable-view :damping="100" @touchend="onEnd" id="slider" :x="x" class='slider' direction="horizontal" @change="onChange" :disabled="isFinished">
				<view style="border-radius: 50%;height: 100%; width: 100%;overflow: auto;">
					<view v-if="isFinished" style="height: 100%">
						<view style="background: #1BA035; height: 100%; display: flex;justify-content: center;align-items: center;">
							<view class='movable-icon' style="background-image: url(/static/select-bold.svg)"></view>
						</view>
					</view>
					<view v-else style="height: 100%">
						<view style="background: #E5673B;height: 100%; display: flex;justify-content: center;align-items: center;">
							<view class='movable-icon' style="background-image: url(/static/arrow-right-bold.svg)"></view>
						</view>
					</view>
				</view>
			</movable-view>
		</movable-area>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				x: 0,
				oldX: 0,
				skidwayWidth: 0,  // 滑道長度
				sliderWidth: 0,  // 滑塊長度
				isFinished: false,
				moveWidth: 0
			}
		},
		mounted() {
			const elemt = uni.createSelectorQuery().in(this)
			elemt.select('#skidway').boundingClientRect((data) => {
				this.skidwayWidth = data.width;  // 獲取滑道長度
			}).exec()
			elemt.select('#slider').boundingClientRect((data) => {
				this.sliderWidth = data.width;  // 獲取滑塊長度
			}).exec()
		},
		methods: {
			onChange: function(e) {
				this.oldX = e.detail.x  // 記錄變化值
				if(Math.round(this.oldX) >= Math.round(this.skidwayWidth - this.sliderWidth)) {
					this.isFinished = true  // 滑到最右端則完成
				}
			},
			onEnd: function(e) {
				this.x = this.oldX  // 觸摸松開,設置movable-view的x屬性為記錄的變化值
				if(Math.round(this.oldX) < Math.round(this.skidwayWidth - this.sliderWidth)) {
					setTimeout(()=>{  // 觸摸松開的時候,未滑到最右端時則回到原位
						this.x = 0
						this.oldX = 0
					}, 100)
				}
			}
		}
	}
</script>

<style>
	.skidway{
		background-color: aliceblue;
	  width:200px;
	  height: 80rpx;
	  border-radius: 60rpx;
	  display:flex;
	  justify-content:center;
	  align-items:center;
		position: relative;
	}
	.slider{
	  width: 80rpx;
	  height: 80rpx;
	}
	.movable-icon{
	  width: 30rpx;
	  height: 30rpx;
	  background-size: 100% 100%;
	}
	.end-status {
		border-radius: 60rpx 0rpx 0rpx 60rpx;
		background-color: red;
		height: 100%;
		overflow: auto;
		position: absolute;
		left: 0;
		top: 0;
		display: flex;
		justify-content: center;
		align-items: center;
		color: #fff;
	}
</style>

到了這里,關于滑動驗證組件---設置movable-view組件的x屬性在微信小程序端失效的問題的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • [微信小程序] movable-view 可移動視圖容器 - 范圍問題

    [微信小程序] movable-view 可移動視圖容器 - 范圍問題

    movable-view?可移動視圖容器 可移動視圖容器,在頁面中可以拖拽滑動。movable-view必須在?movable-area?組件中,并且必須是直接子節(jié)點 運行效果: 發(fā)現文字超出了移動區(qū)域的問題,去查閱了文檔,發(fā)現這個默認是不允許超出的 問題原因:沒有給?movable-view設置寬高,所以它自動

    2024年02月16日
    瀏覽(18)
  • 基于movable-view的微信小程序拖拽排序(含源碼)

    基于movable-view的微信小程序拖拽排序(含源碼)

    目錄 一、前言與效果展示 二、源碼 1.目錄結構 2.drag.wxml文件 3.drag.wxss文件 (1)drag.less (2)drag.wxss? 不會使用less的就用這個 4.drag.js文件 5.drag.json文件 三、結語 ? ? ? ? 最近在做一個賬本,里面有個功能需要“拖拽排序”,網上的代碼我也看不太懂,打算自己寫一個。微信

    2024年02月03日
    瀏覽(26)
  • uniapp實戰(zhàn)仿寫網易云音樂(三)—視頻頁面(scroll-view組件實現橫線滑動,mescroll-uni實現視頻列表,向下滑動刷新當前頁面)

    uniapp實戰(zhàn)仿寫網易云音樂(三)—視頻頁面(scroll-view組件實現橫線滑動,mescroll-uni實現視頻列表,向下滑動刷新當前頁面)

    接著上篇文章繼續(xù)完成剩下的部分,本篇文章是完成第二個頁面——視頻頁面的部分,視頻還是沒有做播放的效果,主要是做展示效果。下面附上兩篇文章鏈接,沒看過的同學可以回頭看看: uniapp實戰(zhàn)仿寫網易云音樂(一)—底部工具欄以及首頁輪播圖swiper的實現 uniapp實戰(zhàn)仿寫

    2023年04月25日
    瀏覽(26)
  • 微信小程序 scroll-view設置scroll-x無法橫向顯示和滑動的解決方案

    僅僅設置?scroll-x無法實現橫向排列和滑動?還需在scroll-view和子view的wxss樣式里進行如下設置 如果想在子view里使用?彈性布局?display:flex?,也可以這樣:

    2024年02月04日
    瀏覽(23)
  • 小程序中使用scroll-view組件,內容高度未超過容器高度時依然可以上下滑動小段距離的問題

    解決辦法: 如下代碼:檢查下scroll-view組件是否設置了上下padding 或者 scroll-view的父盒子 view class=“home-page” … /view 設置了上下padding,如果設置了,去掉就可以解決問題。 (完)

    2024年02月08日
    瀏覽(24)
  • 微信小程序scroll-view組件設置 scroll-top無效問題解決

    微信小程序scroll-view組件設置 scroll-top無效問題解決

    微信小程序官方提供了一個可以設置滾動條位置的方法 scroll-top 在實際運用過程中,發(fā)現設置了scroll-top無效,滾動條位置并沒有發(fā)生變化,是因為微信小程序的官方框架處于性能考慮,初始化設置scroll-top不會重新渲染頁面,需要將scroll-top的是放在一個事件內執(zhí)行才可以生效

    2024年02月11日
    瀏覽(100)
  • 微信小程序 movable-area 區(qū)域拖動動態(tài)組件演示

    微信小程序 movable-area 區(qū)域拖動動態(tài)組件演示

    movable-area 組件在小程序中的作用是用于創(chuàng)建一個可移動的區(qū)域,可以在該區(qū)域內拖動視圖或內容。這個組件常用于實現可拖動的容器或可滑動的列表等交互效果。 使用 movable-area 組件可以對其內部的 movable-view 組件進行拖動操作,可以通過設置不同的屬性和事件來自定義拖動

    2024年02月03日
    瀏覽(22)
  • 小程序 view下拉滑動導致scrollview滑動事件失效

    小程序 view下拉滑動導致scrollview滑動事件失效

    下拉時滑動,展示整個會員卡內容,?下拉view里包含了最近播放:有scrollview,加了下拉功能后,scrollview滑動失敗了。 ? ? 問題所在:父元素使用了touchstart,touchmove,touchend三個事件,導致作為子元素的scroll-view組件無法滑動 解決辦法:父元素綁定touchstart事件時不要使用catch綁

    2024年02月14日
    瀏覽(18)
  • el-date-picker組件的picker-options常規(guī)屬性設置
  • Android View滑動處理大法

    Android View滑動處理大法

    原文鏈接 Android View滑動處理大法 對于觸控式操作來說,滑動是一個特別重要的手勢操作,如何做到讓應用程序的頁面滑動起來如絲般順滑,讓用戶感覺到手起刀落的流暢感,是開發(fā)人猿需要重點解決的問題,這對提升用戶體驗是最為重要的事情。本文就將探討一下,Android中

    2024年02月13日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包