父元素内两行子元素排布,超出隐藏,点击省略号按钮显示并现横向滚动条的实现方法

2025-01-09 12:45:27   小编

在网页设计中,父元素内两行子元素排布,并实现超出隐藏,点击省略号按钮显示并出现横向滚动条的效果,能够有效提升页面的美观度与用户体验。下面为大家详细介绍这一实现方法。

进行HTML结构搭建。创建一个父元素,在其中放置子元素内容,同时添加一个用于触发显示隐藏功能的省略号按钮元素。例如:

<div class="parent">
  <div class="content">
    <!-- 子元素内容 -->
  </div>
  <button class="ellipsis-btn">...</button>
</div>

接着,使用CSS来设置基本样式。将父元素设置固定宽度和高度,超出部分隐藏,即overflow: hidden。子元素内容根据需求设置合适的字体大小、行高等样式,并确保在两行显示时不溢出。对于省略号按钮,将其初始状态设置为隐藏,当满足一定条件时再显示。

.parent {
  width: 300px;
  height: 60px; /* 根据两行文本高度设定 */
  overflow: hidden;
  position: relative;
}
.content {
  font-size: 16px;
  line-height: 30px; /* 假设一行文本高度为30px */
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.ellipsis-btn {
  position: absolute;
  bottom: 0;
  right: 0;
  display: none;
}

然后,通过JavaScript实现交互功能。监听省略号按钮的点击事件,当按钮被点击时,修改父元素的overflow属性为auto,同时显示横向滚动条,并隐藏省略号按钮。

const ellipsisBtn = document.querySelector('.ellipsis-btn');
const parent = document.querySelector('.parent');

ellipsisBtn.addEventListener('click', function() {
  parent.style.overflow = 'auto';
  this.style.display = 'none';
});

最后,还需添加逻辑判断,当子元素内容实际不超过两行时,不显示省略号按钮。通过获取子元素内容的高度并与父元素高度对比来实现。

const content = document.querySelector('.content');
if (content.offsetHeight <= parent.offsetHeight) {
  ellipsisBtn.style.display = 'none';
} else {
  ellipsisBtn.style.display = 'block';
}

通过以上HTML、CSS和JavaScript的综合运用,就能完美实现父元素内两行子元素排布,超出隐藏,点击省略号按钮显示并现横向滚动条的功能,为网页增添更加精致的交互效果。

TAGS: 横向滚动条 父元素布局 超出隐藏 省略号按钮

欢迎使用万千站长工具!

Welcome to www.zzTool.com