css笔记 - 张鑫旭css课程笔记之 overflow 篇
overflow基本属性值
visible(默认值):超出依然显示
hidden :超出隐藏
scroll :超出,滚动显示。子元素不超出也会有滚动条的那条轨道。
auto:如果超出,滚动显示。如果不超出,也不会有滚动条的位置。
inherit:ie8+,继承父元素的overflow属性值。
overflow-x/y(ie8+)规范:
如果overflow-x、overflow-y的值相同,则等同于overflow设置了这个值。
如果overflow-x、overflow-y的值不相同,且其中一个属性的值被赋予visible,而另一个被赋予scroll、auto、hidden等值,那么visible会被重置为auto。
比如:overflow-x:hidden;那么overflow-y就会被重置为auto。
兼容性:
- 长得不一样
- 宽度设定机制差异
overflow属性起作用的条件:
display非inline
对应方位的尺寸限制,有width/height/max-width/max-height/absolute拉伸
对于单元格td等,还需要table为
table-layout:fixed;
状态才行
overflow妙用
IE7浏览器下,文字越多,按钮两侧的padding留白就越大。其他浏览器则正常。
解决: 给所有按钮添加css样式:overflow:visible;后就可以了。
overflow与滚动条
滚动条出现的条件
overflow:auto;
或overflow: scroll;
html
、textarea
等元素天生自带overflow:auto;功能。
内容尺寸超出了容器尺寸的额限制
滚动条的宽度机制
滚动条会占用容器的可用宽度或高度
IE7/Chrome/FireFox(Win7)下都是17像素
滚动条与body/html关系
无论什么浏览器,默认滚动条均来自html
元素而不是body
标签。
其overflow值默认为auto。
所以,如果在单页应用中想要去掉页面的默认滚动条效果,只需要:
html{overflow: hidden;}
没有必要设置body。因为页面滚动条不是作用在body上的。
新建一个空白页面,body标签有一个0.5em的默认margin值。
自定义滚动条插件
Jquery自定义滚动条,
git地址,兼容到ie8+以上浏览器
js滚动高度
Chrome浏览器写法:
document.body.scrollTop
其他浏览器:
document.documentElement.scrollTop
二者不会同时存在,兼容写法:
var oH = document.body.scrollTop || document.documentElement.scrollTop;
overflow的padding-bottom缺失现象:(非chrome)
即,如果父元素中内容高度超出出现滚动条,同时父元素又有padding-bottom值,那么在非chrome浏览器中,padding-bottom可能不在滚动高度计算范围内。
这种现象会导致,scrollTop(元素内容高度)的计算差异
移动端滚动技能——ios原生滚动回调效果:
-webkit-overflow-scrolling:touch;
overflow与BFC
BFC(Block formatting context):块级格式化上下文
就像一个水杯,一个容器。元素内部再怎么搅拌折腾都撒不出来,影响不了外部。
BFC元素不会让元素及元素内部的内容与外边有任何瓜葛。、所以形成BFC的元素可以清除浮动带来的影响,不然的话,子元素浮动,父元素塌陷,父元素的兄弟元素会和父元素的子元素重叠,就违背了bfc的初衷,所以要清除浮动带来的影响。
可以触发BFC的overflow属性值:
scroll、auto、hidden这三个可以触发元素的BFC特性。visible不会。
可以触发BFC的几种情况分析:
overflow: 非visible;有自适应性,但是溢出不可见限制了其使用场景
float + float: 包裹性+破坏性。但是无法自适应。只适用于块状浮动布局。
position: absolute;元素脱离文档流。但是属于单个元素的自娱自乐。
display:inline-block;包裹性,无法自适应。但是IE6/7 block水平不相识
display:table-cell;包裹性,但是天生无溢出特性,宽度再宽也不会超出父容器。绝对宽度也能自适应。
利用overflow形成BFC的应用:
- 清除浮动影响
- 父元素设置overflow:auto/scroll/hidden;可以清除子元素浮动带来的影响。(形成bfc结界,与外界隔绝)
仅支持ie7+及现代浏览器
避免margin穿透/重叠问题(形成bfc结界,与外界隔绝)
两栏自适应布局
overflow与absolute
隐藏失效
即overflow:hidden;
失效。
当元素设置position:absolute;
绝对定位且无方位值(left、right、bottom、top)设置。
并且父元素没有设置position:relative;限制子元素的时候,子元素就不受父元素overflow:hidden;的限制,即使超出也不会被隐藏了!
css笔记 - 张鑫旭css课程笔记之 overflow 篇的更多相关文章
- css笔记 - 张鑫旭css课程笔记之 float 篇
https://www.imooc.com/t/197450float float的设计初衷/原本作用-是为了实现文字环绕效果如,一个图片和一段文字垂直放置,给图片加上浮动,文字就环绕图片展示了. 浮 ...
- css笔记 - 张鑫旭css课程笔记之 vertical-align 篇
支持负值的属性: margin letter-spacing word-spacing vertical-align 元素vertical-align垂直对齐的位置与前后元素都没有关系元素vertic ...
- css笔记 - 张鑫旭css课程笔记之 line-height 篇
一.line-height line-height: 指两行文字基线之间的距离. 行高200px表示两行文字基线之间的距离是200px: 二.基线:baseline 字母x下边缘的位置 基线是任意线定 ...
- css笔记 - 张鑫旭css课程笔记之 padding 篇
[padding地址](https://www.imooc.com/learn/710) 一.padding与容器尺寸之间的关系 padding会影响元素的尺寸(通常情况下是通过增加/挤压内容区域) ...
- css笔记 - 张鑫旭css课程笔记之 margin 篇
margin - 人若犯我,我必犯人! [margin地址](https://www.imooc.com/learn/680) 一.margin与容器尺寸的关系 relative可定位,但是不改变容器 ...
- css笔记 - 张鑫旭css课程笔记之 z-index 篇
一.z-index语法.支持的属性值等 z-index: 在支持z-index的元素上, z-index规定了元素(包括子元素)的垂直z方向的层级顺序, z-index可以决定哪个元素覆盖在哪个元素上 ...
- css笔记 - 张鑫旭css课程笔记之 relative 篇
relative地址 relative 对 absolute的限制作用 限制left/top/right/bottom(方位值)定位 限制描述:absolute设置了方位值时,这些方位值是相对于pos ...
- css笔记 - 张鑫旭css课程笔记之 absolute 篇
absolute地址 absolute绝对定位 绝对定位与浮动鲜为人知的兄弟关系 即是说,absolute后,元素和浮动元素的特性差不多,只不过absolute脱离文档流,元素飘在天上,float还在 ...
- css笔记 - 张鑫旭css课程笔记之 border 篇
border地址 border特性: 能形成BFC但是不能清除浮动.但是bfc也是把子元素的margin包裹进来,但是拿自己的margin穿透没办法的. 边框宽度不支持百分比 透明border可以突破 ...
随机推荐
- CI框架 -- URI 路由
一般情况下,一个 URL 字符串和它对应的控制器中类和方法是一一对应的关系. URL 中的每一段通常遵循下面的规则:example.com/class/function/id/ 但是有时候,你可能想改 ...
- Complex Instance Placement
转自: https://specs.openstack.org/openstack/openstack-user-stories/user-stories/proposed/complex-insta ...
- window wlan 相关服务
1.Extensible authentication protocol 2.cng key lsolation 3.wlan autoconfig
- C# 实现数字字符串左补齐0的两种方法
); MessageBox.Show(sss); return; 代码如上,自动补齐前面的0
- linux中wget命令
Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP协 ...
- js 事件详解 冒泡
起因:正常情况下我点击s2时是先弹出我是children,再弹出我是father,但是却出现了先弹出我是father,后弹出我是children的情况,这种情况是在和安卓app交互的h5页面中出现的, ...
- 如何获取模拟器安装的app的位置
你可以死记下地址格式, 但是一旦不同的xcode和模拟器版本改变变了地址, 又得记, 从活动管理器里其实是可以直接查看的: Launch the app in the simulator Open A ...
- level 6 - unit3 -- 非限制性定语从句
非限制性定语从句 例子1 he has a son who is a fireman who 引导一个定语从句. who 是修饰前面的son. 翻译的意思:他有一个消防员的儿子 he has a so ...
- Window 10 :我的性能优化:那效果,杠杠的!
微软的 windows 10,不错! 当全新安装后,性能总觉得别别扭扭,不那么干净利落. 下面就是我的个人优化措施,期间有很多技术性的操作,如果你没有动手能力,或者是技术小白,可以不用再看了! (1) ...
- QT编译错误:member access into incomplete type 'QMouseEvent'
想在QT程序中使用鼠标事件,添加重载的响应函数,并实现后,一直提示 member access into incomplete type 'QMouseEvent' 既然使用了QMouseEvent类 ...