HTML文本溢出处理

有时在做某些需求布局时,需要处理文本溢出时的情况,如果不处理可能会重新重叠的效果,关于设置文本溢出,主要就是多行/单行的处理,代码如下

1.处理单行文本溢出

        /* 设置文本溢出时的处理模式 */
        text-overflow:ellipsis;
        overflow: hidden;
        white-space: nowrap;

2.处理多行文本溢出

        display: -webkit-box;
        -webkit-box-orient: vertical;
        /* 设置显示的文本行数 */
        -webkit-line-clamp: 2;
        overflow: hidden;

  • 第一条是针对单行文本溢出是否处理之后的对比
  • 第二条是针对多行文本溢出时,需要显示几行文本处理之后的对比

    完整的HTML代码如下:

        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文本溢出处理</title>
    <style>
        .container {
            border: 1px solid #ff8499;
            padding: 10px;
            width: 500px;
            min-height: 400px;
			margin: auto;
        }

        .container p {
            color: #01a1ff;
        }
        .container .oneRowP {
			/* 设置文本溢出时的处理模式 */
            text-overflow:ellipsis;
            overflow: hidden;
            white-space: nowrap;
        }
		
		.container .twoRowsP {
			display: -webkit-box;
			-webkit-box-orient: vertical;
			/* 设置显示的文本行数 */
			-webkit-line-clamp: 2;
			overflow: hidden;
			
		}
		
		h3 {
			text-align: center;
			margin: 10px;
		}

    </style>
</head>
<body>
    <div class="container">
		<h3>单行文本是否溢出处理</h3>
        <p class="noLimitRowsP">
            我不知道你在想什么还是那个地点那条街哦;我不知道你在想什么还是那个地点那条街哦;
            我不知道你在想什么还是那个地点那条街哦;我不知道你在想什么还是那个地点那条街哦;
        </p>
        <p class="oneRowP">
            我不知道你在想什么还是那个地点那条街哦;我不知道你在想什么还是那个地点那条街哦;
            我不知道你在想什么还是那个地点那条街哦;我不知道你在想什么还是那个地点那条街哦;
        </p>
		
		<h3>多行文本是否溢出处理</h3>
		<p class="noLimitRowsP">
		    我不知道你在想什么还是那个地点那条街哦;我不知道你在想什么还是那个地点那条街哦;
		    我不知道你在想什么还是那个地点那条街哦;我不知道你在想什么还是那个地点那条街哦;
		</p>
		<p class="twoRowsP">
		    我只能显示出来两行你信不信我不知道你在想什么还是那个地点那条街哦;我不知道你在想什么还是那个地点那条街哦;
		    我不知道你在想什么还是那个地点那条街哦;我不知道你在想什么还是那个地点那条街哦;
		</p>
    </div>
</body>
</html>

### HTML 文本溢出解决方案 #### 单行文本溢出 对于单行文本溢出问题,可以通过 CSS 样式轻松解决。设置 `overflow: hidden` 来隐藏超出部分的内容,使用 `white-space: nowrap` 防止文本换行,并通过 `text-overflow: ellipsis` 将溢出的部分替换为省略号[^1]。 以下是具体的代码示例: ```html <style> .cell { overflow: hidden; /* 超出部分隐藏 */ white-space: nowrap; /* 禁止文本换行 */ text-overflow: ellipsis; /* 溢出部分显示省略号 */ width: 300px; background: #fff; border: 1px solid red; } </style> <div class="cell">白日依山尽,黄河入海流。欲穷千里目,更上一层楼。</div> ``` #### 多行文本溢出 针对多行文本溢出情况,可以采用 JavaScript 或者纯 CSS 的方式来实现。一种常见的方法是利用 `-webkit-line-clamp` 属性配合伪类选择器 `::after` 实现多行文本截断并附加省略号的效果[^2]。 下面是基于 JavaScript 的动态调整方案: ```javascript $('.fig').each(function (i) { var divH = $(this).height(); var $p = $('p', $(this)).eq(0); while ($p.outerHeight() > divH) { $p.text($p.text().replace(/(\s)*([a-zA-Z0-9]|\W)(\.\.\.)?$/, "...")); } }); ``` 另一种更为优雅的方式是借助自定义函数计算容器的高度和字体大小之间的关系,从而动态设定 `-webkit-line-clamp` 值[^2]。 ```javascript var Overflow = (function () { function _text(ele) { this.ele = ele; } _text.prototype = { deal: function () { var height = parseInt(this.ele.css('height')); var lineHeight = this.ele.css('line-height'); var fontSize = this.ele.css('font-size'); var num = Math.floor(height / (parseInt(fontSize) + (parseInt(lineHeight) - parseInt(fontSize)))); this.ele.css('-webkit-line-clamp', num.toString()); } }; return _text; })(); new Overflow($('#pp')).deal(); ``` 需要注意的是,在某些特殊场景下(例如通过 `v-html` 动态插入带有标签的文本),可能会遇到因字符截取而导致的样式异常问题。此时应考虑优化算法逻辑或者重新设计数据结构以规避此类风险[^3]。 #### 特殊案例——表格单元格中的文本溢出处理 Excel 文件导出时发生的内存溢出问题,则需注意对大数据量的有效管理以及合理配置 PHP 设置参数等措施。如果目标仅限于防止特定列内的数值型字段被自动格式化成科学计数法形式,则可以在 TD 元素内部指定样式属性 `"vnd.ms-excel.numberformat:@"` 进行强制覆盖[^4]。 ```php echo "<td style='vnd.ms-excel.numberformat:@'>{$orderSn}</td>"; ``` --- ### 相关问题
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值