2017-11-18 82 views
1

我正在尝试使用CSS创建正方形的“网格”。到目前为止,我已经试过:如何用CSS创建一个正方形数组的新行

.square { 
 
    display: block; 
 
    float: left; 
 
    border: 1px solid black; 
 
    width: 50px; 
 
    height: 50px; 
 
    margin: 30px; 
 
}
<div> 
 
    <div class="square"></div> 
 
    <div class="square"></div> 
 
    <div class="square"></div> 
 
</div> 
 

 
<div> 
 
    <div class="square"></div> 
 
    <div class="square"></div> 
 
    <div class="square"></div> 
 
</div>

然而,这只是显示在连续6个格。不过,我想每行都有两排3格。为什么包含div没有'正常'的行为,他们显示在彼此之下?

+1

尝试写在所提供的插件的jsfiddle你的问题。 – Adriano

+1

尊敬的是,你的例子中没有方阵。这是几个'div'元素。请参阅CSS的新Grid或CSS Flexbox,具体取决于您的需要。 –

回答

1

你要清楚你的floatting元素

https://css-tricks.com/all-about-floats/

清除浮动

浮动的姐妹的财产是明确的。具有明确的属性上设置一个元素不会往上移靠近浮像漂浮的欲望,但将自身向下移动过去的浮动....

.square { 
 
    display: block; 
 
    float: left; 
 
    border: 1px solid black; 
 
    width: 50px; 
 
    height: 50px; 
 
    margin: 30px; 
 
} 
 
body>div {overflow:hidden;}
<div> 
 
    <div class="square"></div> 
 
    <div class="square"></div> 
 
    <div class="square"></div> 
 
</div> 
 

 
<div> 
 
    <div class="square"></div> 
 
    <div class="square"></div> 
 
    <div class="square"></div> 
 
</div>

0

像这样的东西?

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<style> 
 

 
.square-wrapper { 
 
width: 276px; 
 
} 
 
.square { 
 
    display: inline-block; 
 
    float: left; 
 
    border: 1px solid black; 
 
    width: 30px; 
 
    height: 50px; 
 
    margin: 30px; 
 
} 
 
</style> 
 
</head> 
 
<body> 
 

 
<div class="square-wrapper"> 
 
<div class="square">1</div> 
 
<div class="square">2</div> 
 
<div class="square">3</div> 
 
</div> 
 

 
<div class="square-wrapper"> 
 
<div class="square">4</div> 
 
<div class="square">5</div> 
 
<div class="square">6</div> 
 
</div> 
 

 
</body> 
 
</html>

1

这是因为float: left

选项1:

display:inline-block使用代替float:left

.square { 
 
    display: inline-block; 
 
    border: 1px solid black; 
 
    width: 50px; 
 
    height: 50px; 
 
    margin: 30px; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 

 
<div> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
</div> 
 

 
<div> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
</div> 
 

 
</body> 
 
</html>

选项2 使用clearfix在父DIV:

.square { 
 
    display: block; 
 
    float: left; 
 
    border: 1px solid black; 
 
    width: 50px; 
 
    height: 50px; 
 
    margin: 30px; 
 
} 
 
.parent{ 
 
    \t clear: both; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
</head> 
 
<body> 
 

 
<div class="parent"> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
</div> 
 

 
<div class="parent"> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
</div> 
 

 
</body> 
 
</html>

0

您可以将块放在包含具有固定宽度的div的内部。这将强制块根据其显示类型进行堆栈。例如,将容器的宽度设置为400px可为连续的三个块提供足够的空间。框架使用一个对于创建均匀分散在容器中的网格非常有用的系统。

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
<style> 
 
.square { 
 
    display: block; 
 
    float: left; 
 
    border: 1px solid black; 
 
    width: 50px; 
 
    height: 50px; 
 
    margin: 30px; 
 
    } 
 
.container { 
 
    width:400px; 
 
    } 
 
</style> 
 
</head> 
 
<body> 
 

 
<!-- Place all of your blocks in a single container --> 
 

 
<div class="container"> 
 

 
<div class="square"></div> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
<!-- The container is not large enough to display all of the blocks in one row --> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
<div class="square"></div> 
 
</div> 
 

 
</body> 
 
</html>

相关问题