小计最近踏的微信小程序的坑
最近做小程序,实在不想做。然后来吐槽下小程序的坑吧。也只做了这一个项目,有不对的地方请指正见谅。
一、
tabbar
app.json里配置tabbar是原生层的,所以要实现比价奇怪的tabbar只有自己用view写了,比如:
这样选中的按钮图标都超出了tabbar 的高度,只有的就自己定义一个组件吧
<template name="tabbar"> <view class="tabbar_box"> <block wx:for="{{tabbar.list}}" wx:for-item="item" wx:key="index"> <!-- 选中 --> <navigator class="tabbar_nav" url="{{item.pagePath}}" style="color:{{tabbar.selectedColor}}" open-type="switchTab" wx:if="{{item.selected}}"> <image class="tabbar_icon_on" src="{{item.selectedIconPath}}"></image> </navigator> <navigator class="tabbar_nav" url="{{item.pagePath}}" style="color:{{tabbar.color}}" open-type="redirect" wx:else> <image class="tabbar_icon" src="{{item.iconPath}}"></image> <text class="tabbar_text">{{item.text}}</text> </navigator> </block> </view> </template>
js呢 就定义到app.js
editTabBar: function () { var tabbar = this.globalData.tabbar, currentPages = getCurrentPages(), _this = currentPages[currentPages.length - 1], pagePath = _this.__route__; (pagePath.indexOf('/') != 0) && (pagePath = '/' + pagePath); for (var i in tabbar.list) { tabbar.list[i].selected = false; (tabbar.list[i].pagePath == pagePath) && (tabbar.list[i].selected = true); } _this.setData({ tabbar: tabbar }); }, globalData: { userInfo: null, tabbar: { list: [{ pagePath: "/pages/index/index", iconPath: "", selectedIconPath: "", text: "test" }, .........], } }
然后再对应页面里调用
onLoad: function () { //tabbar app.editTabBar(); }
再说个在app.json里配置 custom
"window":{ "navigationStyle": "custom" },
屏幕高度就是整个手机屏幕的高度了,看看编辑器显示布局信息,但是右边线程序的退出按钮不会消失,设计时必须注意啊,不要有按钮在右边!!!会重叠遮挡
二、cover-view
如果调用了原生层,原生层有哪些·····map、video、canvas、camera, 想在上面布局就只有用cover-view、cover-image,
这两个玩意儿不支持的东西太多了,overflow,zindex不支持,touch事件不支持,具体的不支持去官网看吧。
然后你想想,当map或者vido作为全屏背景时,需要在上面实现其他元素布局也是蛋疼的
<cover-view class="red"></cover-vie> <cover-view class="blue"></cover-view>
如上,正常html顺序 red是红色框里的,blue是蓝色框里的。圈出来有重叠对吧,都是absolute定位。但是问题出在红色框重叠区域不能点击了,因为蓝色遮住了,所以换一个
<cover-view class="blue"></cover-view> <cover-view class="red"></cover-vie>
这样整个红色框按钮就都能点击了。
cover-view设置固定高宽,里面的元素要是超过cover-view即使absolute 一样被隐藏。
三、父子组件
子组件通过data 接受父组件数据
<view class="container"> <import src="../com/son/index.wxml"/> <template is="son" data="{{data: 'fuck', aa: '231', event: 'click'}}"/> </view >
如上事件传递也是这样,子组件不能再里面自己定义事件,只能通过父组件传递过去。
四、点击事件获取数据
<cover-view bindtap="click('sadas')"></cover-view>
想这么传递数据是不行的, 那就用dataset咯
<cover-view data-aa="sadas" bindtap="click" ></cover-view>
click(event) { let tab = event.currentTarget.dataset.aa; },
五、css方面
不支持伪类。。
待补充。。。。。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java高并发、分布式框架,从无到有微服务架构设计
微服务架构模式(Microservice Architect Pattern)。近两年在服务的疯狂增长与云计算技术的进步,让微服务架构受到重点关注 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。 微服务架构优势 首先简单介绍了微服务(Microservices)的内涵及优势,微服务架构的本质,是用一些功能比较明确、业务比较精练的服务去解决更大、更实际的问题。微服务架构将服务拆分,分别采用相对独立的服务对各方面进行管理,彼此之间使用统一的接口来进行交流,架构变得复杂,优势也很明显: 复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。...
- 下一篇
Java中的阻塞队列(2)
6、同步队列SynchronousQueue 同步队列是一个不存储元素的阻塞队列,每一个put操作必须等待一个take操作,否则就不能继续添加元素。这种场景下可用于多个线程之间的通讯,a线程可以把需要传递的数据放到同步队列中,b线程消费队列中的数据,因为本身不存储元素,所以SynchronousQueue的吞吐量高于ArrayBlockingQueue和LinkedBlockingQueue 首先看一下结构,从结构上跟别的队列并没有什么太大的区别,所以区别就要看里面的源码了 图6-1 SynchronousQueue队列分为两种模式默认采取的非公平锁,SynchronousQueue不存储元素,所以会有很多的生产者和消费者阻塞,对于这些阻塞的线程,非公平锁中存入了一个LIFO队列中,其实就是把线程放入队列,而不是数据 当SynchronousQueue构造函数中入口参数改为true,此时队列采取公平锁,阻塞的线程存入一个FIFO队列中 此处具一个例子 图6-2 图6-3 7、LinkedBlockingDeque链表双向阻塞队列 由链表结构组成的双向阻塞队列,双向...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6