设置div中文字超出时自动换行和css实现文本超出N行之后显示省略号等

本文介绍了CSS布局中的多种实用技巧,包括强制换行、不换行及自动换行的方法,适用于div和table元素。同时,文章还讲解了如何实现文本内容的垂直居中、图片的居中显示以及文字溢出省略显示等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、对于div强制换行
1.(IE浏览器)white-space:normal; word-break:break-all;这里前者是遵循标准。
#wrap{white-space:normal; width:200px; }
或者
#wrap{word-break:break-all;width:200px;}

2.(Firefox浏览器)white-space:normal; word-break:break-all;overflow:hidden;

同样的FF下也没有很好的实现方法,只能隐藏或者加滚动条,当然不加滚动条效果更好!
#wrap{white-space:normal; width:200px; overflow:auto;}
或者
#wrap{word-break:break-all;width:200px; overflow:auto; }

二、对于table强制换行
1. (IE浏览器)使用样式table-layout:fixed;

2.(IE浏览器)使用样式table-layout:fixed与nowrap

3. (IE浏览器)在使用百分比固定td大小情况下使用样式table-layout:fixed与nowrap

4.(Firefox浏览器)在使用百分比固定td大小情况下使用样式table-layout:fixed与nowrap,并且使用div。

-----------------------------------------------------------------------------------------------------------------------------------

三、强制不换行:div{white-space:nowrap;}

四、自动换行:div{ word-wrap: break-word; word-break: normal;}

五、强制英文单词断行:div{word-break:break-all;}
css代码如下:

text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; //这儿的数字代表的就是你所需要实现效果的第N行
-webkit-box-orient: vertical;
1
2
3
4
5
6
1
2
3
4
5
6
效果如下图所示:

这里写图片描述

css小知识点集锦: 
1.子元素文字始终居中 
div{ width:300px; height:300px;border:1px solid red; } 
p{ height:300px; display:table-cell; verticle-align:middle; }

2.盒子水平、垂直居中 
2-1 :CSS3写法 
display: flex; 
justify-content: center; /* horizontal centering */ 
align-items: center; /* vertical centering */ 
2-2 :普通写法 //不支持IE6,IE7 
display: table-cell; 
vertical-align: middle;

3.给定宽度,内部文字,元素平均分布 
display: flex;//父盒子 
justify-content: space-around/space-between;//父盒子

4.文字显示第N行之后变成…显示 
text-overflow: -o-ellipsis-lastline; 
overflow: hidden; 
text-overflow: ellipsis; 
display: -webkit-box; 
-webkit-line-clamp: 2; //这儿的数字代表的就是你所需要实现效果的第N行 
-webkit-box-orient: vertical;

5.flex-grow 属性规定项目将相对于同一容器内其他灵活的项目进行扩展的量。 
父元素:display:flex; 
子元素:flex-flow: number|initial|inherit;

6.线性渐变 
-moz/o/ms/webkit-linear-gradient( [ || ,]? , [, ]* ) 
eg:background:-moz/o/ms/webkit-linear-gradient(top,#ccc,#000); 
线性渐变在ie下的应用: 
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#1471da, endColorstr=#1C85FB);/IE<9>/ 
-ms-filter: “progid:DXImageTransform.Microsoft.gradient (GradientType=0, startColorstr=#1471da, endColorstr=#1C85FB)”;/IE8+/

7.animation: ; 
animation-fill-mode 
none:如果你希望某个关键帧的属性值应用,首先你的关键帧应该处于激活。 
forwards:在你的动画完成之后,所有的属性都保留结束时的值。 
backwards:动画会应用开始关键帧设置的属性值,即使关键帧还没有激活。 
both:forwards和backwards的结合。 
注意:animation-play-state:running/paused属性不能简写,要另外单独写

8.现阶段兼容性很差:object-fit:fill/contain/cover/none/scale-down/ 
object-fit主要适合于替换元素,比如:、、、、、和等。其默认值为fill。object-fill取值的说明如下:

fill:此值为boject-fit的默认值,替换内容的大小被设置为填充元素的内容框,也就是说,元素的内容扩大到完全填充容器的外形尺寸,即使这打破其内在的宽高比。 
contain:替换元素内容大小保持长宽比例填充元素内容容器,其具体对象大小被解析为一个包含元素的宽度和高度。也就是说,如果你在替换元素上设置一个明确的高度和宽度,此值将导致内容大小,完全在固定的比例显示,但仍在元素尺寸内显示。 
cover:替换元素内容大小保持长宽比例填充元素内容容器,其具体对象大小被解析为覆盖整个元素的宽度和高度。也就是说,替换元素内容大小保持长宽比,但改变宽度和高度,以便完全覆盖内容元素。 
none:替换元素内容不调整大小以适应内部元素的容器,内容完全忽略设置在元素上的任何高度和权重,并且仍在元素尺寸内显示。 
scale-down:当内容大小设置了non或contain,将导致具体对象变得更小。

9.针对360浏览器下不能解决outline:none;但会出现虚线边框的情况 
解决:在html中增加属性:hidefocus=”true”即可

10.实现图片居中的兼容性又比较好的方法 
html:

<ul class="imgWrap clearfix">
    <li><span></span><img src="img/HBuilder.png" alt="" /></li>
</ul>
1
2
3
1
2
3
css:

<style type="text/css">
.imgWrap li{ 
height: 219px;
float: left;
border: solid 1px #666;
margin: 10px 10px 0 0;
list-style: none;
text-align: center;
font-size: 0;
}
.imgWrap span {
display: inline-block;/*将行内元素改变为行内块元素显示*/
width: 1px;/*实现IE下可读效果*/
height: 100%;/*使用元素高度和图片容器高度一样*/
vertical-align: middle;/*垂直对齐*/
}
.imgWrap img {
vertical-align: middle;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
11.父容器高度固定,文字可能一行,两行或更多行的垂直居中对齐(和图片居中差不多) 
html:

<div class="test"><span>这里存放的是文字</span></div>
1
1
css:

.test{
width: 300px;
height: 300px;
background: honeydew;
display: table-cell;
vertical-align: middle;
}
.test span{
display: inline-block;
vertical-align: middle;
}
1
2
3
4
5
6
7
8
9
10
11
1
2
3
4
5
6
7
8
9
10
11
12.css绘制三角形

width: 0;
height: 0;
border-bottom: 6px solid #ff3300;
border-left: 4px solid transparent;
border-right: 4px solid transparent;
1
2
3
4
5
1
2
3
4
5
13.牛逼的 will-change属性

will-change属性可以提前通知浏览器我们要对元素做什么动画,这样浏览器可以提前准备合适的优

化设置。这样可以避免对页面响应速度有重要影响的昂贵成本。元素可以更快的被改变,渲染的也

更快,这样页面可以快速更新,表现的更加流畅。

举个例子,当对于素使用 CSS 3D变形时,元素及其内容可以在合成到页面之前被创建到我们之前说

的layer。然而把元素放到layer中是个昂贵的操作,这将会导致变形动画延迟一个课件的瞬间,也

就是flicker

为了避免这种延时,我们可以在发生之前通知浏览器,这样浏览器会有一定的时间去准备这些变化

,当发生的时候layer已经准备好了,这样动画酒会很流畅,不会闪屏

使用will-change提示浏览器关于即将发生的变形十分简单,添加个CSS属性就行

will-change: transform; 
也可以告诉浏览器要改变元素的滚动条位置,或者多个要变化的属性,写下属性的名字就行,也可

以写多个,逗号隔开

will-change: transform, opacity; 
声明了元素即将进行的变化会让浏览器在渲染页面时做更好的决定,这明显比之前说的3D hacks要

好。

14.避免图中的长按弹出菜单与选中文本的行为、禁止选中文本 
a,img{ -webkit-touch-callout:none; } 
html,body{ -webkit-user-select:none;user-select:none; }

15.实现鼠标滑过出现块不被限定高度隐藏的方法

给最外层限定高度的div加上overflow:visible;

16.实现等比例图片不论始终居中问题;

html结构:

        <ul>
            <li>
                <a href="#">
                    <img src="img/car3.jpg" alt="car" />
                </a>
            </li>
        </ul>
1
2
3
4
5
6
7
1
2
3
4
5
6
7
css结构

        ul{
                width: 100%;
                height: 360px;

            }

            li{
                width: 615px;
                height: 360px;
                overflow: hidden;
                border: 1px solid #dbdbdb;
            }

            a{
                display: block;
                width: 615px;
                height: 760px;
                line-height: 760px;
                margin-top: -200px;

            }

            img{
                width: 100%;
                vertical-align: middle;
            }


<think>我们正在讨论CSS文本溢出显示省略号的问题。根据引用内容,特别是引用[1]引用[3]提供了关键信息。 关键点: 1. 设置固定宽度(width) 2. 强制文本在一显示(white-space: nowrap) 3. 隐藏溢出内容(overflow: hidden) 4. 使用省略号表示被修剪的文本(text-overflow: ellipsis) 引用[3]提供了一个完整的例子: ```css P { color: cornflowerblue; width:200px; height:100px; border:1px solid #349910; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } ``` 注意:在这个例子中,虽然设置了高度,但对于单文本,我们通常不需要设置高度(或者设置高即可),因为单文本溢出省略号通常与高配合使用,但高度不是必须的,因为单文本的高度可以由高决定。不过,如果容器高度大于高,省略号仍然会显示在底部。所以,为了确保单效果,我们可以不设置高度,或者设置一个合适的高度(比如等于高)。 另外,引用[1]中提到了另一种方法(.overflow-ellipsis.first)使用了direction: rtl,这是为了从右向左的文本,通常我们不需要,除非处理特定语言。 因此,标准的单文本溢出显示省略号CSS如下: ```css .ellipsis { width: 200px; /* 或者任意固定宽度,也可以使用max-width */ white-space: nowrap; /* 禁止换行 */ overflow: hidden; /* 隐藏溢出部分 */ text-overflow: ellipsis; /* 显示省略号 */ } ``` 注意:这个设置需要块级元素或者设置为块级显示(display: block; 或 display: inline-block;)。 如果元素是内联元素(如span),需要设置display为inline-block或block。 示例HTML: ```html <div class="ellipsis">这是一段很长很长的文本,当它超出宽度显示省略号</div> ``` 或者: ```html <span class="ellipsis" style="display: inline-block;">这是一段很长很长的文本,当它超出宽度显示省略号</span> ``` 引用[2]是关于多文本溢出显示省略号的方法(使用-webkit-line-clamp),但用户要求的是单,所以这里不展开。 引用[4]是关于文本阴影的,与当前问题无关。 因此,我们给出单文本溢出显示省略号的解决方案。 相关问题: 1. 如何实现文本溢出显示省略号? 2. 为什么设置了text-overflow:ellipsis却没有显示省略号? 3. 如何实现从左向右的文本溢出省略号(对于从右向左的文本)?</think>### CSS文本溢出显示省略号实现方法 要实现文本溢出显示省略号效果,需要使用以下CSS属性组合: ```css .ellipsis { width: 200px; /* 设置固定宽度 */ white-space: nowrap; /* 禁止文本换行 */ overflow: hidden; /* 隐藏溢出内容 */ text-overflow: ellipsis; /* 溢出部分显示省略号 */ } ``` #### 关键属性说明: 1. **`width`** 必须设置固定宽度(或max-width),否则无法判断溢出边界 2. **`white-space: nowrap`** 强制文本保持单显示[^1] 3. **`overflow: hidden`** 隐藏超出容器范围的内容 4. **`text-overflow: ellipsis`** 在文本溢出位置显示省略符号`...`[^3] #### 完整示例: ```html <!DOCTYPE html> <html> <head> <style> .overflow-ellipsis { width: 250px; border: 1px solid #ccc; padding: 8px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } </style> </head> <body> <div class="overflow-ellipsis"> 这是一段非常长的单文本内容,超出容器宽度的部分将显示省略号... </div> </body> </html> ``` #### 注意事项: - 仅适用于**块级元素**(如div/p),内元素需添加`display: block`或`display: inline-block` - 父容器不能有`padding`挤压内容空间(必要设置`box-sizing: border-box`) - 在表格单元格中使用需添加`table-layout: fixed`[^2] 实际效果: ![单文本溢出效果](https://via.placeholder.com/250x50/fff?text=这是一段非常长的单文本...)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值