css 多行文本换行,如果里面有标签怎么办?

<div>
    <p>这里是一行</p>
    <p>这里是一行这里是一行这里是一行</p>
    <p>这里是一行这里是一行这里是一行</p>
</div>

// css
div {
    width: 50px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
p {
  margin: 0;
}

出来的效果是这样,但我希望在div的第三行截取,无论里面有没有段落都截取掉,而不是p标签的第三行截取。

clipboard.png

我需要的效果是这样,如何做呢?谢谢~

clipboard.png

阅读 4.2k
3 个回答
新手上路,请多包涵

用css选择器选择最后一行,然后对最后一行做超出就做省略号

那就别用<p>标签了,换成 <span>或者设置:

p {
  margin: 0;
  display:inline;
}

解决了,解决思路是:
首先,将块元素全部换为inline
随后在每一个标签上加::after {content: 'A'; white-space: pre;}
就可以不用段落的形式,但是展示出来却像段落一样!!

<div>
    <span>这里是一行</span>
    <span>这里是一行这里是一行这里是一行</span>
    <span>这里是一行这里是一行这里是一行</span>
</div>

// css
div {
    width: 50px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}
span::after {
    content: '\A';
    white-space: pre;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题