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. 无论什么浏览器,默认的滚动条均来自而不是

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

2.js与滚动高度

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

3. overflowpadding-bottom 缺失现象

- Chrome浏览器:有
- 其它浏览器:无
- 从而导致了`scrollHeight` 元素内容高度不同
CSS2 速查表 - overflow (深入理解)_第1张图片

4. 滚动条的宽度 17px

    
    
      

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

CSS2 速查表 - overflow (深入理解)_第2张图片
实际开发就用下面几个:
/*血槽宽度*/
::-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**);
CSS2 速查表 - overflow (深入理解)_第3张图片

    
[站外图片上传中……(1)]
图片设置 position: absolute; 父级元素是body 所以 overflow失效

5. resize拉伸

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

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

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

  必须是 `overflow:hidden` 属性,否则无法实现效果;
  

妙用

1. overflow-visible 妙用

CSS2 速查表 - overflow (深入理解)_第4张图片

2. 失效妙用

CSS2 速查表 - overflow (深入理解)_第5张图片

疑问?

CSS2 速查表 - overflow (深入理解)_第6张图片
CSS2 速查表 - overflow (深入理解)_第7张图片

文章中涉及效果示例

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

参考

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

你可能感兴趣的:(CSS2 速查表 - overflow (深入理解))