Bootstrap卡片布局中图片自适应高度时文字溢出怎么办?
大家好,我在用Bootstrap卡片组件时遇到个问题。设置了卡片图片高度自适应,但文字内容多的时候会溢出到图片下方,像这样:
.card {
display: flex;
flex-direction: column;
height: 100%;
}
.card-img-top {
flex: 1;
object-fit: cover;
}
.card-body {
overflow: hidden; /* 这个没起作用 */
}
我尝试给.card-body加了overflow:hidden,但文字还是顶出来了一截。卡片外层用了flex布局,图片部分用了flex:1自适应高度,可能哪里冲突了?求大神指点具体改哪里的样式
一般来说这样处理:
给.card-body加上flex: 1 0 auto; 和display: flex; flex-direction: column;,这样文字区域会自动撑满剩余空间,同时配合overflow:hidden生效。
然后你还可以加个.card-body的子容器,比如
最终样式可以这样写:
.card {
display: flex;
flex-direction: column;
height: 100%;
}
.card-img-top {
flex: 1;
object-fit: cover;
}
.card-body {
flex: 1 0 auto;
display: flex;
flex-direction: column;
overflow: hidden;
}
.card-text {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
结构上记得这样套:
这样改完应该就不会溢出了,文字多的话会显示省略号。如果你想多行截断,可以用-webkit-line-clamp方案,不过那个稍微复杂点,一般单行就够用了。
.card-img-top上用了flex: 1,这会导致图片高度被拉伸,而.card-body里的内容溢出。解决方法很简单,把图片的高度控制改成固定比例或者最大高度,同时给
.card-body设置一个弹性布局:这样改完后,图片不会被无限制拉伸,文字内容也会乖乖待在
.card-body里。记得根据实际需求调整max-height的值。浏览器兼容基本没问题,但如果你需要支持特别老的浏览器,可能要再想想其他方案。