css之overflow:细探之下有意想不到的结果
overflow 是一个非常常用的 CSS 属性,一般来说会认为很简单,其实细究之后就会发现他还有很多小特性或者说意想不到的结果;
下面就介绍下(在浏览器环境下)关于 overflow 的小总结。
哪些元素上有效?
首先 overflow 是应用到哪些元素上有效的,任意元素?
当然不是,它只能应用于块容器上。
那什么是块容器呢?
简单来说:除了
table和可替换(置换)元素之外的块级元素都是块容器元素;
但是反过来说块容器元素一定是块级元素的吗?
当然也是 NO ,这是因为对于非替换的
inline-block元素和table-cell元素而言,他们是块容器元素但是却不是块级元素。
作用
overflow 属性指定了一个块容器元素在其内容溢出这个元素的时候,内容是否裁掉。
overflow的值
可以取的值有:
visible(初始值) hidden、 scroll、auto、inherit 。
下面分别介绍下他们的含义:visible
这个属性表明内容不会被裁剪,所以说他可能超出渲染,也是初始值。
hidden
这个属性表明内容超出的部分需要裁剪掉。
scroll
这个属性表明超出内容不会裁剪掉,浏览器提供滚动机制来让用户看到超出内容,还有就是不管超出不超出他都是要显示的(也就是浏览器的滚动条背景的那个东东)。
auto
如果超出的话,应该有滚动条。
inherit
继承自他的父级元素(或者祖先元素)。
其他“作用”
overflow的值为非visible的时候可以生成新的BFC(块级格式化上下文),常见的结果就是:消除浮动影响、左侧固定右侧自适应(不需要指定margin-left)、margin不再折叠等。overflow:hidden搭配white-space:nowrap、text-overflow:ellipsis实现...效果。overflow:hidden可以让1px(scale(0.5)这种)显示的更加精细。overflow:hidden可以解决移动端页面内容(一般文字内容相对多一点的时候效果更明显)会出现“进来左右方向缩小到一块”然后再变为正常布局的 bug ,这个 bug 会引起很明显的闪动效果。疑问
在某些场景下就会遇到和上边所说的情况不一致的时候,下边来介绍下:
一个页面,什么样式都不设置,但是里边很多内容,此时应该是什么样呢?
首先,初始值是
visible没错,也就是说所有元素的overflow的值都是visible的,也就是说没有元素设置overflow:auto,但是结果确是浏览器会出现滚动条;这是因为规范规定了在这种情况下浏览器需要表现的像是类似于给 viewport 的根元素设置了overflow:auto类似的效果。magin折叠?考虑下边的页面:
overflow test
先来说理论上的效果应该是:我给
body设置了overflow:hidden,也就意味着body元素会生成新的BFC,也就意味着此时.content的元素的margin上边界应该是在body元素的顶部开始计算的;但是实际的效果确是:
和设想的很大差异,这里就涉及到了一种特殊情况,那就是如果说 viewport 的根元素 html 的
overflow的值是visible且有body元素的情况下,就需要将body元素的overflow设置的值应用到 viewport 上,而这个body元素的overflow属性的使用值就是visible;正式因为如此,才会出现上图的情况,看起来就像是body元素和.content元素的margin发生了折叠一样的效果。小结
上边就是关于
overflow的基础以及一些小特性细节,当然可能还有其他好多未知的“情况”有待发掘,欢迎广大同行来“喷-喷”更多的overflow!转自http://gold.xitu.io/post/581dcefbda2f60005df93b54
css之overflow:细探之下有意想不到的结果的更多相关文章
- css之overflow
也说css之overflow:细探之下有意想不到的结果 2016-11-5 滴滴出行·DDFE 作者:dolymood overflow 是一个非常常用的 CSS 属性,一般来说会认为很简单,其实细究 ...
- 深入理解CSS溢出overflow & overflow:hidden真的失效了吗[转载]
深入理解CSS溢出overflow http://www.cnblogs.com/xiaohuochai/p/5289653.html overflow:hidden真的失效了吗 http://www ...
- css中overflow:hidden的属性 可能会导致js下拉菜单无法显示
css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...
- 转:css中overflow:hidden 不起作用了吗?
css中overflow:hidden 不起作用了吗? 有同学遇到这样的问题,现象是给元素设置了overflow:hidden,但超出容器的部分并没有被隐藏,难道是设置的hidden失效了吗?其实看似 ...
- css 溢出overflow
css 溢出overflow 当一个元素被设置为固定大小,在这个元素中的内容如果超出元素的界限,就会出现溢出的现象. 通常情况下我们可以通过overflow来控制这个属性. overflow语法定义 ...
- CSS中overflow:scroll怎么设置只上下滚动而不左右滚动
CSS中"overflow:scroll"默认是左右,上下都滚动.怎么设置只上下滚动而不左右滚动,下面有个不错的解决方法 CSS中"overflow:scroll&quo ...
- 对CSS了解-overflow:hidden
overflow:hidden 列出我在项目中,运用到此属性的例子: (1)暴力清除浮动 <style type="text/css"> .wrap {;backgro ...
- Css的使用细谈
Css的使用细谈 Css可以通过简单的更改CSS文件,改变网页的整体表现形式,可以减少我们的工作量,所以她是每一个网页设计人员的必修课. Css简介 (1) CSS是用于布局 ...
- CSS 布局 - Overflow
CSS 布局 - Overflow CSS overflow 属性用于控制内容溢出元素框时显示的方式. 这里的文本内容是可以滚动的,滚动条方向是垂直方向.dd马达价格 这里的文本内容是可以滚动的,滚动 ...
随机推荐
- 如何把一个excel工作薄中N个工作表复制到另一个工作薄中
一般遇到标题这样的情况,许多人可能会一个一个的复制粘贴,其实完全不必那么麻烦. 你可以按以下步骤来操作: 第一步:打开所有要操作的excel工作薄\n 第二步:按住Shift键,选择所有要复制的工作表 ...
- Xcode开发中的6个小技巧
Xcode是iPhone和iPad开发者用来编码或者开发iOS app的IDE.Xcode有很多小巧但很有用的功能,很多时候我们可能没有注意到它们,也或者我们没有在合适的水平使用这些功能简化我们的iO ...
- MySQL中varchar转int
order by ... cast(sort as signed) 或 convert(sort,signed) (sort为待转化字段)
- EF – 1.模式
3种数据库 code first model first database first 创建EF http://www.cnblogs.com/tangge/p/3834578.htm ...
- 攻城狮在路上(叁)Linux(二十一)--- linux磁盘检查 fsck \ badblocks
若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查.这一步是可选的,尽量少用. 使用前的建议:使用fsck命令时,被检查的分区务必不要挂载在系统上. 一.fsck: 命令格式:fsck [ ...
- Oracle 数据泵文件
数据泵文件 expdp介绍 EXPDP命令行选项1. ATTACH该选项用于在客户会话与已存在导出作用之间建立关联.语法如下ATTACH=[schema_name.]job_nameSchema_na ...
- 1-01Sql Sever 2008的安装
Sql Sever 2008对计算机的配置要求: 1:处理器:最低1.4Ghz的处理器,建议使用2.0GHz或更高的处理器 . 2:内存:最小512MB, 建议使用1GB或更高的处理器. 3:磁盘容 ...
- hdu 4043 2011北京赛区网络赛D 概率+大数 **
推出公式为:P = A(2n,n)/(2^(2n)*n!) 但是不会大数,学完java再补
- long和int的区别
转自:http://blog.sina.com.cn/s/blog_6f62c9510101svjz.html 突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度. ...
- PDF解析记录——Pdfbox
此文仅作记录[嫌放电脑里碍事-_-],内容为以前收集的一小段代码. 下面为pdf获取文本的简要代码片段: private string GetPDFText(string filename) { ...