小程序文本展开与收起

文章描述:

微信小程序点击了解更多展开文本,再次点击收起的时候隐藏多余的文本文字。

展开效果

收起效果

wxml


<view class="container">
  <div class="content" wx:if="{{item.description}}">
    <view class="{{expend?'overflow4 textarea':'textarea'}}" id="desc">{{item.description}}</view>

      <view class="expend " bindtap="expend" wx:if="{{colNum>4}}">
        <view class="more"  wx:if="{{expend}}">    
          <view class="more-title" >了解更多</view>
          <image src="/images/link.png" class="link"></image>
        </view>
        <view  class="more" wx:else>
          <view class="more-title">收起</view>
          <image src="/images/link.png" class="link" style="transform: rotate(270deg)"></image>
        </view>
      </view>
  </div>
</view>

 

wxss

.container{
  padding: 20rpx 10rpx;
  box-sizing: border-box;
  background: #f7f7f7;
}
.content{ width:100%; padding:20rpx 30rpx;background:#fff;box-sizing: border-box;}
.textarea{ font-size: 28rpx; color:#666;letter-spacing: 1rpx; line-height: 1.6; }
.more{ background: #ddc7a6; position: relative; width: 170rpx; padding-top: 15rpx; padding-bottom: 15rpx; padding-left: 15rpx; margin-top: 30rpx; margin-bottom: 30rpx; z-index: 4;}
.more-title{ font-size: 24rpx; color: #59534b; padding-left: 4rpx;}
.link{width: 39rpx; height: 36rpx; position: absolute; top: 13rpx; right: 20rpx;}

.overflow4{
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden ;
  -webkit-line-clamp: 4;
  text-overflow: ellipsis;
}

js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    item:{
      description:"从前有座山,山上有座庙,面里面有一个老和尚给小和尚将故事,那个老和尚说:从前有做山,山上有座庙,庙里面有个老和尚给小和尚讲故事,那个老和尚说:从前有座山,山上有座庙庙里面有个老和尚给小和尚讲故事,那个老和尚说:从前有座山,山上有座庙,庙里面有个老和尚给小和尚讲故事。"
     },
    expend:false,
    colNum:0,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.getLine()
  },
  getLine(){
    let query = wx.createSelectorQuery();//查询节点信息的对象
    query.select('#desc').boundingClientRect();//添加节点的布局位置的查询请求
    query.exec( (res)=> {//执行所有的请求。请求结果按请求次序构成数组,在callback的第一个参数中返回
      if(res[0]){
        let height = res[0].height;
        let colNum = height/16;      //16px为css里设置的view的line-height
        console.log(height);
        this.setData({
          colNum:colNum,
        })
        if(colNum>4)
          this.setData({
            expend: true,
          })
      }

    })
  },
  expend(){
    this.setData({
      expend:!this.data.expend
    })
  }

})

 

发布时间:2021/06/16

发表评论