微信小程序仿淘宝热搜词在搜索框中轮播功能


Posted in Javascript onJanuary 21, 2020

摘要

逛淘宝的时候,发现淘宝搜索框中一直在垂直方向上轮播热搜提示词,觉得这是个不错的设计,除了能让空间更充分使用,也能让页面更有动感,最重要的是能够增加搜索框的使用频率。就在小程序中试着实现实现。

效果

微信小程序仿淘宝热搜词在搜索框中轮播功能

体验

微信小程序仿淘宝热搜词在搜索框中轮播功能

实现思路

思路比较简单,主要是两点,

1:input处于热搜提示词上层,用z-index实现
2:热搜词轮播用swiper实现,方向为vertical
3:在input聚焦时获取swiper当前值,设置为placeholder
4:将swiper隐藏

代码

已封装成组件

组件代码:

wxss

<view class="swiper-view">
 <swiper class="swiper_container" vertical="true" autoplay="true" circular="true" interval="2000">
  <block wx:for="{{msgList}}">
   <swiper-item>
    <view class="swiper_item">{{item.title}}</view>
   </swiper-item>
  </block>
 </swiper>
</view>

wxss

.container {
 width: 100%;
 height: 80rpx;
 display: flex;
 flex-direction: row;
 justify-content: center;
 align-items: center;
 background: #ededed;
}

.search-container {
 width: 690rpx;
 height: 60rpx;
 display: flex;
 flex-direction: row;
 justify-content: flex-start;
 align-items: center;
 background: #fff;
 border-radius: 5rpx;
}

.swiper_container {
 margin-left: 15rpx;
 height: 60rpx;
 width: 100%;
 display: flex;
 flex-direction: row;
 justify-content: flex-start;
 align-items: center;
 position:absolute;
 z-index:1;
}

.swiper_item {
 height: 60rpx;
 font-size: 26rpx;
 color: #999;
 overflow: hidden;
 text-overflow: ellipsis;
 white-space: nowrap;
 display: flex;
 flex-direction: row;
 justify-content: flex-start;
 align-items: center;
}

js

Component({
 /**
  * 组件的属性列表
  */
 properties: {
  msgList:{
   type:JSON,
   value: []
  }
 },

 /**
  * 组件的初始数据
  */
 data: {
  placeholder:'',
  currentIndex:0,
  index:0,
  isFocus:false,
  msgList: [],
  content:'',
  confirmContent:''
 },

 ready(){
  this.setData({
   msgList:this.properties.msgList
  })
 },
 /**
  * 组件的方法列表
  */
 methods: {
  changeIndex(e){
   this.setData({
    index:e.detail.current
   })
  },
  focusInput(){
   this.setData({
    isFocus:true,
    placeholder:this.data.msgList[this.data.index].title
   })
  },
  blurInput(){
   if (this.data.content == ""){
    this.setData({
     isFocus: false,
     currentIndex: this.data.index,
     placeholder: ''
    })
   }
  },
  confirm(e){
   var confirmContent = ''
   if(e.detail.value==''){
    confirmContent = this.data.placeholder
   }else{
    confirmContent = e.detail.value
   }

   this.triggerEvent('search', {confirmContent})
  },
  inputContent(e){
   this.setData({
    content: e.detail.value
   })
  }
 }
})

json

{
 "component": true,
 "usingComponents": {}
}

页面代码

js

Page({
 data: {
  msgList: [
   { title: "朋友圈" },
   { title: "文章" },
   { title: "公共号" },
   { title: "小程序" },
   { title: "音乐" },
   { title: "表情" },
   { title: "订阅号" }]
 },
 search(e){
  wx.showToast({
   icon:"none",
   title: "正在搜索"+e.detail.confirmContent,
  })
 }
})

wxss

<swiperSearch msgList="{{msgList}}" bind:search="search"></swiperSearch>

总结

以上所述是小编给大家介绍的微信小程序仿淘宝热搜词在搜索框中轮播功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
更正确的asp冒泡排序
May 24 Javascript
javascript 日期时间函数(经典+完善+实用)
May 27 Javascript
基于JQuery框架的AJAX实例代码
Nov 03 Javascript
js使用setTimeout实现定时炸弹的方法
Apr 10 Javascript
使用requestAnimationFrame实现js动画性能好
Aug 06 Javascript
原生js实现可爱糖果数字时间特效
Dec 30 Javascript
JS实现标签页切换效果
May 04 Javascript
react-native 圆弧拖动进度条实现的示例代码
Apr 12 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
Jun 11 Javascript
Vue 实现前端权限控制的示例代码
Jul 09 Javascript
VUE写一个简单的表格实例
Aug 06 Javascript
Layui表格监听行单双击事件讲解
Nov 14 Javascript
微信小程序swiper实现文字纵向轮播提示效果
Jan 21 #Javascript
jquery将信息遍历到界面上实例代码
Jan 21 #jQuery
微信浏览器下拉黑边解决方案 wScroollFix
Jan 21 #Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 #Javascript
微信小程序图片自适应实现解析
Jan 21 #Javascript
微信小程序button标签open-type属性原理解析
Jan 21 #Javascript
Vue实现兄弟组件间的联动效果
Jan 21 #Javascript
You might like
PHP 观察者模式的实现代码
2013/05/10 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
php微信公众号开发(2)百度BAE搭建和数据库使用
2016/12/15 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
2014/07/18 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
nuxt 每个页面head标签内容设置方式
2020/11/05 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
[46:16]2018DOTA2亚洲邀请赛3月30日 小组赛B组 iG VS VP
2018/03/31 DOTA
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
python中实现将多个print输出合成一个数组
2018/04/19 Python
Python单元和文档测试实例详解
2019/04/11 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
Python如何实现定时器功能
2020/05/28 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
挂靠协议书范本
2014/04/22 职场文书
道德之星事迹材料
2014/05/03 职场文书
安全生产月宣传标语
2014/10/06 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android