CSS2 速查表 - overflow (深入理解)

语义
visible 默认(超出父元素部分显示)
hidden 隐藏(超出父元素部分隐藏)
scroll 滚动条X,Y(父元素出现滚动条无论是否超出)
auto 智能模式 未超出父元素不显示滚动条,反相同理
inherit ie8+ 一般不使用,有浏览器兼容问题

overflow-x 、overflow-y ie8+(重要)

1. 情况1

 `overflow-x :hidden;`
 `overflow-y :hidden;`
  如果 `overflow-x`与 `overflow-y` 的值相同 = `overflow`
 上面的代码等同于 : `overflow:hidden;`

2. 情况2

`overflow-x :visible;`
`overflow-y :hidden || auto || scroll;`
 如果 `overflow-x` 与 `overflow-y` 任意一项值是 = `visible`;
 另一项的值 = `hidden || auto || scroll`
 那么值为 `visible` 这一项的值将被重置为 `auto`
上面的代码等同于 :
                 ` overflow-x :auto;`
                 ` overflow-y :hidden || auto || scroll;`

兼容性

生效 注意
display:inline水平
对应方位的尺寸限制 widthheightmax-widthmax-heightabsoule ie7max-widthmax-height bug
单元格td等,需要tabletable-layout:fixed

body/html与滚动条

1. 无论什么浏览器,默认的滚动条均来自<html>而不是<body>

 IE7-浏览器默认:`html { overflow-y : scroll ; }`
 IE8+浏览器默认:`html { overflow-y : auto ; }`
 所以,如果想要去除页面默认滚动条,只需要: html { overflow : hidden ; }
 而没必要把<body>也拉下水:html , **body**  { overflow : hidden ; }

2.js与滚动高度

- Chrome浏览器:`document.body.scrollTop`
- 其它浏览器:`document.documentElement.scrollTop`
- 建议写法:`document.documentElement.scrollTop || document.body.scrollTop;`

3. overflowpadding-bottom 缺失现象

- Chrome浏览器:有
- 其它浏览器:无
- 从而导致了`scrollHeight` 元素内容高度不同

4. 滚动条的宽度 17px

    <style type="text/css">
      .body{
          width: 400px;
          overflow:scroll ;
      }
      .in{*zoom: 1; /*ie7*/}
    </style>
    <body>
      <div class="body">
        <div class="in"></div>
      </div>
      <script type="text/javascript">
          var  cw = 400- document.getElementsByClassName('in')[0].clientWidth;
          console.log(cw); //IE7+、Chrome、FireFox(Win7)  cw = 17  !!!
       </script>
    </body>

5. 水平居中跳动问题

  一般网页制作采用水平居中,这时候如果出现滚动条则会占用页面宽度,auto计算的值就会减小。
  发生水平跳动现象
  解决方法:ie9+
  html { overflow : scroll ; }
 .container { padding-left : calc( 100vw - 100% ) ; }
 .container {
      width: 1210px;
      color: #666;
      padding-left: calc(100vw - 100%);  
    /* 100vw : 浏览器宽度 ; 100% : 可用内容宽度  */
 }

6.自定义滚动条 - webkit

实际开发就用下面几个:
/*血槽宽度*/
::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}
/*拖动条*/
::-webkit-scrollbar-thumb {
    background-color: rgba(0, 0, 0, .3);
}
/*背景槽*/
::-webkit-scrollbar-track {
    background-color: #ddd;
    border-radius: 6px;
    }

overflow与BFC

1. 触发BFC

1. `visible` -
2. `auto*`
3. `scroll*`
4. ` hidden*`

2. 作用

 清除浮动影响

 避免`margin`穿透问题

 两栏自适应布局 

3. overflow失效

 原因 :绝对定位元素不总是被父级`overflow`属性裁剪,尤其当`overflow`在**绝对定位元素及其包含块**之间的时候

包含块 : 含 position:relative、absolute、fixed声明的父级元素、没有则body元素

4. 如何避免失效

overflow 元素自身为包含块;

overflow 元素的子元素为包含块;

任意合法`transform`声明当作包含块(**new**);
<body>
    <div style="overflow: hidden; margin-top:20px ;  width: 200px; height: 300px;border: 5px   solid saddlebrown;">
        [站外图片上传中……(1)]
    </div>
 </body>
图片设置 position: absolute;  父级元素是body 所以 overflow失效

5. resize拉伸

`ccs3`有个属性名为`resize`,可以拉伸元素尺寸:
`resize:both` 水平垂直两边拉;
`resize:horizontal` 只有水平方向拉;
`resize:vertical` 只有垂直方向拉;
 但是,此声明要想其作用,元素的`overflow`属性值不能是 `**visible**`

6. 拖拽的默认像素是 17px 与scroll边框一致

7. ellipsis文字溢出点点点省略

  必须是 `overflow:hidden` 属性,否则无法实现效果;
  <button style="width:200px;white-space:nowrap;textoverflow:ellipsis;overflow:hidden;">
        我是一个按钮,宽度仅200像素
    </button>

妙用

1. overflow-visible 妙用

2. 失效妙用

疑问?

文章中涉及效果示例

overflow 失效、overflow妙用、两栏布局
锚点选项卡示例1
target实现动画选项卡示例2
target实现动画选项卡示例3
target天气预报示例

参考

锚点定位机制-应用-问题 张鑫旭
慕课网 张鑫旭 深入理解overflow

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容

  • Overflow基本属性 visible(默认) hidden scroll auto inherit 假如ove...
    soojade阅读 2,526评论 0 1
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,725评论 1 92
  • 1,overflow的基本属性 overflow作用的前提? (1),不能是内联元素! (2),对尺寸的限制。(w...
    Bennt阅读 1,961评论 0 4
  • overflow是个非常神奇的属性,表面上它只是用来处理超出部分隐藏的元素,实质上它有许多神奇的妙用! 1.ove...
    土豪码农阅读 1,794评论 0 1
  • 有位认识不久的朋友H,每次来我这,都会说道他女儿的事。才匆匆忙忙几次间,我对他的女儿都有了一个大至的了解...
    南飞雨燕阅读 633评论 5 17