微信小程序flex布局(实现电商侧栏)

2018-07-25  本文已影响0人  大王爱吃虾

效果图如下:


1750086-80e483b9d419fe6b.gif

参照的是https://blog.csdn.net/u012927188/article/details/73650264这篇文章,但他用的并非是flex布局,今天我用flex布局实现他的效果。

Flex布局的概念
flex布局类似Android中的相对布局RelativeLayout,采用Flex布局的元素,称为Flex容器(flex container)。它的所有子元素自动成为容器成员,称为Flex项目(flex item)。
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)

image.png
关于flex布局详细资料可以参考http://www.runoob.com/w3cnote/flex-grammar.html

Flex布局的使用
常用的标签有:

  display: flex; //声明容器为flex布局
  flex-direction: row; //容器内元素的排列方向.row为沿水平轴排列,column为沿垂直轴排列
  justify-content: center; //容器内元素在水平轴上的排列方式,center为居中,默认值flex-start(左对齐)
  align-items: center; //容器内元素在垂直轴上的排列方式,center为居中,默认值stretch

接下来正式实现效果图的效果
wxml:


<view class="container">
  // 左侧
  <view class="nav_left">
    <block wx:for="{{level}}">
      <view class="nav_left_item {{current == item.cate_id ? 'active' : ''}}" 
            data-index='{{index}}' data-id='{{item.cate_id}}' bindtap='onClick'>{{item.cate_name}}</view>
    </block>
  </view>

  //右侧
  <view class="nav_right">
    <view class="nav_right_container" wx:if="{{level[index].ishaveChild}}">
      <block wx:for="{{level[index].children}}">
        <view class="nav_right_item">
          <image class='image' src="{{item.image}}"></image>
          <text class='text'>{{item.name}}</text>
        </view>
      </block>
    </view>
    <view wx:else>该类暂无数据</view> 
  </view>

</view>

wxss:


.container{
  width:100%;
  height:100%;
  display: flex;
  flex-direction: row;
  padding: 0 0 ; //为什么默认上下有200rpx的padding???望高人解答
  align-items: flex-start;
}

.nav_left{
  width : 25%;
  height: 100%;
  background: #f5f5f5;

}

.nav_left_item {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: center;
  height: 42px;
  border-bottom: 1px solid #dedede;
  font-size: 14px;
}

.active {
  background: #00ff00;
}

.nav_right {
  width:75%;
}

.nav_right_container {
  width:100%;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

.nav_right_item{
  width: 33.33%;
  height: 60px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 10rpx 0;
}

.image {
  width: 50%;
  height: 50%;
}

.text {
  width: 100%;
  font-size: 14px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  text-align: center;
}

js:

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // navLeft:["宝宝奶粉", "纸尿裤","辅食营养","母婴专区","护肤美体","营养保健","居家日用","进口美食","轻奢女装","秒杀特惠清仓","时尚箱包","专场大促","汽车用品","美容护肤","电器手机","生活家居","服饰鞋子","还有什么","没有了吧",]

    level:[
      {
        cate_id: 1,
        cate_name: "护肤",
        ishaveChild: true,
        children:
          [
            {
              child_id: 1,
              name: '洁面皂',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161208/148117972563.jpg"
            },
            {
              child_id: 2,
              name: '卸妆',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161207/148110444480.jpg"
            },
            {
              child_id: 3,
              name: '洁面乳',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161208/148117973270.jpg"
            },
            {
              child_id: 4,
              name: '面部祛角质',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161208/148117981591.jpg"
            }
          ]
      },
      {
        cate_id: 2,
        cate_name: "彩妆",
        ishaveChild: true,
        children:
          [
            {
              child_id: 1,
              name: '气垫bb',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161212/14815381301.jpg"
            },
            {
              child_id: 2,
              name: '修容/高光',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161212/14815381411.jpg"
            },
            {
              child_id: 3,
              name: '遮瑕',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161212/148153815181.jpg"
            },
            {
              child_id: 4,
              name: '腮红',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161212/148153815759.jpg"
            },
            {
              child_id: 5,
              name: '粉饼',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161212/148153816983.jpg"
            },
            {
              child_id: 6,
              name: '粉底',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161212/148153817721.jpg"
            },
            {
              child_id: 7,
              name: '蜜粉/散粉',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161212/148153819354.jpg"
            },
            {
              child_id: 8,
              name: '隔离霜',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161215/148179053369.jpg"
            }
          ]
      },
      {
        cate_id: 3,
        cate_name: "香水/香氛",
        ishaveChild: true,
        children:
          [
            {
              child_id: 1,
              name: '淡香水EDT',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161213/14815978910.jpg"
            },
            {
              child_id: 2,
              name: '浓香水EDP',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161213/148159789883.jpg"
            },
            {
              child_id: 3,
              name: '香体走珠',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161213/14815979307.jpg"
            },
            {
              child_id: 4,
              name: '古龙香水男士的最爱',
              image: "http://mz.djmall.xmisp.cn/files/logo/20161213/148159765589.jpg"
            }
          ]
      },
      {
        cate_id: 4,
        cate_name: "个人护理",
        ishaveChild: false,
        children: []
      }
    ],

    current : 1, //当前选中的cate_id
    index : 0 // 当前选中的index
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  
  },

  onClick: function(e) {
      console.log(e)

      this.setData({
        current:e.target.dataset.id,
        index:e.target.dataset.index
      })
  }

})
上一篇下一篇

猜你喜欢

热点阅读