使用 float 时 CSS 显示不继承

标签 css inheritance css-float

我正在使用 Zurb Foundation 并且有一个带有 display: inherit !important; 的元素。我不能(至少不应该)改变这条规则,因为它是 Foundation 的一部分。

我希望这个元素与其父元素具有相同的显示,即 inline-block。但是,它的父项具有属性 float: right,这似乎阻止了子项继承其 display 属性。

我写了一个基本的例子: http://jsfiddle.net/ew1fkps2/1/

HTML:

<div class="a">
    <div class="b">
        <div class="c">
            I should have display: inline-block;
        </div>
    </div>
</div>

CSS:

.a {
    display: block;
}
.b {
    float: right;
    display: inline-block;
}
.c {
    display: inherit !important;
}

我尝试添加其他线程中建议的许多属性,这些属性具有类似(但不同)的问题(overflow: hiddenposition: relative...),但没有修复

所以我的问题是为什么会发生这种情况,我该如何解决?

最佳答案

本质上,float 属性使计算的显示值 block ...所以这就是被继承的内容。

参见:Float @ MDN

与其尝试在所需的子项上使用 display:inline-block,不如将它们也 float ...如下所示:

.a {
  display: block;
}
.b {
  float: right;
  background: red;
}
.c {
  background: #f06d06;
  float: left;
  padding-left: 1rem;
}
<div class="a">
  <div class="b">
    <div class="c">I'm floated</div>
    <div class="c">So am I</div>
    <div class="c">Me too.</div>
  </div>
</div>

关于使用 float 时 CSS 显示不继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584078/

相关文章:

html - 在导航菜单中插入 Logo ,我正在使用 bootstrap3

css - 移动站点 : title shrink or background image re-size

c++ - 从返回基类指针的派生类对象调用方法

CSS:用底部对齐的文本包装一个 float 的div

css - 两列侧边栏无法正确呈现

javascript - 如何使菜单在更改浏览器或缩放时保持不变并且不移动

javascript - 用于 iPhone 应用程序的 jquery 中的 slider 导航菜单

c# - 在 C++ 中允许的函数在 C# 中不允许?

javascript - 将方法继承到除基元之外的所有对象

CSS Calc 似乎破坏了 IE10 中的整个浏览器?虽然适用于 IE9&11