4.2.1微信小程序 布局基础

概要:

flex-direction   元素排列方向
flex-wrap        是否换行
flex-flow        二者合并

justify-content    主轴对齐
align-items        次轴对齐

flex-grow          放大对齐
flex-shrink        缩小对齐
flex-basis         自己固定
flex: 1 1 50px ;    三者合并

position:absolute  绝对路径/相对路径
  left:300rpx

 

初始样式:wxss

page{
      height: 100%; /*必须有这个page 配置,height100%占屏幕才生效*/
    }

    .container {
      height: 100%;
      width:100%;
      background-color: rebeccapurple;
      display: flex; /**元素按行排列,不写是按照列*/


    }

    .item{
      height: 100rpx;
      width: 100rpx;
      background-color: rosybrown;
      border: 1px solid #fff;
    }

初始wxml:

<!--index.wxml-->
<view class="container">
  
  <view class="item">
    1
  </view>


  <view class="item">
    2
  </view>

  <view class="item i3" >
    3
  </view>

  <view class="item">
    4
  </view>

  
</view>

模拟器

 

========================================================================================

1. flex 的属性

 //元素排列方向
flex-direction: row; //默认是换行,主轴从左向右
flex-direction: column; //主轴切换为从上到下

//换行方式
flex-wrap: wrap;
flex-wrap: nowrap;//默认,不换行

//flex-direction 和flex-wrap 的缩写
flex-flow: row wrap;
<!--index.wxml-->
<view class="container">
  
  <view class="item">
    1
  </view>


  <view class="item">
    2
  </view>

  <view class="item i3" >
    3
  </view>

  <view class="item">
    4
  </view>
  <view class="item">
    1
  </view>


  <view class="item">
    2
  </view>

  <view class="item i3" >
    3
  </view>

  <view class="item">
    4
  </view>
  
</view>
page{
  height: 100%; /*必须有这个page 配置,height100%占屏幕才生效*/
}

.container {
  height: 100%;
  width:100%;
  background-color: rebeccapurple;
  display: flex; 
  flex-flow: row wrap;
} 

.item{
  height: 100rpx;
  width: 100rpx;
  background-color: rosybrown;
  border: 1px solid #fff;
}

 

2.主轴的对齐方式:从左向右

justify-content: center; //居中
justify-content: flex-start;//左对齐 默认
justify-content: flex-end;//右对齐
justify-content: space-between;// 之间的空间相等
<!--index.wxml-->
<view class="container">
  
  <view class="item">
    1
  </view>


  <view class="item">
    2
  </view>

  <view class="item i3" >
    3
  </view>

  <view class="item">
    4
  </view>
  
  
</view>
page{
  height: 100%; /*必须有这个page 配置,height100%占屏幕才生效*/
}

.container {
  height: 100%;
  width:100%;
  background-color: rebeccapurple;
  display: flex; 
  flex-flow: row wrap;
  justify-content: space-between; 
} 

.item{
  height: 100rpx;
  width: 100rpx;
  background-color: rosybrown;
  border: 1px solid #fff;
}

3.次轴,从上到下

align-items: flex-start; //从上向下对齐
align-items: flex-end; //从下向上对齐
align-items: center;  //在交叉轴对齐
align-items: stretch;//不设置item 的高度,会延伸从上到下 到底
align-items: baseline; //图标内部有文字,内部文字对齐方式

4.缩小,放大

 缩小:不换行 ,当一行 放不开的时候会等比缩进

<!--index.wxml-->
<view class="container">
  
  <view class="item">
    1
  </view>


  <view class="item">
    2
  </view>

  <view class="item " >
    3
  </view>

  <view class="item">
    4
  </view>
  <view class="item">
    5
  </view>

  <view class="item">
    6
  </view>

  <view class="item " >
    7
  </view>

  <view class="item">
    8
  </view>
   
</view>
page{
  height: 100%; /*必须有这个page 配置,height100%占屏幕才生效*/
}

.container {
  height: 100%;
  width:100%;
  background-color: rebeccapurple;
  display: flex;   
  flex-direction: row;   
  //flex-wrap:wrap  这里默认不能换行
} 

.item{
  height: 100rpx;
  width: 100rpx;
  background-color: rosybrown;
  border: 1px solid #fff;
  flex-shrink: 1;   //等比缩进
}

等比放大:当一行有剩余空间的时候,会放大,填充空间

<!--index.wxml-->
<view class="container">
  
  <view class="item">
    1
  </view>


  <view class="item">
    2
  </view>

  <view class="item " >
    3
  </view>

  <view class="item">
    4
  </view>
  
   
</view>

放大前

page{
  height: 100%; /*必须有这个page 配置,height100%占屏幕才生效*/
}

.container {
  height: 100%;
  width:100%;
  background-color: rebeccapurple;
  display: flex; 
  flex-direction: row;
} 

.item{
  height: 100rpx;
  width: 100rpx;
  background-color: rosybrown;
  border: 1px solid #fff;
  flex-grow: 1;
}

放大后

 

flex-basis: 200rpx; 单独定义自己的大小,其余的默认按照等比缩放

flex: 1 1 50px ; //grow shrink bais 以上的缩写

 

 

5.相对定位和绝对定位

相对定位:相对于自身进行定位,参照物是自己

绝对定位:元素相对于 离他最近的一个,并且已经定位 的  父级元素 进行定位

page{
  height: 100%; /*必须有这个page 配置,height100%占屏幕才生效*/
}

.container {
  height: 100%;
  width:100%;
  background-color: rebeccapurple;
  position: relative;
  left:100rpx;
} 

.item{
  height: 100rpx;
  width: 100rpx;
  background-color: rosybrown;
  border: 1px solid #fff;
}

.i2{
  height: 100rpx;
  width: 100rpx;
  background-color: rosybrown;
  border: 1px solid #fff;
  position:absolute;
  left:300rpx;
}

说明:定义了container  的relative或absolute 就对他定位了,那么 i2 操作的父级元素就是container 了;反之,则操作的相当于page 这个空白的页面;此情况,i2 相对于container  移动了300rpx ,是相对于container  的。container  相对于page移动了100rpx;如果container  没有相对定位,那么i2 只是相对于page移动300rpx

 

 

 

此情况 container 没有进行定位:

 

page{
  height: 100%; /*必须有这个page 配置,height100%占屏幕才生效*/
}

.container {
  height: 100%;
  width:100%;
  background-color: rebeccapurple;
 
} 

.item{
  height: 100rpx;
  width: 100rpx;
  background-color: rosybrown;
  border: 1px solid #fff;
}

.i2{
  height: 100rpx;
  width: 100rpx;
  background-color: rosybrown;
  border: 1px solid #fff;
  position:absolute;
  left:300rpx;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值