0

我想使用父 div 中的所有可用空间来居中 div。
看看这个jsfiddle。使用这种方法,无论父对象的宽度如何,div 都将浮动在中心,从而在行的远端创建如此多的空白。
在此处输入图像描述 但我想让第一个和最后一个黄色盒子分别贴在左右边缘,中间的盒子应该漂浮在中间。
当我调整父 div 的大小时,子 div 应该会自动调整自己。
是否可以?
另一个问题,这是一个延续,我可以从标记中删除“行”div并仍然获得相同的结果吗?

HTML:

<div class="container">
<div class="row">
    <div>Row 1 1</div>
    <div>Row 1 2</div>
    <div>Row 1 3</div>
    <div>Row 1 4</div>
</div>
<div class="row">
    <div>Row 2 1</div>
    <div>Row 2 2</div>
    <div>Row 2 3</div>
    <div>Row 2 4</div>
</div>
</div>

CSS:

body{
    margin: 0;
    padding: 0;
}

.container{
    border: 1px solid #2aF1E2;
    overflow: hidden;
}

.row{
    margin: 10px;
    border: 1px solid #2351E2;
    overflow: hidden;
    text-align: center;
}

.row div{
    margin: 10px 0 10px 0;
    display: inline-block;
    width: 100px;
    border: 1px solid #eac300;  
    padding: 5px;
    text-align: initial;
}
4

3 回答 3

2

您正在寻找的是所谓的Flexbox。无论如何,如果你买得起一个包装,我想你可以使用它。

但是使用纯 CSS 你可以这样做:

HTML

<div class="container">
<div class="row">
    <div class="wrap left"><div>Row 1 1</div></div>
    <div class="wrap mid"><div>Row 1 2</div></div>
    <div class="wrap mid"><div>Row 1 3</div></div>
    <div class="wrap right"><div>Row 1 4</div></div>
</div>
<div class="row">
    <div class="wrap left"><div>Row 2 1</div></div>
    <div class="wrap mid"><div>Row 2 2</div></div>
    <div class="wrap mid"><div>Row 2 3</div></div>
    <div class="wrap right"><div>Row 2 4</div></div>
</div>
</div>

CSS

.row div div{
    margin: 10px 0 10px 0;
    display: inline-block;
    width: 100px;
    border: 1px solid #eac300;  
    padding: 5px;
    text-align: initial;
}

.wrap {width: 25%; float: left;}

截屏

小提琴:http: //jsfiddle.net/praveenscience/p8DGH/3/

于 2013-04-02T04:11:22.683 回答
1

留下你现在拥有的标记,你可以用 Flexbox 得到你想要的东西。

http://jsfiddle.net/4CXuy/3/

.container {
  border: 1px solid #2aF1E2;
}

.row {
  margin: 10px;
  border: 1px solid #2351E2;
  display: -webkit-box;
  display: -moz-box;
  display: -webkit-flexbox;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
  -webkit-box-pack: justify;
  -moz-box-pack: justify;
  -webkit-flex-pack: justify;
  -ms-flex-pack: justify;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}

.row div {
  margin: 10px 0 10px 0;
  display: inline-block;
  width: 100px;
  border: 1px solid #eac300;
  padding: 5px;
}

如果要删除.row元素,则必须使用百分比来确保您的项目正好排成 4 列。

http://caniuse.com/#feat=flexbox

于 2013-04-02T03:04:33.823 回答
0

我认为这并不理想,但是:

body{
    margin: 0;
    padding: 0;
}

div{
    margin: 0;
    padding: 0;
}

.container{
    border: 1px solid #2aF1E2;
    overflow: hidden;
}

.row{
    margin: 10px;
    border: 1px solid #2351E2;
    overflow:hidden;
    text-align: center;
}

.row div{
    margin: 10px 0 10px 0;
    display: inline-block;
    width: 100px;
    border: 1px solid #eac300;  
    padding: 5px;
    text-align: initial;
}

.row div:first-child {
    float: left;
    margin-left: 5px;
}

.row div:last-child {
    float: right;
    margin-right: 5px; 
}

这是jsfiddle

更新:

.row div{
    margin: 10px 5% 10px 5%;
    display: inline-block;
    width: 100px;
    border: 1px solid #eac300;  
    padding: 5px;
    text-align: initial;
}

.row div:first-child {
    float: left;
}

.row div:last-child {
    float: right;   
}

它仍然不能 100% 工作,例如当屏幕尺寸太小时会发生一些奇怪的事情,但我有点期望使用百分比。

于 2013-04-02T01:35:19.270 回答