css:弹性布局导致单行超出省略失效

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-type" content="text/html;charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
    <title>弹性布局导致单行超出省略失效</title>
    <style>
    .text{
        display: flex;
    }
    .text-children{
        flex: 1;
        /*min-width: 0;*/
    }
    .text-grandson{
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    </style>
</head>
<body>
<div class="text">
    <div class="text-children">
        <div class="text-grandson">
            我是弹性布局孙级元素,我超出父级宽度的部分会被隐藏且显示省略号;
            如果没有实现效果是因为父级元素被我撑开,给父级元素加上min-width: 0;样式就可以,这样它自身宽度将是从0开始变大,而不会直接被我不换行直接撑开
        </div>
    </div>
</div>
</body>
</html>
复制代码

解决方案:只要在设置了flex: 1的那个元素加上min-width: 0;

### 如何使用CSS实现文本省略号的效果 在CSS中,`text-overflow: ellipsis;` 是一种常用的方式来实现文本超出容器时显示省略号的效果。为了正确地实现这一效果,需要结合多个CSS属性一起使用,包括 `width`、`overflow`、`white-space` 其他可能的布局属性。 以下是实现文本省略号效果的关键点代码示例: #### 关键点 1. **设置固定宽度**:必须为容器设置一个固定的宽度或最大宽度,否则无法触发溢出效果[^3]。 2. **隐藏溢出内容**:通过设置 `overflow: hidden;` 来隐藏超出容器的内容[^1]。 3. **启用省略号**:通过 `text-overflow: ellipsis;` 指定溢出部分用省略号表示[^1]。 4. **防止换行**:通过 `white-space: nowrap;` 禁止文本换行,确保文本在一行内显示[^1]。 5. **注意布局冲突**:某些布局属性(如 `display: flex;` 或 `float`)可能会导致省略失效,需确保这些属性不会干扰上述关键属性。 #### 示例代码 以下是一个完整的HTMLCSS代码示例,展示如何实现单行文本省略号效果: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Text Ellipsis Example</title> <style> .ellipsis-container { width: 300px; /* 设置固定宽度 */ overflow: hidden; /* 隐藏溢出内容 */ text-overflow: ellipsis; /* 启用省略号 */ white-space: nowrap; /* 禁止换行 */ border: 1px solid #ccc; /* 可选:添加边框以便观察效果 */ } </style> </head> <body> <div class="ellipsis-container"> 这是一段非常长的文本,用于演示如何使用CSS实现文本省略号的效果。 </div> </body> </html> ``` #### 多行文本省略号 如果需要实现多行文本的省略号效果,则需要额外的CSS属性支持。以下是一个多行省略号的实现示例: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Multi-line Text Ellipsis Example</title> <style> .multi-line-ellipsis { width: 300px; /* 设置固定宽度 */ height: 60px; /* 设置高度以限制行数 */ display: -webkit-box; /* 必须配合 -webkit-line-clamp 使用 */ -webkit-box-orient: vertical; /* 文本垂直排列 */ -webkit-line-clamp: 3; /* 限制显示的行数 */ overflow: hidden; /* 隐藏溢出内容 */ text-overflow: ellipsis; /* 启用省略号 */ border: 1px solid #ccc; /* 可选:添加边框以便观察效果 */ } </style> </head> <body> <div class="multi-line-ellipsis"> 这是一段非常长的文本,用于演示如何使用CSS实现多行文本省略号的效果。这是一段非常长的文本,用于演示如何使用CSS实现多行文本省略号的效果。 </div> </body> </html> ``` #### 注意事项 1. 单行省略号效果适用于简单场景,而多行省略号需要使用 `-webkit-line-clamp` 属性,该属性目前仅在WebKit浏览器中完全支持[^4]。 2. 如果遇到省略不生效的问题,请检查是否遗漏了 `width`、`overflow` 或 `white-space` 属性[^2]。 3. 在复杂布局中(如Flexbox或Grid),需特别注意布局属性是否会干扰省略号效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值