uniapp

记录一下写uniapp踩过的坑

uniapp可以将代码编译到5个小程序,h5和app.开始学习uniapp,目标是练习一个小项目,可以正常编译到app,微信小程序和h5

upx的坑

首先是uxp单位,在代码中使用upx时,会把屏幕等分为750份,所以在375px的屏幕(iphone7)上4upx=2px,但是在320px屏幕(iphone5)上,4upx=1px,并不是4upx=1.7px,这是因为upx最终换算为px的结果为整数.

这样的换算应该是整数的px好渲染?不太清楚.

造成的结果 : 这样的换算对于padding和margin的影响无疑是巨大的,因为假设一个元素设置了padding:4upx;margin:4upx;那么最后这个元素在320px屏幕的误差会达到2.8px,如果这个元素有n个,那么误差为2.8*n

所以尽量不要给元素定死高度,多使用flex布局

createSelectorQuery

那么问题来了:不给元素定死高度,最后在计算列表的高度就不方便了吧,因为小程序不支持原生document.getElementbyID.style这样的形式获取元素高度,所以这里来谈谈createSelectorQuery
uniapp借鉴了小程序的createSelectorQuery这个api,也是非常方便的就能获取到元素的宽高,和offset等属性.

createSelectorQuery在小程序中不能选取到自定义组件,官方文档是说uni.createSelectorQuery().in(this)能选取到组件,但是不加in(this),h5也是能选取到组件,小程序加了in(this)也选取不到组件.所以我获取组件高度选择在组件中获取,得到后把高度传回父组件

值得注意的是,这个api在小程序中是异步代码,在h5里面不是,所以最好使用promise函数将结果return出去,
下面贴上uniapp的createSelectorQuery这个api的代码

methods:{
	
	getMyHeight(){
		return new Promise((resolve,reject)=> {
			let selector = uni.createSelectorQuery().in(this);
			selector.select('.newslist').boundingClientRect((res)=> { //res - 各种参数
				resolve(res.height)
	      })
			.exec((res)=>{//res - 各种参数
				
			})
			
		})
		
	},
},

组件

既然上面谈到了组件,这里就来说说组件的问题,基本用法和vue组件一致
但是created 在小程序中无法使用,h5正常,推荐使用 mounted

选择器

先贴一个报错吧
Some selectors are not allowed in component wxss, including tag name selectors, ID selectors
大概意思是无法使用id选择器,属性选择器(例如 : input[type=“text”]),标签选择器(例如 : input),不过标签选择器是可以正常使用的,在小程序 h5 app正常,但是这里报错说不能用,好慌啊

uniapp中修改input提示placeholder的样式

<input placeholder-style="color:#eeeeee;font-size:36upx;" />

暂时在学习中只遇到了这些问题,还有的话以后再补上来

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值