溢出:盒模型装不下内容的时候,超出盒子大小的内容就称之为内容溢出,这里的内容又分为盒模型和文本,所以 CSS 在处理溢出时候也分为文本和盒模型两种情况。

正常情况内容溢出应该换行自动撑开盒子大小,但某些情况下我们盒子大小可能是固定的,不允许自动撑开盒子大小,这种情况就需要处理溢出情况。

盒子溢出

盒子溢出一般就三种方式:

1、溢出内容直接隐藏。

2、溢出显示滚动条。

3、默认情况,溢出内容显示。

在处理盒子溢出时,必须要祭出 overflow 属性。

overflow 属性值

1、visible:默认值,内容超出盒子大小,会显示在盒子外面。

2、hidden:内容超出盒子大小,会直接消失不见。

3、scroll:不管内容是否超出盒子大小,都显示滚动条(注意看下图中3的横向滚动条)。

4、auto:内容超出盒子大小时才显示滚动条,内容没超出盒子大小时,不显示滚动条。

5、clip:类似于 hidden,但元素不再支持通过 JS 设置 scrollLeft 等属性的值或 scrollTo() 方法滚动到指定位置。

overflow 还可拆分成 overflow-xoverflow-y,分别控制水平方向和垂直方向的滚动条,其值于与 overflow 一致。

示例:

<div class="container">
<div class="box"><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p></div>
<div class="box"><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p></div>
<div class="box"><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p></div>
<div class="box"><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p></div>
<div class="box"><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p><p>一行文本</p></div>
</div>
<style>
.box {
margin: 20px 0;
width: 400px;
height: 280px;
border: 2px solid rgba(255, 71, 87,0.3);
position: relative;
}
.box:nth-child(2) {
overflow: hidden;
}
.box:nth-child(3) {
overflow: scroll;
}
.box:nth-child(4) {
overflow: auto;
}
.box:nth-child(5) {
overflow: clip;
}
</style>

效果:

文本溢出

看一张图,正常情况如果盒子足够大,那么文本换行之后还是会在盒子里面。但如果盒子高度不够,内容就跑到盒子外面去了。或者是内容中有超长的英文字符、连续不断的数字,浏览器也不会自动换行。

文本溢出几种处理方式

1、溢出内容直接隐藏。

2、文本溢出显示省略号,鼠标放上文字时候显示全部内容。

3、借助 JS 能力,让内容滚动显示(CSS 也能做到,不过内容衔接不够丝滑)。

4、长英文/数字换行显示。

溢出隐藏:

祭出 overflow 属性,分分钟让溢出的内容变成消失的它~~

省略号显示:

溢出省略号又分为两种:单行省略号所有浏览器都支持,多行省略号仅 webkit 内核浏览器支持(如果是做移动端开发,那么放心使用吧)。

鼠标放上显示全部内容需使用 HTML 的 title 属性值。

/* 单行 */
.ell {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* 多行 */
.ell-multi {
overflow: hidden;
display: -webkit-box;
text-overflow: ellipsis;
box-orient: vertical;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-o-box-orient: vertical;
-ms-box-orient: vertical;
line-clamp: 2; /* 超出2行显示省略号 */
-webkit-line-clamp: 2; /* 超出2行显示省略号 */
}

超长英文换行:

.en {
/* 英文字符超长自动换行 */
word-break: break-all;
word-wrap: break-word;
}

示例:

<div class="container">
<div class="box">溢出:盒模型装不下内容的时候,超出盒子大小的内容就称之为内容溢出,这里的内容又分为盒模型和文本,所以 CSS 在处理溢出时候也分为文本和盒模型两种情况。</div>
<div class="box">溢出:盒模型装不下内容的时候,超出盒子大小的内容就称之为内容溢出,这里的内容又分为盒模型和文本,所以 CSS 在处理溢出时候也分为文本和盒模型两种情况。</div>
<div class="box" title="这里是鼠标放上要显示的内容">溢出:盒模型装不下内容的时候,超出盒子大小的内容就称之为内容溢出,这里的内容又分为盒模型和文本,所以 CSS 在处理溢出时候也分为文本和盒模型两种情况。</div>
<div class="box" title="这里是鼠标放上要显示的内容">溢出:盒模型装不下内容的时候,超出盒子大小的内容就称之为内容溢出,这里的内容又分为盒模型和文本,所以 CSS 在处理溢出时候也分为文本和盒模型两种情况。</div>
<div class="box">
http://gips2.baidu.com/it/u=3944689179,983354166&fm=3028&app=3028&f=JPEG&fmt=auto?w=1024&h=1024<br>
158688888888888888888888888888888888888885555555555555
</div>
</div>
<style>
.box {
margin: 20px 0;
width: 400px;
height: 280px;
border: 2px solid rgba(255, 71, 87,0.3);
position: relative;
}
.box:nth-child(2) {
height: 40px;
overflow: hidden;
}
.box:nth-child(3) {
height: 40px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.box:nth-child(4) {
height: 40px;
overflow: hidden;
display: -webkit-box;
text-overflow: ellipsis;
box-orient: vertical;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-o-box-orient: vertical;
-ms-box-orient: vertical;
line-clamp: 2; /* 超出2行显示省略号 */
-webkit-line-clamp: 2; /* 超出2行显示省略号 */
}
.box:nth-child(5) {
/* 英文字符超长自动换行 */
word-break: break-all;
word-wrap: break-word;
}
</style>

效果:

其他相关属性

overflow-anchor

如果内容有新增删除时候,浏览器是记录滚动条位置还是记录内容位置。

auto: 会记录内容位置,让内容在滚动容器中不变。

none: 会记录滚动条位置,让滚动条位置在滚动容器中不变。

overflow-wrap

word-wrap 的别名,作用和 word-wrap 一样,都用于超长英文和 URL 换行。

normal: 行只能在正常的单词断点(例如两个单词之间的空格)处换行。

anywherebreak-word: 行可以在任何地方换行。区别在于 anywhere 在计算最小内容内在大小时,会考虑由单词换行引入的软换行机会。

hyphens

告知浏览器在换行时如何使用连字符连接单词。

none: 即便单词内有建议换行点也不会在那里换行。只会在空白符处换行。

manual: 只有当单词内存在建议换行点时,才会在该位置断开单词并使用连字符换行。

auto: 浏览器会根据当前语言环境选择合适的连字符。

scrollbar-*

用于控制滚动条相关样式,比如滑块颜色,滚动条大小等。

scroll-*

可使用 CSS 实现幻灯片翻页效果,使用较少,还是没有 JS 实现幻灯片那种丝滑感觉~~

常用属性 scroll-behavior 用于控制页面滚动时候是否有动画效果:smooth 使用动画平滑滚动,auto 无动画滚动。

写在最后

前端在做页面开发的时候,必须要考虑各种内容超长的情况,多思考一下内容极限情况,就会少很多 bug !!

Web前端入门第 50 问:CSS 内容溢出怎么处理?的更多相关文章

  1. web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史

    秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...

  2. 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM

    好程序员web前端分享值得参考的css理论:OOCSS.SMACSS与BEM 最近在The Sass Way里看到了Modular CSS typography一文,发现文章在开头部分就提到了OOCS ...

  3. 进击的Python【第十三章】:Web前端基础之HTML与CSS样式

    进击的Python[第十四章]:Web前端基础之HTML与CSS样式 一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客 ...

  4. 好程序员web前端分享18个用CSS制作出来的东西

    好程序员web前端分享18个用CSS制作出来的东西,与流行的看法相反,CSS不仅仅是用来提供一个WEB页面的基本风格,以使它看起来更有吸引力.还有很多其他的事情,CSS也可以做的很好.由于它创建动画和 ...

  5. Android零基础入门第50节:StackView卡片堆叠

    原文:Android零基础入门第50节:StackView卡片堆叠 上一期学习了AdapterViewFilpper的使用,你已经掌握了吗?本期开始学习StackView的使用. 一.认识StackV ...

  6. web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】

    http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...

  7. Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...

  8. web前端(7)—— 了解CSS样式,引入css样式的方式

    CSS 在前面大概的介绍了css,从本片博文开始,会详细的介绍它,在最开始介绍web前端时,打开百度首页,当时我提出了一个问题,为什么百度首页的输入框可以放在正中间,就是由于有css的控制,我们可以打 ...

  9. web前端学习(三)css学习笔记部分(8)-- SVN的介绍和应用、CSS动画效果、CSS3布局属性全接触

    15.SVN的介绍和应用 15.1.SVN的介绍和应用课程概要 将代码进行集中管理,有版本号的进行迭代,方便集体工作的build流程 15.2.SVN的介绍 SVN是Subversion的简称,是一个 ...

  10. web前端学习(三)css学习笔记部分(5)-- CSS动画--页面特效、HTML与CSS3简单页面效果实例

    CSS动画--页面特效部分内容目前仅仅观看了解内容,记录简单笔记,之后工作了进行内容的补充 7.  CSS动画--页面特效 7.1  2D.3D转换 7.1.1  通过CSS3转换,我们能够对元素进行 ...

随机推荐

  1. [SCOI2016] 幸运数字 题解

    \(xor\) 最大值想到线性基,路径想到 \(lca\) 和树链剖分,由于没有修改用 \(lca\) 就可以.先用处理 \(fa\) 数组的方式处理倍增线性基(自然是得用线性基合并的),在求 \(l ...

  2. [BZOJ3811] 玛里苟斯 题解

    不得不说这题的确挺苟的. 注:下述"引理"表示: 对于长度为 \(n\) 的数组 \(V\),其线性基为 \(B\),定义 \(c_v=\bigoplus\limits_{a\in ...

  3. ABB机器人维修时如何零点校准

    任何预防性维护计划的主要目的: 1.确保系统的最大利用率. 2.能够减少系统停机时间. 机器人和油漆系统的设计使其能够以最小的维护率在恶劣条件下运行.但是,仍必须定期进行常规检查和预防性维护. 对于工 ...

  4. 【博客搭建】Latex数学书写笔记

    [博客搭建]Latex 数学书写笔记 Latex 是一种文档书写语言,支持大量的特殊字符,包括书写数学公式,并且很多 Markdown 环境都支持该语言. 布局实现 靠左:使用内联数学块$...$. ...

  5. QT5笔记: 35. QGraphicsView 视图

    ![image-20220505144510057](QT5 使用.assets/image-20220505144510057.png) 三者关系:View中可以有多个Scene,Scene放在Vi ...

  6. Typecho复制文章自带版权说明

    自带版权说明代码 <script> document.body.addEventListener('copy', function (e) { if (window.getSelectio ...

  7. ES - 概述

    前言 Q1:ElasticSearch 是什么? 为什么要学习? ElasticSearch 是一个分布式.可扩展.实时的搜索和分析引擎,基于 Lucene 构建.它可以用于全文搜索.结构化搜索.分析 ...

  8. CTF-CRYPTO-ECC(1)

    CTF-CRYPTO-ECC(1) 椭圆加密 1.简介 椭圆曲线密码学(Elliptic curve cryptography),简称 ECC,和RSA.ElGamel 算法等类似,是一种公开秘钥加密 ...

  9. Qt 重载QComboBox,实现右侧删除键

    文章目录 Qt 重载QComboBox,实现右侧删除键 前言 方案 设置下拉箭头图标 设置QComboBox内容为空 自定义showPopup函数 定位鼠标 屏蔽鼠标右键 最终控制下拉代码 效果图 代 ...

  10. SpringSecurity学习笔记-前后端分离

    1. 简介 Spring Security是Spring家族中的一个安全管理框架.相比于另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富. 一般来说中大型的项目都是使用Sp ...