当前位置: 首页 > 面试题库 >

CSS溢出:隐藏在浮点数中

赵河
2023-03-14
问题内容

我在w3schools上阅读了以下代码,但不了解该overflow属性如何影响文本是否显示在右侧ul

ul {

  list-style-type: none;

  margin: 0;

  padding: 0;

  overflow: hidden;

}



li {

  float: left;

}



a {

  display: block;

  width: 60px;

  background-color: #dddddd;

  padding: 8px;

}


<ul>

  <li><a href="#home">Home</a></li>

  <li><a href="#news">News</a></li>

  <li><a href="#contact">Contact</a></li>

  <li><a href="#about">About</a></li>

</ul>

<p><b>Note:</b> overflow:hidden is added to the ul element to prevent li elements from going outside of the list.</p>

我知道它overflow:hidden用于处理超出范围的内容,但不了解它在这种情况下如何应用。


问题答案:

我尽力消除混乱:

ul是一个块级元素,与p元素一样(它们延伸到父宽度的100%)。这就是为什么默认情况p下,ul如果在这些元素上未声明宽度或显示,它将显示在if
下方的原因。

现在在您的示例中,ul仅包含浮动元素。这使其折叠到一个高度0px(尽管如示例中所示,它仍然具有100%的宽度)。相邻元素p将出现在float
lis 的右侧,因为它们被视为普通float元素。

现在,声明overflow(除以外的任何值visible)将建立一个新的块格式化上下文,从而使ul包含其子级。突然,ul“重新出现”,不再有大小0px。该p是越来越被推到了底部。您还可以声明position:absolute实现相同的“清除”效果(副作用是现在ul从正常元素流中删除了,而ps将与重叠ul。)

如果您对技术感兴趣,请比较CSS规范的相应段落:

当’overflow’计算为’visible’
和 §10.6.7’Auto’高度以对块格式上下文根进行格式化时,正常流程中的§10.6.3块级不可替换元素。(感谢BoltClock挖掘出链接)。

ul{

    list-style-type:none;

    margin:0; padding:0;

    background-color:#dddddd;

    border:2px solid red;

}

li{

    float:left;

}

a{

    display:block;

    width:60px;

    background-color:#555;

    color:white;

}

p{

    margin:0;

    outline:2px dotted blue;

}

#two{

    clear:both;

    overflow:hidden;

}


No overflow:

<ul>

<li><a href="#home">Home</a></li>

<li><a href="#news">News</a></li>

<li><a href="#contact">Contact</a></li>

<li><a href="#about">About</a></li>

</ul>

<p>Notice the collapsed ul - no background-color visible, collapsed border and this paragraph treats the lis as regular floats  </p>

<br>

With overflow: hidden

<ul id="two">

<li><a href="#home">Home</a></li>

<li><a href="#news">News</a></li>

<li><a href="#contact">Contact</a></li>

<li><a href="#about">About</a></li>

</ul>

<p>the ul reappeared - it now contains the child li's - the float is cleared</p>


 类似资料:
  • 问题内容: 问题很简单而且简短:为什么要清除浮动?我查看了w3标准文档,但没有任何暗示。 问题答案: 因为当您与其他任何东西一起使用时会建立一个新的块格式设置上下文(链接到w3.org规范)。

  • 问题内容: 我一直在努力奋斗。我想绝对定位将在div中移动的图像,并希望剪切超出div的任何内容。这是问题的示例: 因此,我希望徽标的右边缘不显示。有想法吗? 问题答案: 由于图像的容器是绝对放置的,因此它不在“包含” div的范围之内。 您的选择是使用jQuery动态定位相对位置或调整绝对定位div的尺寸。

  • 问题内容: 作为一名Web开发人员,我经常在另一个(父)div中有两个浮动(子)div。实际上,我整天都这样做。 如果没有额外的css / html,这将无法工作,因为父级不会自动增长以适应浮动子级。有两种流行的克服方法: 1)添加到父级的CSS中。 2)添加第三个“清除”子级。 我知道关于此类事情还有其他一些类似的问题,但是我的问题是: 哪种方法更好,为什么?各自的优缺点是什么? 问题答案: 隐

  • 问题内容: 假设您有一些样式和标记: 当您查看此内容时。该有一个在底部的滚动条,即使我已经溢出X / Y指定的可见和隐藏价值。 (在Chrome 11和Opera(?)上观察到 我猜测一定有一些w3c规范或某些东西可以告诉我这种情况的发生,但是对我而言,我无法弄清楚为什么。 更新:- 我找到了一种方法,可以通过添加另一个包裹在周围的元素来达到相同的结果。一探究竟。 问题答案: 在Gecko,Saf

  • 问题内容: 这是我的 owl/动画的JSFIDDLE,没有任何清楚显示的问题 。据我了解,这是由引起的, 可能是由于引起的。 drop-shadows border-radius overflow: hidden; owl不是这个问题的意思,只是我所遇到的类似情况的一个示例。jsfiddle / cat是这个问题的意思,对不起, 混淆! 这是我的猫的JSFIDDLE,具有使用blura属性的插入框

  • 嗯,我也试着把它藏在身体里!还是不工作..?