微信小程序开发之布局奇盈绝技

1.微信小程序对flex流式布局支持的相当不错,甚至有些地方可以使用flex进行修复操作
如在设置image这个标签的时候,内设有个10rpx的底部空间,假如这个空间背景为黑色,那么10rpx这个底部空间就会变成黑色,假如是白色,那就是白色,所以不处理这个底部空间,有可能会影响整体美观,做法很简单

display:flex

在图片样式上面加上这个流式显示,这个底部空间就消失了,是不是很神奇?
2.既然我们谈到了背景颜色,那么微信小程序如何修改背景颜色的呢?
我们有两种做法:首先我们可以在骨架上面包装个整体的层,将这个层这样设置样式

width:100%;
height:100%;
background-color:#******

是不是恍然大悟?
其实我们还可以这样干,我们分析下编译好的骨架,我们可以看到微信小程序这个骨架最终的结果是

<page></page>

那么我们可以这样设置

page{
background:"************"
}

3.在我们使用scroll-view的时候呢,我们会发现一个问题,flex布局好像不生效啊,它真的是不支持flex吗?前边说过小程序其实对flex布局支持的相当好,不会被打脸了吧,我们回归文档看一看scroll-view
在这里插入图片描述
原来是没开启这个功能!!~~
4.在做scroll-view的时候底下留了好大一块区域,但是我们也没定高和宽,这时候该怎么办呢?
我们可以在scroll-view下面包装一层

<scroll-view scroll-x enable-flex>
		<view></view>
</scroll-view>

我们会发现还是没有什么用,这时候就该猜测是不是我们动用了什么组件里面某个属性,当我们吧enable-flex去除之后,多余区域神奇般的消失了~~~

<scroll-view scroll-x>
		<view></view>
</scroll-view>

5.说到定高和宽,这里提醒一下。没有特殊要求,不要定高宽,让组件本身把高和宽顶起来。
6.wxs的使用小记录,wxs是微信小程序嵌入wxml中的一种用法,其写法和js一样,我们首先具体格式如下

<wxs module="xxx" src="xxx">
	

</wxs>

当我们想做渲染的时候
我们可以直接调用wxs里面的方法,进行渲染,我目前使用wxs做过滤器
7.当我们两个模块设计图是这样的
在这里插入图片描述
我们该如何用flex进行处理呢?
首先,我们可以把这个看做成左和右两个模块,右模块可以分为上下两个模块,左右模块设计师假如有刻意留边距的时候,这个width肯定不是做到100%的,我们可以先把大的模块整体设置100%width,然后图片正常尺寸设计,

display:flex;
flex-direction:row;
justify-content:space-between

这样做的样式就是左模块往左,右模块往右,中间就会留个间距出来了。
右上,右下也是同理。
8.更了这么多,也谈谈对产品的思考
京东和淘宝大家都知道是电商,其实这两个有一部分地方不一样,淘宝一般用来没事逛逛,而京东呢,一般用户群体带有明显的购物目的,因为自营用起来是比较放心的,淘宝可能需要货比货,这就影响了许多格局方面的问题,比如sku方面的设计,ui的设计,心理学之类的东西。
9.如何动态的去调整图片大小,而不改变图片的长宽比例
关于这个问题呢,小程序已经帮我们想到了,也就是说在我们来看看文档是怎么写的
在这里插入图片描述
image组件中有个mode选项,在这里插入图片描述
这么多模式可以选择,所以我们可以轻而易举的进行缩放,
但是问题来了,当我们的width固定不是350rpx,假如是340rpx,那又如何控制缩放呢,
其实微信小程序在监听图片尺寸上开放了个接口,我们还是回归文档看一下
在这里插入图片描述
我们可以使用这个方法对图片进行监听,得出width和height,长和高的比进行计算
公式也很简单,就是 h/w=newh/neww
这样我们就可以求出按这个比例算出的长和宽了,

    <image
    bind:load="imgLoad" 
    ></image>
    imgLoad(e){
      console.log(e)
      const {width,height}=e.detail
      console.log(width,height)
      //width / height= 340 / height
      let percent=width/height
      this.setData({
        w:340,
        h:width/percent
      })
    }

等等,那该如何动态赋值?
我们可以进行这样改造

<image bind:load="imgload" style="height:{{h}}rpx;width:{{w}}rpx"></image>

这样子,我们就可以动态获取h和w了~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值