• 微信小程序—动态下拉窗口


    效果图如下:

    方法:

    1.通过改变文字的显示方式(换行or不换行,即white-space的属性值)来实现动态改变文字框宽窄的目的。

    在wxml中,通过判断一个js数据的真假来选择文字的class:

    <text class="{{show ? 'textStyle1' : 'textStyle2'}}" catchtap='onClickBasic'>{{item.text}}</text>

    show的值在js中决定:

    Page({
        data:{
            show:false,      
        },
        onClickBasic: function(){
            var that = this
            var temBasic = that.data.show
            this.setData({
                show:!temBasic
            })
        }
    })

    wxss中文字css为:

    .textStyle1{
      display: block;
      line-height: 48rpx;
      font-size: 25rpx;
      font-family: MicrosoftYaHei;
      padding: 10rpx;
      text-indent: 10px;
      text-align: left;
      overflow: hidden;
    }
    .textStyle2{
      display: block;
      line-height: 48rpx;
      font-size: 25rpx;
      font-family: MicrosoftYaHei;
      padding: 10rpx;
      text-indent: 10px;
      text-align: left;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    2.箭头的旋转

    wxml中同样通过show的值来决定箭头的朝向:

    <image class='select_img {{show&&"select_img_rotate"}}' src="/images/down.png"></image>

    wxss中箭头及其旋转的css如下:

    .select_img{
      width: 30rpx;
      height: 20rpx;
      display: block;
      transition:transform 0.1s;
    }
    
    .select_img_rotate{
      transform:rotate(180deg); 
    }

    !!注意:当使用template模板时,要同时将show的值传到模板界面,即传递多个参数。使用逗号将多个参数分隔开进行传递。(若未传递show的值,会导致下拉失效):

    <!--wxml-->
    <template is="xxx" data="{{...item,show}}"/>

    其中,xxx表示template的wxml的名字。

    源代码:

    Ps:显示的文字由后端获取,该处使用其他文本替代。

     wxml:

    1 <view class='select_box'>
    2   <view>
    3      <text class="{{show ? 'textStyle1' : 'textStyle2' }}" catchtap='onClickBasic'>新垣结衣是我老婆,石原里美也是我老婆,桥本环奈同样是我老婆。</text>
    4   </view>
    5   <view class='select' catchtap='onClickBasic'>
    6      <image class='select_img {{show&&"select_img_rotate"}}' src="/images/down.png"></image>      
    7   </view>
    8 </view>

    js:

     1 Page({
     2     data:{
     3         show:false,      
     4     },
     5     onClickBasic: function(){
     6         var that = this
     7         var temBasic = that.data.show
     8         this.setData({
     9             show:!temBasic
    10         })
    11     }
    12 })

    wxss:

     1 .select_box{
     2   background: #fff;
     3   display: -webkit-box;
     4   word-break: break-all;
     5   overflow: hidden;
     6   -webkit-box-orient: vertical;
     7   position: relative;
     8   padding-left: 5px;
     9   padding-right: 5px;
    10 }
    11 
    12 .textStyle1{
    13   display: block;
    14   line-height: 48rpx;
    15   font-size: 25rpx;
    16   font-family: MicrosoftYaHei;
    17   padding: 10rpx;
    18   text-indent: 10px;
    19   text-align: left;
    20   overflow: hidden;
    21 }
    22 .textStyle2{
    23   display: block;
    24   line-height: 48rpx;
    25   font-size: 25rpx;
    26   font-family: MicrosoftYaHei;
    27   padding: 10rpx;
    28   text-indent: 10px;
    29   text-align: left;
    30   overflow: hidden;
    31   text-overflow: ellipsis;
    32   white-space: nowrap;
    33 }
    34 
    35 .select{
    36   width: 100%;
    37   height: 30rpx;
    38   display: flex;
    39   justify-content: center;
    40 }
    41 
    42 .select_img{
    43   width: 30rpx;
    44   height: 20rpx;
    45   display: block;
    46   transition:transform 0.1s;
    47 }
    48 
    49 .select_img_rotate{
    50   transform:rotate(180deg); 
    51 }

     

  • 相关阅读:
    人月神话阅读笔记01
    个人每日总结14
    个人每日总结13
    个人每日总结12
    个人每日总结11
    个人每日总结10
    个人每日总结9
    第五周学习进度表
    梦断代码阅读笔记
    05构建之法阅读笔记之五
  • 原文地址:https://www.cnblogs.com/cff2121/p/9771358.html
Copyright © 2020-2023  润新知