微信小程序开发前端实现下拉框选择的小弹出层示例代码

 更新时间:2025年11月04日 08:55:06   作者:铁壁的答案  
这篇文章主要介绍了微信小程序开发前端实现下拉框选择的小弹出层的相关资料,组件包含下拉选择器、搜索输入框和弹出层,点击下拉选择器会显示一个弹出层,需要的朋友可以参考下

1、商品库的文字和下拉箭头组成一个可点击的按钮,如图;

2、点击后会在这个按钮下方显示一个矩形的弹出层,里面会有若干个选项

3、点击弹出层意外的区域时,弹出层会小时

以下是完整的实现方案(先直接上代码)

<view class="search-container search-container-one">
  <view class="search-box searh-original">
    <!-- 下拉选择器部分 -->
    <view class="flex-center type" bindtap="togglePopup">
      <view class="search-type">{{selectedOption || '商品库'}}</view>
      <image src="/assets/arrow-down.png" mode="widthFix" class="{{showPopup ? 'arrow-up' : 'arrow-down'}}"/>
    </view>
    
    <!-- 搜索输入框部分 -->
    <view class="s-input">
      <input class="search-input" value="{{content}}" placeholder="按商品名搜索" bindinput="searchChange" placeholder-class="gray-color" bindconfirm="searchChange"/>
      <image src="/assets/search.png" class="search-image" bindtap="searchChange" mode="aspectFit"/>
    </view>
    
    <!-- 弹出层 -->
    <view class="popup-mask" wx:if="{{showPopup}}" bindtap="hidePopup"></view>
    <view class="popup-container" wx:if="{{showPopup}}">
      <view class="popup-item" bindtap="selectOption" data-value="商品库">商品库</view>
      <view class="popup-item" bindtap="selectOption" data-value="自定义库">自定义库</view>
    </view>
  </view>
</view>
/* 原有样式保持不变,新增以下样式 */
.flex-center.type {
  position: relative;
  padding-right: 10rpx;
}

.arrow-down {
  width: 24rpx;
  height: 24rpx;
  margin-left: 8rpx;
  transition: transform 0.3s;
}

.arrow-up {
  width: 24rpx;
  height: 24rpx;
  margin-left: 8rpx;
  transform: rotate(180deg);
  transition: transform 0.3s;
}

.popup-mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: transparent;
  z-index: 99;
}

.popup-container {
  position: absolute;
  top: 80rpx;
  left: 20rpx;
  width: 200rpx;
  background: #fff;
  border-radius: 8rpx;
  box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15);
  z-index: 100;
  overflow: hidden;
}

.popup-item {
  padding: 20rpx;
  text-align: center;
  font-size: 28rpx;
  color: #333;
  border-bottom: 1rpx solid #f5f5f5;
}

.popup-item:last-child {
  border-bottom: none;
}
Page({
  data: {
    showPopup: false,
    selectedOption: '', // 当前选中的选项
    content: '' // 搜索内容
  },
  
  // 切换弹出层显示状态
  togglePopup() {
    this.setData({
      showPopup: !this.data.showPopup
    });
  },
  
  // 隐藏弹出层
  hidePopup() {
    this.setData({
      showPopup: false
    });
  },
  
  // 选择选项
  selectOption(e) {
    const value = e.currentTarget.dataset.value;
    this.setData({
      selectedOption: value,
      showPopup: false
    });
    // 这里可以添加选择后的逻辑
  },
  
  // 搜索相关方法保持不变
  searchChange(e) {
    this.setData({
      content: e.detail.value
    });
    // 你的搜索逻辑
  }
});

代码解析:

WXML 结构解析

该代码实现了一个带下拉选择器的搜索框组件,主要包含三部分:下拉选择器、搜索输入框和弹出层。

flex-center.type 是下拉选择器容器,显示当前选中的选项(默认为"商品库")和下拉箭头图标。点击后会触发 togglePopup 方法。

s-input 是搜索输入框容器,包含文本输入框和搜索图标。输入时会触发 searchChange 方法。

popup-maskpopup-container 构成弹出层,当点击下拉选择器时显示。popup-container 包含两个选项:"标准库"和"自定义库"。

WXSS 样式解析

新增样式主要控制下拉选择器和弹出层的视觉效果:

arrow-downarrow-up 控制下拉箭头的旋转动画,通过 transform: rotate(180deg) 实现箭头方向切换。

popup-container 使用绝对定位显示在下拉选择器下方,添加阴影和圆角边框增强视觉效果。

popup-mask 是半透明遮罩层,点击后会关闭弹出层。

JavaScript 逻辑解析

data 对象包含三个关键状态:

  • showPopup 控制弹出层显示/隐藏
  • selectedOption 存储当前选中的选项
  • content 存储搜索框输入内容

togglePopup() 方法切换 showPopup 状态,控制弹出层显示/隐藏。

hidePopup() 方法直接关闭弹出层。

selectOption(e) 方法处理选项选择:

  • 获取点击选项的值(data-value)
  • 更新 selectedOption
  • 关闭弹出层

searchChange(e) 方法处理搜索输入:

  • 将输入值更新到 content
  • 可在此处添加实际搜索逻辑

交互流程

  1. 点击下拉选择器区域触发 togglePopup,显示弹出层
  2. 点击弹出层选项触发 selectOption,更新选中项并关闭弹出层
  3. 点击弹出层外部触发 hidePopup,直接关闭弹出层
  4. 在输入框输入内容触发 searchChange,更新搜索内容

该组件实现了常见的下拉选择+搜索功能组合,适用于需要分类搜索的场景。

总结

到此这篇关于微信小程序开发前端实现下拉框选择的小弹出层的文章就介绍到这了,更多相关前端下拉框选择的小弹出层内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一篇文章详细讲解JavaScript中的this(普通函数、箭头函数、 函数运用)

    一篇文章详细讲解JavaScript中的this(普通函数、箭头函数、 函数运用)

    这篇文章主要介绍了JavaScript中this关键字的指向规则,包括全局环境、函数、对象方法、构造函数、事件处理函数和箭头函数中的this指向,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • javascript布局查看器效果代码

    javascript布局查看器效果代码

    用js直接区分网页布局代码,大家可以看下他的原理
    2008-10-10
  • javascript判断两个IP地址是否在同一个网段的实现思路

    javascript判断两个IP地址是否在同一个网段的实现思路

    要判断两个IP地址是否在同一个网段,将它们的IP地址分别与子网掩码做与运算,得到的结果为网络号,具体实现如下,需要的朋友可以参考下
    2013-12-12
  • JS+CSS实现的蓝色table选项卡效果

    JS+CSS实现的蓝色table选项卡效果

    这篇文章主要介绍了JS+CSS实现的蓝色table选项卡效果,通过鼠标事件调用自定义函数实现页面元素样式的遍历与动态切换效果,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • js前端面试之同步与异步问题详解

    js前端面试之同步与异步问题详解

    这篇文章主要给大家介绍了关于js前端面试之同步与异步问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用js具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 基于Bootstrap的网页设计实例

    基于Bootstrap的网页设计实例

    这篇文章主要介绍了基于Bootstrap的网页设计实例,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • js怎么终止程序return不行换jfslk

    js怎么终止程序return不行换jfslk

    alert(3)就这么段程序,没有写在function中,想啊想,怎么终止js呢?jfslk也能达到一样的效果(终止js程序)
    2013-05-05
  • 浏览器复制插件zeroclipboard使用指南

    浏览器复制插件zeroclipboard使用指南

    ZeroClipboard 是国外大神开发的一个用于剪贴板复制的 JS 插件,它是基于 Flash 来实现跨浏览器的复制功能的。当我们使用 ZeroClipboard 的时候,它会悄悄隐藏一个小小的 Flash 影片(swf),不会对我们的用户界面造成影响。我们只需要借助它实现复制功能就行了。
    2016-03-03
  • Bootstrap实现导航栏的2种方式

    Bootstrap实现导航栏的2种方式

    这篇文章主要为大家详细介绍了Bootstrap实现导航栏的2种方式,一是利用按钮组实现、二是Bootstrap专门做了相应的css类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • js 对象是否存在判断

    js 对象是否存在判断

    js 对象是否存在,然后进行下一步的操作。
    2009-07-07

最新评论