zoukankan      html  css  js  c++  java
  • 关于Overflow: hidden 的理解

    推荐一个web开发技术博客,英文的 http://snook.ca/archives/

    Overflow: hidden 的使用

    引用:
    overflow 版本:CSS2  兼容性:IE4+ NS6+ 继承性:无

    语法:

    overflow : visible | auto | hidden | scroll

    参数:

    visible :  不剪切内容也不添加滚动条。假如显式声明此默认值,对象将被剪切为包含对象的window或frame的大小。并且clip属性设置将失效
    auto :  此为body对象和textarea的默认值。在需要时剪切内容并添加滚动条
    hidden :  不显示超过对象尺寸的内容
    scroll :  总是显示滚动条

    说明:

    检索或设置当对象的内容超过其指定高度及宽度时如何管理内容。
    设置textarea对象为hidden值将隐藏其滚动条。
    对于table来说,假如table-layout属性设置为fixed,则td对象支持带有默认值为hidden的overflow属性。如果设为hidden,scroll或者auto,那么超出td尺寸的内容将被剪切。如果设为visible,将导致额外的文本溢出到右边或左边(视direction属性设置而定)的单元格。
    自IE5开始,此属性在MAC平台上可用。

    overflow:hidden清除浮动

    一提到清除浮动,我们就会想到另外一个CSS样式:clear:both,我相信对于这个属性的理解大家都不成问题的。但是对于“浮动”这个词到底包含什么样的含义呢?我们下面来详细的阐述一下。

    <div id=”outside”>
    <div id=”inside”></div>
    </div>

    这是一个常用的div写法,下面我们来书写样式。大家可以在DMX中自己做试验

    #outside{ 500px; background:#000; height:500px;}

    #inside { float:left; 600px; height:600px; background:red;}

    可以看到,我给inside这个id加了一个浮动,我们常规的理解是,我们允许inside这个id的div的右边出现其他的内容,只要它的宽度不超过outside这个div和inside这个div的剩余值。如果div outside中还包含其他的div,我不允许它出现在inside的右侧,我们则用样式clear:both指定这个div,不允许它浮动在inside右侧。这些在ie6里面是正确的。但是在火狐或者其他浏览器里面,我们发现问题并非如此简单。我们发现,当inside这个div的宽度和高度都大于outside这个div的时候,outside并没有被内撑开而是依旧显示为我们指定的宽高。在我的例子中,都是500。这个时候我不理解了,我搜索了很多的资料,但是都没能理解这是为什么,直到看到别人在类似的情况下给outside这个div加了一个overflow:hidden这个属性解决了这个问题。我们直到overflow:hidden这个属性的作用是隐藏溢出,给outside加上这个属性后,我们的inside的宽高自动的被隐藏掉了。另外,我们再做一个试验,将outside这个div的高度值删除后,我们发现,outside的高度自动的被inside这个div的高度值给撑开了。

    说到这里,我们再来理解一下“浮动”这个词的含义。我们原先的理解是,在一个平面上的浮动,但是通过这个试验,我们发现,这不仅仅是一个平面上的浮动,而是一个立体的浮动!也就是说,当inside这个div加上浮动这个属性的时候,在显示器的侧面,它已经脱离了outside这个div,也就是说,此时的inside的宽高是多少,对于已经脱离了的outside来说,都是不起作用的。当我们全面的理解了浮动这个词的含义的时候,我们就理解overflow:hidden这个属性中的解释,清除浮动是什么意思了。也就是说,当我们给outside这个div加上overflow:hidden这个属性的时候,其中的inside等等带浮动属性的div的在这个立体的浮动已经被清除了。这就是overflow:hidden这个属性清除浮动的准确含义。

    当我们没有给outside这个div设置高度的时候,inside这个div的高度,就会撑开outside这个div,而在另一个方面,我们要注意到的是,当我们给outside这个div加上一个高度值,那么无论inside这个div的高度是多少,outside这个高度都是我们设定的值。而当inside的高度超过outside的高度的时候,超出的部分就会被隐藏。这就是隐藏溢出的含义!

     

    为了说明清除浮动的必要性,下面给个具体的例子:

    下面的页面,在IE各个版本下面显示会不一样,IE8和ff是一致的。但给outside加上overflow:hidden;则都显示一致了,这就是清除浮动的效果。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
     <style type="text/css">
       #outside{500px;background:#000;height:500px; }
      #inside{float:left;800px;height:800px;background:red;}
        </style>
    </head>
    <body>
     <div id="outside">
      <div id="inside">11</div>
     </div>
     <div style="">11111222</div>
    </body>
    </html>

  • 相关阅读:
    ubuntu下安装maven
    159.Longest Substring with At Most Two Distinct Characters
    156.Binary Tree Upside Down
    155.Min Stack
    154.Find Minimum in Rotated Sorted Array II
    153.Find Minimum in Rotated Sorted Array
    152.Maximum Product Subarray
    151.Reverse Words in a String
    150.Evaluate Reverse Polish Notation
    149.Max Points on a Line
  • 原文地址:https://www.cnblogs.com/ymj0906/p/2550100.html
Copyright © 2011-2022 走看看