uniapp局部滚动,动态style带有calc计算

文章介绍了在uni-app中使用scroll-view进行垂直滚动时,如何动态获取元素距离顶部的高度并更新视图高度。通过uni.createSelectorQuery的boundingClientRect方法选择元素并获取其位置信息,然后设置CSS计算值来适应内容高度。特别指出,此方法在支付宝小程序中可能无效,因为不支持in(component)语法。
摘要由CSDN通过智能技术生成

 HTML:

<scroll-view scroll-y id="scrollList" :style="updateHeight()">
    <view>
        这里是要做滚动的区域
    </view>
</scroll-view>

JS:

<script>
	export default {
		data() {
			return {
				listTop: 0,
			}
		},
		methods: {
			updateHeight() {
				setTimeout(() => {
					let query = uni.createSelectorQuery().in(this);
						// 需要给滚动区域设置一个id标识,在这里是scrollList
						query.select('#scrollList').boundingClientRect(data => {
							console.log(data.top)
							this.listTop = data.top //距离顶部的高度
						}).exec();
				},100)
				return { height: `calc(100vh - ${this.listTop}px)` };
			}
		}
	}
</script>

注意:支付宝小程序不支持 in(component),使用无效果

参考: 

uni.createSelectorQuery() | uni-app官网

Uniapp中,我们可以使用不同的方式来动态设置`style`属性。其中,常用的方式包括对象数组方式、对象方式和`calc`方式。 1. 对象数组方式:使用`style`属性的对象数组来设置不同的样式属性。例如,可以使用以下方式来设置`paddingTop`和`color`属性: ```html <view :style="[{paddingTop: background},{color: getColor}]"></view> ``` 这里的`background`和`getColor`是对应的变量或方法。 2. 对象方式:使用一个对象来设置`style`属性。例如,可以使用以下方式来设置`left`和`backgroundImage`属性: ```html <view :style="{left:`${iconDistance}rpx`,backgroundImage:`url(${topBgImg})`}"></view> ``` 这里的`iconDistance`和`topBgImg`是对应的变量或方法。 3. `calc`方式:使用`calc`函数来设置`style`属性。例如,可以使用以下方式来设置高度属性: ```html <view :style="{height:'calc(100vh - ' + pageTopHeight + 'px - 140rpx)'}"></view> ``` 这里的`pageTopHeight`是对应的变量或方法。 此外,还可以通过添加`class`样式来设置动态样式。例如: ```html <view :class="getClass"></view> ``` 这里的`getClass`是一个返回样式类名的方法。 通过以上方式,我们可以在Uniapp动态设置`style`属性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [uniapp动态设置style和class样式](https://blog.csdn.net/qq_40666120/article/details/108123186)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值