CSS深入理解之overflow 笔记

Overflow基本属性

  • visible(默认)
  • hidden
  • scroll
  • auto
  • inherit

假如overflow-xoverflow-y值相同,则等同于overflow

假如overflow-xoverflow-y值不同,其中一个值,如overflow-x设置为hidden/scroll/auto中的一个,那么overflow-y的值是visible或没有设置时,会重置为auto

overflow 起作用的前提条件

  1. display不是inline;
  2. 对应方位的尺寸限制。width/height/max-width/max-heightabsolute拉伸;
  3. 对于单元格td等,还需要tabletable-layout:fixed状态;

Oveflow 与滚动条

无论什么浏览器,默认滚动条都来自于<html>元素,而非<body>。所以要想去除页面的滚动条只需要html { overflow: hidden; }

获取滚动高度

  • chrome浏览器:document.body.scrollTop;
  • 其它浏览器:docuent.documentElement.scrollTop;

所以推荐使用:

let st = document.body.scrollTop || document.documentElement.scrollTop;

滚动条会占用容器的可用宽度或高度。overflow:auto在固定宽高的的布局中,出现滚动条,破坏原本和谐的布局,应用在自适应布局中。

水平居中跳动问题

.container { width: 1150px; margin: 0 auto; }设置水平居中,当页面出现滚动条时,出现页面偏移现象,如下图:

水平居中跳动问题修复

  1. html { overflow-y: scroll; } 滚动条一直存在影响美观;
  2. .container { padding-left:calc(100vw-100%);}浏览器宽度 - 可用内容宽度

Overflow 与块状格式上下文(BFC)

overflow的值为auto/scroll/hidden时,可以触发BFC。常见应用如下:

  1. 清除浮动影响;

更广泛的清除浮动影响使用伪元素:
.clearfix:after{ content: ''; display: table; clear: both;}

  1. 避免margin穿透问题;
  2. 两栏自适应布局;

BFC由于自身特性,具体表现不一:

  • overflow:hidden自适应,但“溢出不可见”限制应用场景;
  • float+float:包裹性+破坏性,无法自适应,块状浮动布局;
  • position:absolute脱离文档流,自娱自乐;
  • display:inline-block 包裹性,无法自适应;
  • display:table-cell 包裹性,但天生无溢出特性,绝对宽度也能自适应;

广为流传的两栏自适应布局如下:

.cell {  /*IE8+ BFC特性*/
  display: table-cell;
 width:2000px; /*设置超过外部容器宽度的数值*/

Overflow 与 absolute 绝对定位

绝对定位元素不总是被父级 overflow 属性剪裁,尤其当 overflow 在绝对定位元素及其包含块之间的时候。即 overflow 在绝对定位元素及其包含块之间时失效。

包含块指:含position:relative/absolute/fixed声明的父级元素,没有则指 body 元素。

避免 overflow 失效:

  1. overflow 元素自身为包含块,即添加属性position:relative/absolute/fixed
  2. overflow 元素的子元素为包含块,即添加一层 div 作为 overflow 的子元素、绝对定位的父元素,并设置属性position:relative/absolute/fixed
  3. 任意合法 transform 声明当做包含块,考虑兼容性,overflow 自身设置 transform 或其子元素设置 transform;

overflow 失效的妙用

依赖 Overflow 的样式表现

resize 拉伸

  • resize: both 水平垂直两边拉伸;
  • resize: horizontal 水平方向拉伸;
  • resize: vertical 垂直方向拉伸;

但,resize 要想起作用,元素的 overflow属性不能为 visible!

文本域天生具有resize特性,因为默认 overflow:auto

text-overflow: ellipsis 文字溢出省略

Overflow 与锚点技术

锚点定位的本质是改变容器的滚动高度。其生效的条件有:

  1. 容器可滚动——overflow 不是 visible,里面元素高于容器;
  2. 锚点元素在容器内;


锚点定位的触发

  1. url地址中的锚链与锚点元素;
  2. 可 focus 的锚点元素处于 focus 状态;

锚点定位的作用

  1. 快速定位
  2. 与 overflow 结合的选项卡技术

但这种技术有明显的不足,由于锚点定位一直定位到最外层的滚动条,所以点击锚点后,会使页面滚动到屏幕最顶端,影响体验;但应用在单页应用,没有滚动条的页面效果不错。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,720评论 1 92
  • 1,overflow的基本属性 overflow作用的前提? (1),不能是内联元素! (2),对尺寸的限制。(w...
    Bennt阅读 1,955评论 0 4
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,798评论 0 6
  • 1.绝对定位居中技术 我们一直用margin:auto实现水平居中,而一直认为margin:auto不能实现垂直居...
    DecadeHeart阅读 1,596评论 0 3
  • 【磐石计划】第511天,练习元认知能力第238天,冥想31分钟。 作为修心日,专心的看完了这本书《内观》 摘录了其...
    苏格拉磊阅读 197评论 0 2