使用grid布局,子元素overflow: hidden;属性失效

当我们使用grid布局时,比如把三个div平均分成三份,如下图代码,此时子元素属性overflow: hidden;是生效的。

<div class="cont">
     <div class="deo">内容1内容1内容1内容1内容1内容1内容1内容1</div>
     <div class="deo">内容1</div>
     <div class="deo">内容1</div>
</div>

.cont{
   display: grid;
   grid-template-columns: repeat(3,1fr);
   height: 40px;
}

.deo{
   overflow: hidden;
}

但是,当父元素添加属性place-items: center/left等;或者justify-items: center/left等"时,此时的子元素overflow: hidden;便不生效了。解决办法如下图代码所示:

<div class="cont">
     <div class="deo">内容1内容1内容1内容1内容1内容1内容1内容1</div>
     <div class="deo">内容1</div>
     <div class="deo">内容1</div>
</div>

.cont{
   display: grid;
   grid-template-columns: repeat(3,1fr);
   height: 40px;
   place-items: center"//当父元素添加该属性时,
   //justify-items: center"//或者当父元素添加该属性时
}

.deo{
   overflow: hidden;
   max-width:100%;//给子元素添加一个最大宽度,或者一个具体的宽度即可解决overflow: hidden;不生效这个问题。
}



从你的描述来看,`text-overflow: ellipsis` 没有生效的问题可能是由于某些样式条件未满足导致的。以下是可能导致此问题的原因及解决方法: --- ### 原因分析 #### 1. 宽度不足或动态计算错误 你使用的 `width: calc(50vh)` 动态宽度可能存在解析问题,浏览器可能会将其视为无效值,因此容器无法正确设置宽度。 **解决方案:** 检查 `calc(50vh)` 是否能正常工作,并尝试替换为固定单位如 `px` 或 `%` 进行测试。例如: ```css width: 300px; /* 替换为明确数值 */ ``` #### 2. 白空间处理不当 为了启用 `text-overflow: ellipsis`,需要同时应用以下三个 CSS 属性组合才能起作用: - **white-space: nowrap;** 禁止文本换行。 - **overflow: hidden;** 隐藏溢出内容。 - **text-overflow: ellipsis;** 显示省略号。 如果其中任何一个属性缺失,则省略效果会失效。 **解决方案:** 确保所有必要规则都已正确定义,完整代码示例如下: ```html <div style="display: flex; align-items: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 300px;"> 较长的一段文字较长的一段文字较长的一段文字... </div> ``` #### 3. 内容区域过小 如果你的文字长度不足以填满指定的宽高范围,那么 `ellipsis` 将无意义地隐藏多余部分。比如你的 `height: 150px` 和其他布局限制可能压缩了实际可用空间。 **解决方案:** 增大测试字符串长度以验证是否能够触发出省略情况;或者调整高度、字体大小等参数使得更易达到边界状态。 #### 4. 样式冲突覆盖 项目中的全局CSS文件或其他组件内的样式声明可能发生意外重叠干扰到了当前目标元素的表现形式。 **解决方案:** 通过开发者工具审查具体渲染出来的最终样貌确认是否有额外附加规则影响到预期行为; 也可以加上更高优先级的选择器(注意避免过度泛滥!),像这样: ```scss <style scoped lang='scss'> .custom-class { display: block !important ; } </style> ``` 然后给对应块加类名引用该自定义样式设定。 --- ### 综合修改建议 将上述提到的所有关键点整合起来改进后的模板片段应该类似下面这样: ```vue <template> <div class="custom-text-wrapper"> {{ longText }} </div> </template> <script setup> const longText = "这是一个非常非常非常长长长长长长的句子用于演示省略效果..." </script> <style> .custom-text-wrapper{ max-width: 80%; // 可选最大比例约束 padding:.7em .9em ;//内边距改善视觉舒适感 word-break:normal;//防止强制断词破坏排版意图 font-family:sans-serif; color:#3d3c3a!important; background-color:whiteSmoke; display:inline-block; vertical-align:middle; line-height: normal;/*保持自然间距*/ letter-spacing:.5px; box-sizing:border-box; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } </style> ``` --- ###
03-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值