CSS 实现元素较宽不能被完全展示时将其隐藏的方法

互联网   12-29 09:41:45   作者:佚名   我要评论

最近做项目遇到这样的需求,需要实现的样式是固定宽度的容器里一排显示若干个标签,数量不定,每个标签的长度也不定。下面小编给大家带来了CSS 实现元素较宽不能被完全展示时将其隐藏的方法,需要的朋友参考下吧

遇到一个需求,需要实现的样式是固定宽度的容器里一排显示若干个标签,数量不定,每个标签的长度也不定。当到了某个标签不能被完全展示下时则不显示。大致效果如下,标签只显示一排,多了放不下了就不显示了。
 

标签部分 DOM 结构如下 

<div class="labels">  
    <span class="label">Cooking</span>
    <span class="label">Coding</span>
    <span class="label">Travel</span>
    <span class="label">Photography</span>
    <span class="label">Reading</span>
</div>

乍一看这个问题很简单嘛,本着样式问题尽量不用 js 解决的原则,写了下面这堆样式,完美实现效果。可以看出来最后两个 .label 由于会超出 .labels 的宽度,被折到了下一行,然后又被 .labels 的 overflow: hidden 隐藏。

.label {
    display: block;
    height: 24px;
    line-height: 24px;
    padding: 0 10px;
    background-color: #e1ecf4;
    border-radius: 12px;
    font-size: 14px;
    flex-shrink: 0; // label 不收缩,长度为内容长度

    & + .label {
        margin-left: 5px;
    }
}

.labels {
    height: 24px; // 一行 label 的高度
    overflow: hidden;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
}

但是刚高兴没多久,突然发现了问题,如果第一个标签的长度就超出了容器的宽度的话,并不会被整个隐藏,只是内容被截断了,像下面这样
 

 

这个问题困扰了我好一阵时间,一直在想 css 里有什么属性可以在子元素宽度超过父容器时把它整个隐藏(而非仅仅隐藏超出父容器的部分)。各种思索都没有结果正准备放弃万分纠结到底用不用 js 实现时, 突然冒出来一个想法 既然现在被折行的元素可以被隐藏掉,那让第一个标签也折行不就行了嘛 。

那么怎么让第一个标签折行呢,想到一个比较 trick 的方法,让它不再是第一个元素就可以利用 flex 的特性把它折行了~ 于是,在所有 .label 元素之前,添加了一个 .placeholder 元素只有 1px 宽,高度为 100%。 Inspect 元素的话可以看到确实 .placeholder 元素占据了第一行的位置,实现了我们想要的效果~

 

其实利用这个想法,使用 float 也可以实现同样的效果。虽然有点 trick 并且还是借助了一个额外的 DOM 元素,不过效果还是完美实现了的~ 附上 codepen 链接供参考 https://codepen.io/Simona_Deng/pen/dJvvBR

总结

以上所述是小编给大家介绍的CSS 实现元素较宽不能被完全展示时将其隐藏,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 用CSS实现Tab页切换效果的示例代码

    这篇文章主要介绍了用CSS实现Tab页切换效果的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-19
  • CSS、SVG和canvas分别实现文本文字纹理叠加效果

    这篇文章要实现文字本身的颜色和纹理进行叠加,而非直接填充纹理,接下来通过实例代码给大家介绍CSS、SVG和canvas分别实现文本文字纹理叠加效果,感兴趣的朋友一起看看吧
    2018-03-15
  • css -webkit-line-clamp WebKit的CSS扩展(WebKit是私有属性)

    -webkit-line-clamp 是一个 不规范的属性(unsupported WebKit property),它没有出现在 CSS 规范草案中,不过我们经常在文本溢出中使用这个参数
    2018-03-14
  • CSS布局方案小结

    这篇文章主要介绍了CSS布局方案小结,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2018-03-13
  • CSS清除浮动float的三种方法小结

    使元素脱离文档流,按照指定方向发生移动,遇到父级边界或者相邻的浮动元素停了下来。本文给大家带来了CSS清除浮动float的三种方法小结,感兴趣的朋友跟随脚本之家小编一起
    2018-03-13
  • 正确理解CSS中的margin合并的用法

    这篇文章主要介绍了正确理解CSS中的margin合并的用法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-13
  • 纯css实现背景图片半透明内容不透明的方法

    这篇文章主要介绍了纯css实现背景图片半透明内容不透明的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-12
  • CSS 记录用户密码的方法

    这篇文章主要介绍了CSS 记录用户密码的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-08
  • css重绘与重排的方法

    这篇文章主要介绍了css重绘与重排的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-08
  • 纯 CSS 实现多行文字截断功能

    最近在做响应式系统设计的时候遇到需要对标题进行多行文字截取的效果,下面小编把实现代码及效果图分享到脚本之家平台,需要的朋友参考下吧
    2018-03-08

最新评论