Weex实现GridView的网格布局以及浮层效果
来源:互联网 发布:网络上找不到打印机 编辑:程序博客网 时间:2024/05/22 06:55
Weex实现GridView的网格布局以及浮层效果
转载请注明出处:http://blog.csdn.net/hnytdangyao/article/details/78261497.
本文出自 [ 党耀的博客 ]
目录
- Weex实现GridView的网格布局以及浮层效果
- 目录
- 一概述
- 二实现方式
- 代码解析
- 源码
因为项目需要,在9月份自学了前端语言和weex相关的一系列东西,并初次使用了weex来改版首页,其中的踩坑经历后面会做一个分享出来,下面是正文。
一.概述
weex中提供了list标签用来展示列表页的布局,类似Android中的listview。但是没有类似gridview的网格布局,所以就需要在布局和数据上做操作。效果图如下:
二.实现方式
现在使用的weex是基于vue的2.0版本,所以如果你对js比较熟悉就直接看代码吧:
代码解析
template里如下布局如下:
<template> <div> <div v-for="v in list" class="row"> <div v-for="item in v" class="item"> <div class="module"> <div class="typeLayout"> <image class="img" :src="item.imgUrl"></image> <div class="numberAndType"> <div class="playtype" v-if="item.isZhibo === '1'"> <text class="typeText">{{item.typeText}}</text> </div> <div class="playtype2" v-else> <text class="typeText">{{item.typeTime}}</text> </div> </div> <div class="zhuboModule"> <image class="zhuboImg" :src="item.imgUrl"></image> <text class="zhuboName">{{item.zhuboName}}</text> </div> </div> <div class="name"> <text class="palytext">{{item.text}}</text> </div> </div> </div> </div> <div class="divider"></div> </div></template>
这里注意,div标签里的v-for 指令是vue.js的用法。我们用 v-for 指令根据一组数组的选项列表进行渲染,使用 item in items 形式表示,items 是数组的变量名,而 item 是数组元素的别名。我们要实现的所谓的网格布局,就是一个n行m列的布局。所以这里通过最外层的div标签的v-for控制的是行数,第二层div的v-for控制的就是列数,具体如何控制做到几行几列请看下面的模拟数据源:
list:[ [{url:"a",text:"a"},{url:"aa",text:"aa"}], [{url:"b",text:"b"},{url:"bb",text:"bb"}] ]
这个list数组里面分别有两个数组,暂且称为数组A和数组B。每个数组里面又有两个对象。所以在list数据源里,数组的个数就代表了有几行,那么在数组A或者数组B中,对象的个数就代表了每行有几列。到这里,就完成了我们想要实现的网格布局。
接下来说一下效果图上的浮层。这个浮层其实就是简单的利用了渲染机制在布局和样式上做的操作,一切都是细节。直接看代码,找到 div class=”numberAndType” 这里,这里处理的就是每个子模块上浮层的布局。这个div标签和上面的image标签是平级关系,那么渲染的时候只要class=”numberAndType”这个标签大小和它父标签控制的区域一样大就会按布局顺序从上到下渲染:先渲染image标签,然后渲染class=”numberAndType”这个div,所以就造成了一种浮层的效果。
源码
有同学还不理解的话直接复制下面这段源码,打开官方提供的在线编辑器http://dotwe.org/vue 粘贴后运行即可预览。
注意:有可能某些浏览器不支持,run之后打开手淘扫码也可进行预览或者github上找到官方的demo有个playgroundApp安装也可进行扫码预览。
<template> <div class="onplay"> <div v-for="v in list" class="row"> <div v-for="item in v" class="item"> <div class="module"> <div class="typeLayout"> <image class="img" :src="item.imgUrl"></image> <div class="numberAndType"> <div class="playtype" v-if="item.isZhibo === '1'"> <text class="typeText">{{item.typeText}}</text> </div> <div class="playtype2" v-else> <text class="typeText">{{item.typeTime}}</text> </div> </div> <div class="zhuboModule"> <image class="zhuboImg" :src="item.imgUrl"></image> <text class="zhuboName">{{item.zhuboName}}</text> </div> </div> <div class="name"> <text class="palytext">{{item.text}}</text> </div> </div> </div> </div> <div class="divider"></div> </div></template><style scoped> .row{ flex-direction: row; height:284px; padding-left:20px; padding-right:20px; } .item{ flex:1; justify-content: center; align-items:center; } .module{ flex-direction: column; justify-content: center; align-items:center; } .typeLayout{ width:342px; height:192px; } .numberAndType{ position:absolute; flex-direction:row; width:342px; height:32px; top:1px; z-index:100px; } .playtype{ flex-direction:row; justify-content:flex-start; align-items:center; background-color:#ff6c00; } .playtype2{ flex-direction:row; justify-content:flex-start; align-items:center; background-color:#00abff; } .typeText{ font-size:20px; lines:1; color:white; padding-right:6px; padding-left:6px; } .numbers{ flex-direction:row; justify-content:flex-start; align-items:center; background-color:rgba(0,0,0,0.1); } .zhuboModule{ position:absolute; flex-direction:row; justify-content:flex-start; align-items:center; bottom:0px; height:38px; width:342px; } .zhuboImg{ width:38px; height:38px; border-radius:19px; margin-left:12px; margin-right:12px; } .zhuboName{ font-size:26px; color:white; text-align:center; lines:1; text-overflow:ellipsis; } .img{ width:342px; height:192px; z-index:98px; } .name{ width:342px; } .palytext{ font-size:28px; color:#333333; margin-top:12px; lines:1; text-overflow:ellipsis; }</style><script> module.exports = { data: function () { return { list:[ [{imgUrl:'http://img.alicdn.com/bao/uploaded/i4/2968205213/TB2gam5agwjyKJjSspeXXXXZXXa_!!2968205213.jpg',text:'新手卖家快速引流78900000000000000099',isZhibo:'1',typeText:'直播中',numberText:'299人观看',zhuboName:'老王'},{imgUrl:'https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg',text:'淘宝运行快速实战',isZhibo:"1",typeText:"直播中",numberText:"5442人观看",zhuboName:'老王'}], [{imgUrl:'https://gd3.alicdn.com/bao/uploaded/i3/TB1x6hYLXXXXXazXVXXXXXXXXXX_!!0-item_pic.jpg',text:'323',typeTime:'预告 12:00',zhuboName:'老王'},{imgUrl:'https://gd2.alicdn.com/bao/uploaded/i2/T14H1LFwBcXXXXXXXX_!!0-item_pic.jpg',text:'4444444444444444',typeTime:'预告 14:00',zhuboName:'老王'}], ] } } }</script>
- Weex实现GridView的网格布局以及浮层效果
- Android网格布局(GridView)---实现漂亮的多选效果
- UITableView实现网格视图效果GridView
- GridView 网格布局 使用
- GridView-网格布局案例
- 自适应的网格布局-砌墙效果
- GridView(网格布局)样例
- Android的网格布局设计简单实例--GridView
- UGUI网格布局组和Android的GridView用法比较
- 网格布局实现计算器
- ListView实现GridView的效果
- android GridView网格布局,高度问题
- GridLayout网格布局和GridView区别
- GridView加分隔线,最简单的方式实现网格
- Android利用ViewPager+GridView,实现网格布局(功能列表)并能水平滑动
- RecylerView(GridView布局)实现充值界面效果
- GridView无限层复杂表头的实现
- GridView无限层复杂表头的实现
- 【学习】ie8支持rgba()透明度颜色
- JNI Java 类签名 方法签名 参数签名
- 通达oa破解版/通达oa破解补丁/通达oa破解版下载2017
- base64图片 类型
- Postgres-xl 手动安装(在安装的过程中注意关闭防火墙)
- Weex实现GridView的网格布局以及浮层效果
- 【1233】推箱子(右)
- android如何让布局保持位于键盘上方(一直在键盘上面)
- GemFile 学习——环境搭建
- mybatis中的#{}和${}区别
- Android中注解的实际运用
- 机器学习算法(1) KNN
- ODBC Excel驱动程序登陆失败
- [ESSAY]what are you optimistic/pessimistic about?