页面多行时最后会有一个展开按钮和省略号共存

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>多行省略 尾随按钮</title>
  <style type="text/css">
    * {
      margin: 0;
      padding:  0;
    }
    .wrap {
      display: flex;
    }
    .text {
      display: -webkit-box;
      -webkit-line-clamp: 3;
      -webkit-box-orient: vertical;
      overflow: hidden;
      word-break: break-all;
      padding: 0 10px;
    }
    .text::before {
      float: right;
      content: '';
      background-color: red;
      /* 减去尾随按钮高度  */
      height: calc(100% - 21px); 
    }
    .more {
      float: right;
      clear: both;
      line-height: 17px;
      height: 21px;
    }
  </style>
</head>
<body>
	<div id="app">
    <div class="wrap">
      <div class="text">
        <button class="more">更多</button>
        你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜你猜
      </div>
    </div>
  </div>
</body>
</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,你的问题是如何实现多行溢出省略号并添查看更多按钮最后一行最后面。这个问题可以通过 CSS 的 text-overflow 属性和 JavaScript 来实现。 首先,我们可以使用 text-overflow 属性来实现文本溢出省略号的效果。该属性有三个值: - clip:剪裁文本,不显示省略号。 - ellipsis:在文本末尾显示省略号。 - string:在文本末尾显示指定的字符串。 我们可以将 text-overflow 属性设置为 ellipsis,这样当文本溢出显示省略号。 接下来,我们需要使用 JavaScript 来判断文本是否溢出,并在最后一行最后面添查看更多按钮。这可以通过以下步骤来实现: 1. 获取文本元素和容器元素的高度和宽度。 2. 将文本元素的高度设置为 auto,这样它就可以根据内容自动调整高度。 3. 获取文本元素的实际高度。 4. 如果文本元素的实际高度大于容器元素的高度,则说明文本已经溢出了。 5. 获取最后一行文本的高度和宽度。 6. 创建一个按钮元素,并将其添到容器元素中。 7. 将按钮元素定位在最后一行文本的下方,并将其文本设置为“查看更多”或者其他你想要的文本。 8. 添一个点击事件监听器,当用户点击按钮,显示完整的文本。 下面是一个简单的实现示例: HTML 代码: ``` <div class="container"> <p class="text">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed cursus massa eget diam suscipit, vel finibus neque gravida. Nulla facilisi. Aenean euismod purus eget libero scelerisque, vel volutpat velit lobortis. Sed sodales diam non justo bibendum, id dignissim augue lacinia. Sed vel nibh vitae ligula bibendum faucibus. Donec laoreet, nulla eu vehicula posuere, enim erat dignissim erat, in hendrerit nulla turpis vel velit. Sed quis enim vel velit suscipit tempor. Sed nec blandit quam. Sed eget nibh vel magna feugiat aliquet. Sed convallis, mauris sed lobortis posuere, felis enim tincidunt nibh, eget malesuada tellus nunc vitae purus. Ut id malesuada massa. Sed eget velit ut libero elementum lobortis.</p> </div> ``` CSS 代码: ``` .container { width: 200px; height: 100px; overflow: hidden; } .text { height: auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } ``` JavaScript 代码: ``` const container = document.querySelector('.container'); const text = document.querySelector('.text'); text.style.height = 'auto'; if (text.offsetHeight > container.offsetHeight) { const lineHeight = parseFloat(getComputedStyle(text).lineHeight); const lastLineHeight = text.offsetHeight % lineHeight; const lastLineWidth = text.offsetWidth - (text.offsetWidth / text.clientHeight) * lastLineHeight; const button = document.createElement('button'); button.innerText = '查看更多'; button.style.position = 'absolute'; button.style.bottom = '0'; button.style.right = `${lastLineWidth}px`; button.addEventListener('click', () => { text.style.height = 'auto'; button.style.display = 'none'; }); container.appendChild(button); } ``` 在这个示例中,我们首先获取了容器元素和文本元素,然后将文本元素的高度设置为 auto,以便它可以自动调整高度。接下来,我们使用 text.offsetHeight 和 container.offsetHeight 来比较文本元素和容器元素的高度,如果文本元素的实际高度大于容器元素的高度,则说明文本已经溢出了。 然后,我们获取了最后一行文本的高度和宽度,并创建了一个按钮元素,将其添到容器元素中,并将其定位在最后一行文本的下方。最后,我们添一个点击事件监听器,当用户点击按钮,显示完整的文本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值