css - float div 之间的均匀间距

标签 css css-float

我想均匀地 float 3 个 div(或更一般地说)。 我正在构建一个响应式主题(有点),我希望特定元素根据可用宽度进行相应调整。

现在是的,我可以开始进行随机屏幕测量并计算“断点”(我通常做的)但是有这么多设备,我想看看我是否可以以更智能的方式做出真正灵活的东西我,会更自动化。 就像当一个人甚至与说 margin 0px auto; 等对齐时......

举个例子。如果我的父 div 的宽度为 1000px,而我想要 float 的 div1div2div3div4比如,240px 宽,间距“均匀”,id 可能会这样做。

div1{ float:left; max-width:XXX; min-width:XXX; margin-right:10px; }
div2{ float:left; max-width:XXX; min-width:XXX; margin-right:10px; }
div3{ float:left; max-width:XXX; min-width:XXX; margin-right:10px; }
div4{ float:right; max-width:XXX; min-width:XXX; }

这或多或少会给我均匀的间距。如果我想适应不同的屏幕,id 可能会做一个媒体查询和 blah blah blah

然后 id 必须从数学开始,才能做出看起来均匀的好断点。

有没有办法让 float 的 div 之间的间距保持不变,而无需输入特定数字?再次举个例子,比如当一个人做 margin 0px auto; 例如???

之前可能有人问过,如果问过,我深表歉意。

提前致谢。

最佳答案

如果您的标记看起来与此类似...

<div class="parent">
    <div>a</div>
    <div>b</div>
    <div>c</div>
    <div>c</div>
</div>

Flexbox 可以很容易地做到这一点,你不需要为更窄的设备使用媒体查询。它只是为您重新分配可用空间。

http://jsfiddle.net/END8C/ (包括所有前缀)

.parent {
  display: -webkit-flexbox;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: row wrap;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
  -webkit-flex-pack: justify;
  -ms-flex-pack: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  margin: -5px; /* optional */
  overflow: hidden; /* optional */
}

.parent div {
  -webkit-flex: 0 0 240px;
  -ms-flex: 0 0 240px;
  flex: 0 0 240px;
  margin: 5px;
}

您仍然可以自由地在子元素上使用 float 作为不支持 flexbox 的浏览器的后备(参见:http://caniuse.com/#search=flexbox)。唯一需要注意的是 Firefox 不支持换行,因此您必须为无前缀版本使用 @supports block (参见:http://www.sitepoint.com/supports-native-css-feature-detection/)。

你可以通过使用 justification 来获得类似的效果:

http://jsfiddle.net/END8C/1/

.parent {
    text-align: justify;
    margin: -5px; /* optional */
}

.parent:after {
    content: " ";
    display: inline-block;
    width: 100%;
}

.parent div {
    display: inline-block;
    margin: 5px;
    width: 240px;
}

您需要注释掉或删除最后一个子元素之后的所有空格,否则当子元素换行时它们不会正确排列。

关于css - float div 之间的均匀间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15039657/

相关文章:

html - 为什么在不使用属性 float 的情况下使用 <div> 之一时 float 在此示例中不起作用?

CSS:text-align-last 在 chrome 中不起作用?

html - "overflow"对这个 <ul> 标签有什么作用?

CSS:页脚撞到内容区域

html - 在CSS中计算高度

html - CSS float 元素

image - CSS3 居中裁剪图像

javascript - 制作视频作为我的网站图标播放

html - CSS - 父元素下任何位置的第一个元素的选择器

css - 如何创建网格/平铺 View ?