1. 程式人生 > >微信小程式-下拉選單

微信小程式-下拉選單

轉載地址

目錄

一、效果圖

三、原始碼

一、效果圖

二、實現原理

跟網頁的下拉列表實現是一樣的,剛剛開始預設下拉的內容的是不顯示的(display:none),然後通過點選的時候,去更改 display 的屬性值,來實現下拉的效果。然後下拉的動畫的通過 css3 的 animation 來實現的。

CSS3中新增的新屬性 animation 是用來為元素實現動畫效果的,但是animation無法單獨擔當起實現動畫的效果。承載動畫的另一個屬性 —— @keyframes。使用的時候為了相容可加上-webkit-、-o-、-ms-、-moz-、-khtml-

等字首以適應不同的瀏覽器。

三、原始碼

實現比較簡單,程式碼帶有必要的解釋,所有就不贅述了。如果有什麼看不懂的,可以在評論區提問,博主每天都會回覆的。

index.wxml

  1. <!--page/one/index.wxml-->
  2. <view class="page">
  3. <view class="nav-son" bindtap="listpx">
  4. <view>我的下拉列表</view>
  5. <image src='{{imgUrl}}'></image>
  6. </view>
  7. <view
    class="temp {{pxopen ? 'slidown' : 'slidup'}} {{pxshow ? 'disappear':''}}">
  8. <view wx:for="{{content}}">
  9. {{item}}
  10. </view>
  11. </view>
  12. </view>
  13. <button>按鈕</button>

index.wxss

  1. /* 下拉列表的樣式 */
  2. .nav-son{
  3. position: relative;
  4. /* 讓下拉提示資訊永遠放於下拉內容的上面 */
  5. z-index
    : 99;
  6. border-top: 1px solid #d1d3d4;
  7. border-bottom: 1px solid #d1d3d4;
  8. background: #fff;
  9. display: flex;
  10. height: 40px;
  11. align-items:center;
  12. font-size: 18px;
  13. }
  14. /* 下拉列表 下三角的樣式 */
  15. .nav-son image{
  16. position: absolute;
  17. right: 30rpx;
  18. width: 50rpx;
  19. height: 50rpx;
  20. }
  21. /* 下拉框的樣式 */
  22. .temp{
  23. /* 預設為不顯示 */
  24. display:none;
  25. /* 下拉框的寬度, */
  26. width: 100%;
  27. /* 下拉框的最大高度 */
  28. max-height: 750rpx;
  29. overflow-y: scroll;
  30. padding: 0 0 0 20rpx;
  31. line-height:100rpx;
  32. background: #fff;
  33. }
  34. /* 下拉框內容的樣式 */
  35. .temp view{
  36. border-bottom: 1px solid #d1d3d4;
  37. font-size: 14px;
  38. color: #666;
  39. }
  40. /* 下拉動畫 */
  41. /* @keyframes Css3 新標籤,迴圈動畫 */
  42. @keyframes slidown{
  43. from{
  44. transform: translateY(-100%);
  45. }
  46. to{
  47. transform: translateY(0%);
  48. }
  49. }
  50. .slidown{
  51. display: block;
  52. animation: slidown .2s ease-in both;
  53. }
  54. /* 上拉動畫 */
  55. @keyframes slidup{
  56. from{
  57. transform: translateY(0%);
  58. }
  59. to{
  60. transform: translateY(-100%);
  61. }
  62. }
  63. .slidup{
  64. display: block;
  65. animation: slidup .2s ease-in both;
  66. height: 0px;
  67. }

index.js

  1. Page({
  2. data: {
  3. content: [],
  4. px: [],
  5. pxopen: false,
  6. pxshow: false,
  7. active:true,
  8. imgUrl: "../../images/down.png"
  9. },
  10. onLoad: function() {
  11. this.setData({
  12. px: ['>預設排序', '>離我最近']
  13. })
  14. },
  15. listpx: function(e) {
  16. console.log(e)
  17. if (this.data.pxopen) {
  18. this.setData({
  19. pxopen: false,
  20. pxshow: false,
  21. active: true,
  22. imgUrl: "../../images/down.png"
  23. })
  24. } else {
  25. this.setData({
  26. content: this.data.px,
  27. pxopen: true,
  28. pxshow: false,
  29. active:false,
  30. imgUrl: "../../images/up.png"
  31. })
  32. }
  33. console.log(e.target)
  34. }
  35. })

四、專案下載

同類文章推薦: