overflow基本属性值

  1. visible(默认值):超出依然显示

  2. hidden :超出隐藏

  3. scroll :超出,滚动显示。子元素不超出也会有滚动条的那条轨道。

  4. auto:如果超出,滚动显示。如果不超出,也不会有滚动条的位置。

  5. 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。

兼容性:

  1. 长得不一样
  2. 宽度设定机制差异

overflow属性起作用的条件:

  1. display非inline

  2. 对应方位的尺寸限制,有width/height/max-width/max-height/absolute拉伸

  3. 对于单元格td等,还需要table为table-layout:fixed;状态才行

overflow妙用

IE7浏览器下,文字越多,按钮两侧的padding留白就越大。其他浏览器则正常。

解决: 给所有按钮添加css样式:overflow:visible;后就可以了。

overflow与滚动条

滚动条出现的条件

  • overflow:auto;overflow: scroll;

    • htmltextarea等元素天生自带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的应用:

  1. 清除浮动影响
  • 父元素设置overflow:auto/scroll/hidden;可以清除子元素浮动带来的影响。(形成bfc结界,与外界隔绝)

仅支持ie7+及现代浏览器

  1. 避免margin穿透/重叠问题(形成bfc结界,与外界隔绝)

  2. 两栏自适应布局

overflow与absolute

隐藏失效

overflow:hidden;失效。

当元素设置position:absolute;绝对定位且无方位值(left、right、bottom、top)设置。

并且父元素没有设置position:relative;限制子元素的时候,子元素就不受父元素overflow:hidden;的限制,即使超出也不会被隐藏了!

css笔记 - 张鑫旭css课程笔记之 overflow 篇的更多相关文章

  1. css笔记 - 张鑫旭css课程笔记之 float 篇

    https://www.imooc.com/t/197450float float的设计初衷/原本作用-是为了实现文字环绕效果如,一个图片和一段文字垂直放置,给图片加上浮动,文字就环绕图片展示了. 浮 ...

  2. css笔记 - 张鑫旭css课程笔记之 vertical-align 篇

    支持负值的属性: margin letter-spacing word-spacing vertical-align 元素vertical-align垂直对齐的位置与前后元素都没有关系元素vertic ...

  3. css笔记 - 张鑫旭css课程笔记之 line-height 篇

    一.line-height line-height: 指两行文字基线之间的距离. 行高200px表示两行文字基线之间的距离是200px: 二.基线:baseline 字母x下边缘的位置 基线是任意线定 ...

  4. css笔记 - 张鑫旭css课程笔记之 padding 篇

    [padding地址](https://www.imooc.com/learn/710) 一.padding与容器尺寸之间的关系 padding会影响元素的尺寸(通常情况下是通过增加/挤压内容区域) ...

  5. css笔记 - 张鑫旭css课程笔记之 margin 篇

    margin - 人若犯我,我必犯人! [margin地址](https://www.imooc.com/learn/680) 一.margin与容器尺寸的关系 relative可定位,但是不改变容器 ...

  6. css笔记 - 张鑫旭css课程笔记之 z-index 篇

    一.z-index语法.支持的属性值等 z-index: 在支持z-index的元素上, z-index规定了元素(包括子元素)的垂直z方向的层级顺序, z-index可以决定哪个元素覆盖在哪个元素上 ...

  7. css笔记 - 张鑫旭css课程笔记之 relative 篇

    relative地址 relative 对 absolute的限制作用 限制left/top/right/bottom(方位值)定位 限制描述:absolute设置了方位值时,这些方位值是相对于pos ...

  8. css笔记 - 张鑫旭css课程笔记之 absolute 篇

    absolute地址 absolute绝对定位 绝对定位与浮动鲜为人知的兄弟关系 即是说,absolute后,元素和浮动元素的特性差不多,只不过absolute脱离文档流,元素飘在天上,float还在 ...

  9. css笔记 - 张鑫旭css课程笔记之 border 篇

    border地址 border特性: 能形成BFC但是不能清除浮动.但是bfc也是把子元素的margin包裹进来,但是拿自己的margin穿透没办法的. 边框宽度不支持百分比 透明border可以突破 ...

随机推荐

  1. Websphere多个应用session相互覆盖问题解决办法

    原文链接:http://my.oschina.net/moyuqi/blog/98475 使用apache反向代理解决在应用A使用Iframe嵌入应用B的功能而产生的跨域问题后,应用B的功能能正常使用 ...

  2. 垃圾回收机制GC知识再总结兼谈如何用好GC(其他信息: 内存不足)

    来源 图像操作,易内存泄露,边界像素 一.为什么需要GC 应用程序对资源操作,通常简单分为以下几个步骤: 1.为对应的资源分配内存 2.初始化内存 3.使用资源 4.清理资源 5.释放内存 应用程序对 ...

  3. spring mvc实现接口参数统一更改

    适用于post  json方式提交 使用map接收的接口参数更改. 使用@Aspect实现:

  4. 使用阿里云的maven私服的setting.xml, 提高maven项目jar下载速度

    下载: http://files.cnblogs.com/files/007sx/settings.zip 然后替换自己原本maven的配置文件. 如下载失败,可内容替换: <?xml vers ...

  5. LoadRunner 使用介绍

    功能介绍 安装流程 LoadRunner是一款测试系统行为和性能的负债测试工具,通过模拟上千万用户实施并发复杂以实时性能监控的方式来确认和查找问题.它是一款付费商业软件,开发商为HP,个人开发者可以使 ...

  6. 【NLP】文本相似度

    http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html

  7. lua中实现倒计时

    今天在开发的时候,涉及到了使用倒计时来显示. 首先自己的思路是: 1.设计显示的Lable. 2.对传入的时间进行处理,转成字符串00:00:00.通过调用回调函数来控制一秒刷新一次. 转换算法: h ...

  8. android 转屏 onConfigurationChanged 不会执行的问题

    参考 http://blog.csdn.net/tangzhilu/article/details/7399988 MainActivity 代码 package com.example.config ...

  9. logback.xml常用配置详解

    <?xml version="1.0" encoding="UTF-8"?><configuration debug="false& ...

  10. 【scala】 scala 基础(一)

    至于什么是scala,摘录一段 维基百科的解释: scala 下载 安装 省略 1.环境变量配置完成后 命令行报错,因为scala 的安装路径里边包含空格 修改后即可.由于我的本地包含空格,此处CLI ...