[英]CSS inline-block board alignment
我正在尝试使用CSS构建Sudoku样式板,但在获取一些正方形对齐时遇到了一些麻烦。 我想念什么??
HTML
<div class="middle-box">
<div class="sudoku">
<div class="square">
<input class="tile normal edge-left edge-top">
<input class="tile normal edge-top">
<input class="tile normal edge-top">
<input class="tile normal edge-left">
<input class="tile normal">
<input class="tile normal">
<input class="tile normal edge-left">
<input class="tile normal">
<input class="tile normal">
</div>
CSS:
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
background: #ecf0f1;
background-size: cover;
font-family: "Slabo 27px", serif; }
a {
text-decoration: none;
transition: all 0.3s; }
.sudoku {
width: 460px;
height: 460px;
background: #2c3e50;
border: 20px solid #2c3e50;
position: absolute;
left: 0;
top: 0; }
....
由于您的输入是行内块元素,因此浏览器也尊重它们之间的空白,并且由于它们也占用一些空间,因此当输入不再适合行时,您将获得观察到的结果。
最简单的解决方法是在包装容器上设置font-size: 0
,以使空白有效地变为0宽度。 这不会影响输入字体大小设置:
.sudoku {
/* ... */
font-size: 0;
}
这是一个完美的数独板:
html, body { width: 100%; height: 100%; margin: 0; padding: 0; background: #ecf0f1; background-size: cover; font-family: "Slabo 27px", serif; } a { text-decoration: none; transition: all 0.3s; } .sudoku { width: 463px; height: 463px; background: #2c3e50; border: 20px solid #2c3e50; position: absolute; left: 0; top: 0; } .square { width: 153px; height: 153px; display: inline-block; vertical-align: top; background: #8aa4be; margin-right: 1px; margin-bottom: 1px; } .normal { padding: 0; border: none; outline: none; font-family: inherit; } .tile { width: 50px; height: 50px; background: #fff; border-top: 1px solid #8aa4be; border-left: 1px solid #8aa4be; font-size: 20px; text-align: center; color: #ccc; line-height: 50px; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -o-user-select: none; -ms-user-select: none; user-select: none; } .edge-left { border-left: 1px solid #2c3e50; } .edge-top { box-shadow: 0 -1px 0 0px #2c3e50; border: none; padding-top: 1px; } .middle-box { position: absolute; top: 50%; left: 50%; width: 500px; height: 500px; margin-top: -250px; margin-left: -250px; } /*# sourceMappingURL=style.css.map */
<div class="middle-box"> <div class="sudoku"> <div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div ><div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div ><div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div ><div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div ><div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div ><div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div ><div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div ><div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div ><div class="square"> <input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal" ><input class="tile normal"> </div </div> </div>
display:inline-block;
添加空格。 如果要使用display:inline-block;
那么您必须删除所有其他空格,然后使用float:left;
适用于.tile类
.tile {
width: 50px;
height: 50px;
background: #fff;
border-top: 1px solid #8aa4be;
border-left: 1px solid #8aa4be;
display: inline-block;
font-size: 20px;
text-align: center;
color: #ccc;
line-height: 50px;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
-ms-user-select: none;
user-select: none;
float:left // added}
HTML
<input class="tile normal edge-left edge-top"><input class="tile normal edge-top"><input class="tile normal edge-top"><input class="tile normal edge-left"><input class="tile normal"><input class="tile normal"><input class="tile normal edge-left"><input class="tile normal"><input class="tile normal">
边框为元素(外部空间)增加了边距,因此边框位于某些项目上而不是其他项目上,导致它们无法对齐。 而不是使用边框而不使用边框,只需在不希望出现边框时将其颜色更改为透明。
检查此代码
.sudoku {
width: 530px; //edited
height: 470px; //edited
.
.
.
}
.square {
width: 170px; //edited
display: inline-block;
background: #8aa4be;
border:1px solid red;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.