[英]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.