繁体   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