• 小程序中是没有直接的下拉框标签可以使用的,所以下拉框需要手动写,或者使用框架
  • 因为考虑到下拉框展开的时候,可能需要遮挡住其余的样式,这里就用的cover-view标签.(不考虑遮挡的可以换成普通的view标签)

1:视图添加以下代码:

    <view class="search-bar">
<view class="condition" bindtap="showCondition">
<view class="select-condition">{{choosedCondition.title}}</view>
<view class="trigger {{ conditionVisible ? 'reverse' : ''}}"></view>
<cover-view class="option-list" style="height: {{conditionVisible ? '300rpx': '0'}}">
<cover-view bindtap="onChnageCondition" data-id="{{item.id}}" class="list-item" wx:for="{{conditionList}}" wx:key="index" wx:for-index="index">
<cover-view class="title">{{item.title}}</cover-view>
<cover-view class="title" wx:if="{{item.select}}">√</cover-view>
</cover-view>
</cover-view>
</view>
</view>

2:wxss

/* 下拉框 */
/* search */
.search-bar {
width: 100%;
height: 84rpx;
background: #fff;
/* border-top: 1rpx solid #f6f6f6; */
box-sizing: border-box;
padding: 0 20rpx;
display: flex;
align-items: center;
/* border: 1rpx solid red; */
} .search-bar .condition {
width: 100%;
height: 64rpx;
/* border-radius: 30rpx; */
background: #F4F4F4;
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 0 20rpx;
position: relative;
} .search-bar .condition .option-list {
position: absolute;
z-index: 100;
width: 100%;
left: 0;
top: 60rpx;
box-sizing: border-box;
background: #f4f4f4;
padding: 0rpx 20rpx;
margin-top: 4rpx;
border-radius: 6rpx;
} .option-list .list-item {
color: #BABABA;
font-size: 26rpx;
height: 60rpx;
display: flex;
align-items: center;
justify-content: space-between;
} .search-bar .condition .select-condition {
color: #BABABA;
font-size: 26rpx;
} .search-bar .condition .trigger {
width: 0;
height: 0;
border: 12rpx solid transparent;
border-top: 15rpx solid #c2c2c2;
position: relative;
top: 8rpx;
transform: rotate(0deg);
transform-origin: center 7rpx;
transition: transform 0.4s;
} .search-bar .condition .trigger.reverse {
transform: rotate(180deg);
transform-origin: center 7rpx;
transition: transform 0.4s;
} /* 下拉框结束 */

3:wxjs

data: {
tabType: 'tab1',
key: 'tab1',
conditionList: [{
title: '选项1',
id: '1',
select: true
},
{
title: '选项2',
id: '2',
select: false
},
{
title: '选项3',
id: '3',
select: false
},
{
title: '选项4',
id: '4',
select: false
},
{
title: '选项5',
id: '5',
select: false
}
],
choosedCondition: {
title: '选项1',
id: '1'
},
conditionVisible: false, }, showCondition() {
this.setData({
conditionVisible: !this.data.conditionVisible
})
},
// 改变查询项
onChnageCondition(e) {
const list = this.data.conditionList
list.forEach(item => {
if (item.id === e.currentTarget.dataset.id) {
item.select = true
this.setData({
'choosedCondition.title': item.title,
'choosedCondition.id': item.id
})
} else {
item.select = false
}
})
this.setData({
conditionList: list
})
},

6:效果图

微信小程序下拉框实现的更多相关文章

  1. 微信小程序下拉框

    微信小程序里没有和HTML里的下拉框一样的组件,想要相同的效果只能自己写一个,先看效果 下面来看一下代码: 首先WXML <view class='select_box'> <vie ...

  2. 微信小程序下拉框组件

    >>下拉组件 1.组件结构: 2.index.js: //index.js Component({ /** * 组件的属性列表 */ properties: { propArray: { ...

  3. 微信小程序下拉框之二维数组或对象

    在项目中,我们大多数时候传的值并不是需要这个下标,而是其他的值.像我项目中,需要获取到的是它对应的Id,那么我们如何通过它的这个下标值返回你想要的值呢? 通过picker返回的索引值,去获取匹配你想获 ...

  4. 微信小程序下拉加载和上拉刷新两种实现方法

    方法一:onPullDownRefresh和onReachBottom方法实现小程序下拉加载和上拉刷新 首先要在json文件里设置window属性 设置js里onPullDownRefresh和onR ...

  5. 微信小程序下拉加载下一页

    小程序做得多了,有些常用功能就有必要记录一下 请看详解: 微信小程序之下拉触底时加载下一页 wxml参考: <scroll-view class='dataContainer' scroll-y ...

  6. 微信小程序 - 下拉菜单组件

    使用: 1.导入组件 2.使用组件 3.数据传入 4. 获取数据(通过同步缓存,获取“choose”)- 发送到后端 点击下载:小程序-下拉组件.

  7. 关于微信小程序下拉出现三个小点

    包子这天看美团外卖的小程序,再瞅瞅自己的背景色,发现,美团下拉的时候有三个小点,但是我自己的校车徐下拉的时候没有三个小点,很是郁闷,于是各种的找各种的找,发现,这三个小点是微信小程序自带的,你只需要设 ...

  8. 微信小程序~下拉刷新PullDownRefresh

      一.onPullDownRefresh回调 代码: // http://itlao5.com onPullDownRefresh: function () { console.log('onPul ...

  9. 微信小程序 --- 下拉刷新上拉加载

    查看文档看到:page()函数注册页面的时候,有 onPullDownRefresh 监听用户下拉动作,onReachBottom 页面上拉触底事件的函数. 在小程序里,用户顶部下拉是默认禁止的,我们 ...

随机推荐

  1. ittun.com的使用方法

    [如果这篇文章对你有所作用,请加关注哦!] 步骤一: 进入官网http://ittun.com/ Windows 64位下载http://ittun.com/upload/17.2/ittun_win ...

  2. ARC和MRC兼容和转换

    1.ARC模式下如何兼容非ARC的类 转变为非ARC -fno-objc-arc 转变为ARC的, -f-objc-arc (不常用) 2.如何将MRC转换为ARC

  3. 给 zsh 自定义命令添加参数自动补全

    有时我会自定义一些 zsh 命令,以便提升某些高频操作的效率.本文记录我给一个自定义命令添加参数自动补全的方法. 场景 我自定义了一个 zsh 命令 gmt,执行 gmt <b2>,可以将 ...

  4. Node.js躬行记(15)——活动规则引擎

    在日常的业务开发中,会包含许多的业务规则,一般就是用if-else硬编码的方式实现,这样就会增加逻辑的维护成本,若无注释,可能都无法理解规则意图. 因为一旦规则有所改变,那么就需要修改代码再发布代码, ...

  5. P2678 [NOIP2015 提高组] 跳石头

    #include<bits/stdc++.h> using namespace std; int l,n,m,a[100010];//与起点的距离 bool check(int d) { ...

  6. PyCharm编程软件详细安装教程

    PyCharm编程软件安装教程&破解 一.官网下载软件 1. 网页搜索进入PyCharm官网下载页面(https://www.jetbrains.com/pycharm/download/ ) ...

  7. Solution -「CF 1119F」Niyaz and Small Degrees

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个结点的树,边有边权,对于每个整数 \(x\in[0,n)\),求出最少的删边代价使得任意结点度数不超过 ...

  8. Mybatis结果映射器resultMap的基本用法

    <mapper namespace="全局唯一的名称空间"> <resultMap id="本namespace下唯一" type=" ...

  9. Intellij IDEA出现java.lang.ClassNotFoundException: com.mysql.jdbc.Driver处理办法

    菜单-->File-->project structure-->Modules-->Dependencies-->添加MySQL的驱动包:mysql-connector- ...

  10. Vue2.0源码学习(3) - 组件的创建和patch过程

    组件化 组件化是vue的另一个核心思想,所谓的组件化就,就是说把页面拆分成多个组件(component),每个组件依赖的css.js.图片等资源放在一起开发和维护.组件是资源独立的,在内部系统中是可以 ...