参考链接:https://www.cnblogs.com/yanyanstyle/p/11320893.html
定义
overflow属性规定当内容溢出元素框时发生的事情,即当一个元素为某个固定大小,但内容在元素中放不下。此时就可以利用overflow属性来控制这种情况
属性值:
应用于:块级元素、替换元素、表单元格
继承性:无
- visible:初始值,内容不会被修剪,会呈现在元素框之外
- scroll:内容会被修建,但是浏览器会显示滚动条
- hidden:内容会被修剪,并且其余内容不可见
- auto:如果内容被修剪,则浏览器会显示滚动条,以便查看其余的内容
- inherit:
- no-content:
- no-display:
overflow-x和overflow-y用于定义对水平垂直方向内容溢出的剪切。
auto
- 如果内容被剪裁,则浏览器会显示滚动条以便查看其余的内容。
- 对于一般浏览器来说,html和textarea默认带有overflow:auto的属性。但IE7-浏览器则不同,默认存在纵向滚动条
//IE7-浏览器 html{overflow-y: scroll;} //其他浏览器 html{overflow: auto;} //去除页面默认滚动条 html{overflow: hidden;}
scroll
元素的内容会在元素框的边界处剪裁,但浏览器会显示滚动条以便查看其余的内容
no-display
当内容溢出容器时不显示元素,类似于元素添加了display:none属性一样
no-content
当内容溢出窗口时不显示内容,类似于元素添加了visibility: hidden属性一样
[注意]no-display和no-content这两个属性目前没有浏览器支持
失效
- 绝对定位元素不总是被父级overflow属性剪裁,尤其是当overflow在绝对定位元素及包含块之间的时候。
- 由于固定定位是相对于视窗定位的,所有固定定位元素无法被其所有的父级元素overflow属性剪裁。
【解决方法】
【1】overflow元素自身为包含块
给父级设置position:absolute或fixed或relative
【2】overflow元素的子元素为包含块
在绝对定位元素和overflow元素之间增加一个元素并设置position:absolute或fixed或relative
div style="overflow:hidden;"> <div style="position:relative"> <div style="position:absolute">绝对定位元素</div> </div> </div>
应用
当overflow设置为auto或scroll或hidden时可以触发BFC,使得overflow可以实现一些相关应用。
【1】清除浮动影响
【2】避免margin穿透
【3】两栏自适应布局
【4】选项卡
----补充:
- 非替换元素:如果元素的内容包含在文档中,则称之为非替换元素。一个段落的文本内容都放在该元素本身之内,这个段落就是非替换元素。
- 替换元素:这是指用作为其他元素占位符的一个元素。替换元素的一个经典例子就是img元素,它只是指向一个图像文件,这个文件将插入到文档流中该img元素本身所在的位置,大多数元素也可以替代。
常见置换元素:
- 视图元素,如img、object, video ;
- 表单元素,如<textarea , input 。
- 某些元素只在一些特殊情况下表现为可替换元素,例如 audio和canvas 。
- 通过 CSS content 属性插入的对象 被称作 匿名可替换元素(anonymous replaced elements)。
根据W3C文档,有且仅有全体替换元素是具有固体尺寸的。
非置换元素
非置换元素,即表面意思,不是置换元素的元素。