簡體   English   中英

CSS內嵌式電路板對齊

[英]CSS inline-block board alignment

我正在嘗試使用CSS構建Sudoku樣式板,但在獲取一些正方形對齊時遇到了一些麻煩。 我想念什么??

CODEPEN

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;
}

演示: http//codepen.io/anon/pen/xbwBvG

這是一個完美的數獨板:

codepen

 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">

邊框為元素(外部空間)增加了邊距,因此邊框位於某些項目上而不是其他項目上,導致它們無法對齊。 而不是使用邊框而不使用邊框,只需在不希望出現邊框時將其顏色更改為透明。

檢查此代碼

CodePen

.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM