微信小程序展开全文

最近需要做一个展示部分文字然后展开全文的功能,要求如下:
  • 1、最多显示三行,文末使用省略号表示
  • 2、文字显示1行,2行及文字不满三行时不要显示展开全文按钮
解决方案:
最开始设置显示4行,查询节点获取文字高度,如果是小于4行的高度,不显示展开,如果不是,设置显示3行,然后显示展开全文按钮。
  • 1、为啥开始显示4行?
    我没找到判断文字刚好3行的方法。。。所以只能开始显示4行,这样如果需要显示展开全文,页面基本不会抖动。。。
  • 2、查询节点高度的方法WXML节点信息API
      var query = wx.createSelectorQuery()
      query.select(".class").boundingClientRect(data => {
         
      }).exec()

这个方法要在,页面渲染完成后调用

  • 3、如何判断高度小于4行
    试了好多次,发不同屏幕渲染出来的3行和4行高度是不一样的,把所有模拟器试了一遍,判断小于4行自己找个临界值还是可以做到的。把读取到的高度换算成rpx,自己找一个3行和4行高度的中间值。。。
var query = wx.createSelectorQuery()
      query.select(".des-short").boundingClientRect(data => {

        //获取屏幕宽度
        wx.getSystemInfo({
          success: res => {
            //console.log(res)

            //获取文字高度rpx
            let height = data.height * 750 / res.screenWidth

            //文字高度
            console.log(height)
          },
        })  
      }).exec()
  • 4、如何限制显示固定行数,直接上代码
 <view class='des1'>
    <text>{{text3}}</text>
 </view>

.des1 {
  margin-left: 50rpx;
  margin-top: 30rpx;
  width: 650rpx;
  font-size: 26rpx;
  color: #484848;

  display: -webkit-box;            /* 定义为自适应布局 */
  word-break: break-all;           /* 换行模式 */
  text-overflow: ellipsis;         /* 超出文字用省略号代替 */
  overflow: hidden;                /* 多出部分隐藏 */
  -webkit-box-orient: vertical;    /* 竖直方向的超出和隐藏 */
  -webkit-line-clamp: 3;           /* 设定行数为3 */ 
}
最终代码:
  • wmxl
<view class='container'>

  <!-- 例:少于三行 -->
  <view class='{{showTotal1 ? "des" : "des-short1 des-short"}}' style='-webkit-line-clamp: {{lineNum1}};'>
    <text>{{text1}}</text>
  </view>
  <view wx:if="{{showTotalBtn1}}" class='btn'>显示全部</view>

  <!-- 例:等于三行,但不超过三行 -->
  <view class='{{showTotal2 ? "des" : "des-short2 des-short"}}' style='-webkit-line-clamp: {{lineNum2}};'>
    <text>{{text2}}</text>
  </view>
  <view wx:if="{{showTotalBtn2}}" class='btn'>显示全部</view>

  <!-- 例:超过三行 -->
  <view class='{{showTotal3 ? "des" : "des-short3 des-short"}}' style='-webkit-line-clamp: {{lineNum3}};'>
    <text>{{text3}}</text>
  </view>
  <view wx:if="{{showTotalBtn3}}" class='btn' bindtap='showAll'>显示全部</view>
</view>
  • wxss
.des {
  margin-left: 50rpx;
  margin-top: 30rpx;
  width: 650rpx;
  font-size: 26rpx;
  color: #484848;
}

.des-short {
  margin-left: 50rpx;
  margin-top: 30rpx;
  width: 650rpx;
  font-size: 26rpx;
  color: #484848;

  display: -webkit-box;            /* 定义为自适应布局 */
  word-break: break-all;           /* 换行模式 */
  text-overflow: ellipsis;         /* 超出文字用省略号代替 */
  overflow: hidden;                /* 多出部分隐藏 */
  -webkit-box-orient: vertical;    /* 竖直方向的超出和隐藏 */
  -webkit-line-clamp: 4;           /* 设定行数为4 */ 
}

.btn {
  margin-top: 10rpx;
  margin-left: 50rpx;
  color: lightseagreen;
  font-size: 26rpx;
}
  • js
Page({
  data: {
    showTotal1: false,
    showTotal2: false,
    showTotal3: false,
  },
  onLoad: function() {

    wx.getSystemInfo({
      success: res => {
        console.log(res)
        //获取屏幕宽度
        this.data.screenWidth = res.screenWidth
      },
    })

    this.setData({
      text1: '我不是懒,我是享受不作为',
      text2: '微信小程序展开全文,解决方案,实现这个功能并不难,难的是开始没思路,。。。。。。怎么就凑不齐刚刚好两行半呢。。。',
      text3: `雅各布一个35岁的欧洲生产经理,每天为了解决各种问题从工厂的这一头跑到另一头,仅仅是为了保证生产能正常进行。雅各布清楚的知道如果想成为一名优秀的领导者,他必须为自己留有空余时间思考。为部门的战略布局所出谋划策,扩大业务。但每天的繁杂琐事让他无从顾忌。

那么雅各布应该如何增强企业内部各部门之间的合作呢?

如何预测这瞬息万变的市场呢?

那他的解决方法是什么呢?

也许像雅各布一样,你也正处于一个混乱期,有太多的事情要处理,而没有足够的时间去反思业务的变化情况以及去思考如何成为一名优秀的领导者。很多需要紧急处理的事情限制着你,让你没有办法去做那些更重要的事。但是在努力学会做好一个领导者的问题上,你面临着一个更大的挑战:那就是只有先行动起来,你才能知道关于自己,关于工作你需要做些什么,而不仅仅是思考。

作者:沐轻舟
链接:https://www.jianshu.com/p/6d51bade33b9
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。`,
    }, () => {
      let query1 = wx.createSelectorQuery()
      query1.select(".des-short1").boundingClientRect(data => {
        //获取屏幕宽度
        let height = data.height * 750 / this.data.screenWidth
        console.log(height)
        
        this.setData({
          lineNum1: 3,
          showTotalBtn1: height > 130 ? true : false 
        })
        
      }).exec()

      let query2 = wx.createSelectorQuery()
      query2.select(".des-short2").boundingClientRect(data => {
        //获取屏幕宽度
        let height = data.height * 750 / this.data.screenWidth
        console.log(height)

        this.setData({
          lineNum2: 3,
          showTotalBtn2: height > 130 ? true : false
        })
      }).exec()

      let query3 = wx.createSelectorQuery()
      query3.select(".des-short3").boundingClientRect(data => {
        //获取屏幕宽度
        let height = data.height * 750 / this.data.screenWidth
        console.log(height)

        this.setData({
          lineNum3: 3,
          showTotalBtn3: height > 130 ? true : false
        })
      }).exec()
    })
  },

  showAll: function() {
    this.setData({
      showTotal3: true,
      showTotalBtn3: false
    })
  },
})

设置130为临界值,是试了3行基本不超过120rpx,4行基本大于140rpx,取了个中间值

页面效果
未展开.png
已显示全部.png

没有做收起功能了,不过加上去很容易了。希望大家喜欢~~~

赏我一个赞吧~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容