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:细探之下有意想不到的结果的更多相关文章

  1. css之overflow

    也说css之overflow:细探之下有意想不到的结果 2016-11-5 滴滴出行·DDFE 作者:dolymood overflow 是一个非常常用的 CSS 属性,一般来说会认为很简单,其实细究 ...

  2. 深入理解CSS溢出overflow & overflow:hidden真的失效了吗[转载]

    深入理解CSS溢出overflow http://www.cnblogs.com/xiaohuochai/p/5289653.html overflow:hidden真的失效了吗 http://www ...

  3. css中overflow:hidden的属性 可能会导致js下拉菜单无法显示

    css中overflow:hidden属性导致ExtJS中无法显示下拉滚动条 overflow属性: visible 默认.内容不会被修剪,会呈现在元素之外. hidden 内容会被修剪,但是浏览器不 ...

  4. 转:css中overflow:hidden 不起作用了吗?

    css中overflow:hidden 不起作用了吗? 有同学遇到这样的问题,现象是给元素设置了overflow:hidden,但超出容器的部分并没有被隐藏,难道是设置的hidden失效了吗?其实看似 ...

  5. css 溢出overflow

    css 溢出overflow 当一个元素被设置为固定大小,在这个元素中的内容如果超出元素的界限,就会出现溢出的现象. 通常情况下我们可以通过overflow来控制这个属性. overflow语法定义 ...

  6. CSS中overflow:scroll怎么设置只上下滚动而不左右滚动

    CSS中"overflow:scroll"默认是左右,上下都滚动.怎么设置只上下滚动而不左右滚动,下面有个不错的解决方法 CSS中"overflow:scroll&quo ...

  7. 对CSS了解-overflow:hidden

    overflow:hidden 列出我在项目中,运用到此属性的例子: (1)暴力清除浮动 <style type="text/css"> .wrap {;backgro ...

  8. Css的使用细谈

    Css的使用细谈 Css可以通过简单的更改CSS文件,改变网页的整体表现形式,可以减少我们的工作量,所以她是每一个网页设计人员的必修课. Css简介              (1) CSS是用于布局 ...

  9. CSS 布局 - Overflow

    CSS 布局 - Overflow CSS overflow 属性用于控制内容溢出元素框时显示的方式. 这里的文本内容是可以滚动的,滚动条方向是垂直方向.dd马达价格 这里的文本内容是可以滚动的,滚动 ...

随机推荐

  1. 100个Github上Android开源库

    项目名称 项目简介 1. react-native 这个是 Facebook 在 React.js Conf 2015 大会上推出的基于 JavaScript 的开源框架 React Native, ...

  2. 【leetcode】Single Number II (medium) ★ 自己没做出来....

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  3. The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

    出现这样的错误: error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your C ...

  4. [Android] adb shell dumpsys的使用

    reference to :http://blog.csdn.net/g19920917/article/details/38032413 有两种方法可以查看service list: 1. adb ...

  5. 通过NSString初始化OC类

    NSString *className = self.classNames[indexPath.section][indexPath.row];    BaseMapViewController *s ...

  6. NYOJ题目98成绩转换

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsQAAAJhCAIAAADJ5jGJAAAgAElEQVR4nO3dq3LkSPg36O8mzH0hxn ...

  7. Delphi的字符串、PChar和字符数组之间的转换

    参考:http://my.oschina.net/kavensu/blog/193719 以下的各种方法都是我在Delphi 6的环境下测试成功的,可能根据你的开发环境.不同的上下文语境……有一些可能 ...

  8. 异常:System.BadImageFormatException,未能加载正确的程序集XXX

    IDE:VS2015 语言:C# 异常:System.BadImageFormatException,未能加载正确的程序集XXX或其某一依赖项... 一般是由于目标程序的目标平台与其某一依赖项的目标编 ...

  9. php计算几分钟前、几小时前等

    function format_date($time){ $t=time()-$time; $f=array( '=>'年', '=>'个月', '=>'星期', '=>'天' ...

  10. wordpress源码解析-目录结构-文件调用关系(1)

    学习开源代码,是一种很快的提升自己的学习方法.Wordpress作为一个开源的博客系统,非常优秀,应用广泛,使用起来简单方便,具有丰富的主题和插件,可以按照自己的需求来任意的进行修改.所以就从word ...