• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >浏览器兼容 > 一个通俗小故事告诉你溢出隐藏(overflow:hidden)失效的原因

一个通俗小故事告诉你溢出隐藏(overflow:hidden)失效的原因

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-02

本文主要包含overflow:hidden失效,overflow:hidden,css overflow hidden,html overflow:hidden,ie overflow:hidden等相关知识,佚名 希望在学习及工作中可以帮助到您

其实看似不合理的现象背后都会有其合理的解释。

我们知道,overflow属性值有这几种:


W3C标准中指明:
通常一个盒子的内容是被限制在盒子边界之内的。但有时也会产生溢出,即部分或全部内容跑到盒子边界之外。溢出将在满足下列条件之一时出现:


当溢出发生时,overflow属性约定了容器盒子是否剪裁掉超出其内边界的部分,并且决定是否出现滚动条来访问被剪裁掉的内容。它会影响到元素所有内容的剪裁,但有个例外情况,即上面第6条所提到的:元素的子孙元素的包含块(Containing blocks)是整个视窗(viewport)或是该元素的祖先元素,内容将不会被剪裁。包含块是什么呢?简单的说,就是可以决定一个元素位置和大小的块。通常一个元素的包含块由离它最近的块级祖先元素的内容边界决定。但当元素被设置成绝对定位时,包含块由最近的position不是static的祖先元素决定。

看起来有点绕,让我们来听个简单的故事吧。

html片段:


style:


上面的代码讲述的是这样一个故事:蓝色的海洋里有块红色的大地,红色大地内有个黄色的段子。由于段子样式的设置,它的部分内容超出了红色大地。为避免黄色段子污染到蓝色海洋,红色大地警惕的为自己设置了overflow:hidden;这样超出大地的黄色部分就被剪掉了,我们看到的将是这样一派和谐景象,如图1:

图1:和谐的星球

图1:和谐的星球

如果事物都是这样有理有序,天下可不就太平了。没多久,黄色段子觉得凭自己的显赫身份不该受红色大地的控制,于是绞尽脑汁将自己变改成了绝对定位,一下子就摆脱了大地的束缚,如图2:


图2:猖獗的段子

图2:猖獗的段子

为什么会这样呢?这便是创造了上面提到过的第6个条件。当黄色段子变成position:absolute时,它的包含块已由原来的红色大地的内容边界升级到了离它最近的position不是static的蓝色海洋了。而海洋此刻对此还一无所知呢,自身没有设置overflow:hidden属性,导致黄色段子本该被裁剪的部分全部可见,不仅污染到海洋,还影响到整个星球,情况万分火急啊。即使这时海洋设置上overflow:hidden,也只能将超出蓝色海洋的黄色部分剪裁,就像图3,海洋此时是手足无措啊。

图3:无辜的海洋

图3:无辜的海洋

俗语说的好,魔高一尺道高一丈,解铃还须系铃人。红色大地怎就甘心段子跑出去呢。怎么说大地终归是段子的祖先元素,怎么能甘心由着段子胡作非为呢。于是,大地历尽千辛,寻得秘籍,在自己的样式中添加position:relative属性,将段子的包含块又改成了大地来决定。这下段子就乖乖的被关起来了。星球看起来又回到了最初的状态。


所以说,hidden并没有失效,而是有可能我们遇到的情况恰好满足了第6个条件,使得元素的包含块发生了变化。上面的故事中,也提到了在遇到‘hidden’失效的情况时,可以根据需要来改变元素的包含块来达到正义的目的。

</div>

您可能想查找下面的文章:

  • 一个通俗小故事告诉你溢出隐藏(overflow:hidden)失效的原因

相关文章

  • 2017-06-02ie6下实现position:fixed效果实例介绍
  • 2017-06-02CSS之float在IE浏览器下换行问题解决方法
  • 2017-06-02Win7下Chrome字体渲染颜色太淡颜色不够黑的解决方法
  • 2017-06-02IE与Firefox中兼容的html设计中使用CSS改变鼠标为手形
  • 2017-06-02IE中css样式设置height无效的解决方法
  • 2017-06-02一句话解决傻傻的多核浏览器切换
  • 2017-06-02一切诋毁IE6的言论都是纸老虎 CSS Hacks
  • 2017-06-02IE6、IE7、IE8、Firefox兼容性CSS HACK代码及示例
  • 2017-06-02使用条件注释判断 IE 浏览器版本适用于IE5.0及以上版本
  • 2017-06-02ie6,ie7,firefox的textarea滚动条、边框

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • 兼容ie的内阴影和外阴影实现效果及测试代码
    • css滤镜兼容浏览器测试实例
    • css padding属性兼容ie6,ie8,firefox实例详解
    • ie9崩溃现象当js设置tr元素样式为display:none
    • DIV+CSS相对IE6 IE7和IE8浏览器行为区别及兼容性问题整理
    • 详解PNG图片
    • ie,360下html锚点失效问题解决
    • IE8 滤镜效果filter:alpha(opacity=20);IE下失效出现黑色
    • 浏览器兼容之旅第二站:各浏览器的Hack写法让浏览器达到一致的渲染效果
    • IE6/IE7下绝对定位position:absolute和margin的冲突问题解决

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有