【问题标题】:How do i keep a set of elements wrapped in a div inline?我如何保持一组包含在 div 内联中的元素?
【发布时间】:2018-07-08 10:55:43
【问题描述】:

https://jsfiddle.net//2L4t9saq/61/ 是我的代码 这是一行迭代的输出

<span class="inline"><div class="pixels" x="1" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="2" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="3" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="4" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="5" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="6" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="7" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="8" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="9" y="1" style="background-color: red; width: 10px; height: 10px;"></div><div class="pixels" x="10" y="1" style="background-color: red; width: 10px; height: 10px;"></div></span>

这将创建 10 个宽度/高度为 10 像素的 div,背景颜色为红色,所有 10 个 div 都包含在 span 中,类为 inline。然后将这个过程重复 10 次以创建 10*10 数组。

这个可以配置,目前可以配置的只有数组的宽高,每个像素的宽高

目前它只是一条垂直的 100 块红色方块线。

如何让所有包裹在 classinline 中的元素保持内联?把它从 1*100 的线变成 10*10 的正方形

提前致谢

/*
$("#body").append(
"<div x='1'></div>"
);
$("div[x=1]").css("background-color","red")
$("div[x=1]").css("width","16")
$("div[x=1]").css("height","16")
*/
var createGrid = function(dimx, dimy, pixx, pixy) {
  for (var n = 1; n < dimy + 1; n++) {
    var str = "<div class='inline'>"

    for (var i = 1; i < dimx + 1; i++) {
      var opentag = "<div class='pixels' x='"
      var midtag = "' y='"
      var endtag = "'></div>"
      str = str + opentag + i + midtag + n + endtag

    }
    str = str + "</div>"

    $("#main").append(str)
  }
  $(".pixels").css("background-color", "red")
  $(".pixels").css("width", pixx)
  $(".pixels").css("height", pixy)

};
createGrid(10, 10, 10, 10)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div canvas="canvas" id="main">

</div>

【问题讨论】:

  • divs 不应该是 spans 的子代(只要 spans 是内联的,而 divs 不是...)
  • &lt;div&gt; 元素默认是块元素,如果你想让它们内联显示,那么你需要链接它们的display css 属性。但你没有,至少不在你的小提琴中
  • 这一切都很好帕特里克,但我会改变显示属性来完成它?

标签: javascript html css arrays inline


【解决方案1】:

span 应该在div 内,并使它们能够指定宽度/高度

var createGrid = function(dimx,dimy,pixx,pixy){
for(var n = 1; n <dimy+1; n++){
	var str = "<div>"

		for(var i=1;i<dimx+1;i++){
			var opentag = "<span class='pixels' x='"
  	  var midtag = "' y='"
    	var endtag = "'></span>"
   		str = str+opentag+i+midtag+n+endtag
      
		}
    str=str+"</div>"

    $("#main").append(str)
   }
$(".pixels").css("background-color","red")
$(".pixels").css("width",pixx)
$(".pixels").css("height",pixy)

};
createGrid(10,10,10,10)
#main {
  font-size:0; /* To fix white-space issue*/
}

.pixels {
  display:inline-block;
  border:1px solid;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div canvas="canvas" id="main">

</div>

【讨论】:

    【解决方案2】:

    canvas div 上添加display: flex。 并且不需要将内联元素设为 span,而是将其设为 div。

    /*
    $("#body").append(
    "<div x='1'></div>"
    );
    $("div[x=1]").css("background-color","red")
    $("div[x=1]").css("width","16")
    $("div[x=1]").css("height","16")
    */
    var createGrid = function(dimx, dimy, pixx, pixy) {
      for (var n = 1; n < dimy + 1; n++) {
        var str = "<div class='inline'>"
    
        for (var i = 1; i < dimx + 1; i++) {
          var opentag = "<div class='pixels' x='"
          var midtag = "' y='"
          var endtag = "'></div>"
          str = str + opentag + i + midtag + n + endtag
    
        }
        str = str + "</div>"
    
        $("#main").append(str)
      }
      $(".pixels").css("background-color", "red")
      $(".pixels").css("width", pixx)
      $(".pixels").css("height", pixy)
    
    };
    createGrid(10, 10, 10, 10)
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div canvas="canvas" id="main" style="display: flex;">
    
    </div>

    【讨论】:

    • 你肯定到处都能看到 flexbox :)
    • 哈哈哈,是的,我愿意,,,;)
    【解决方案3】:

    父元素应该是display: block,内部元素可以是display: inline-block,以便它们以类似网格的方式显示。仅更改 CSS:

    var createGrid = function(dimx, dimy, pixx, pixy) {
      for (var n = 1; n < dimy + 1; n++) {
        var str = "<span class='inline'>"
    
        for (var i = 1; i < dimx + 1; i++) {
          var opentag = "<div class='pixels' x='"
          var midtag = "' y='"
          var endtag = "'></div>"
          str = str + opentag + i + midtag + n + endtag
    
        }
        str = str + "</span>"
    
        $("#main").append(str)
      }
      $(".pixels").css("background-color", "red")
      $(".pixels").css("width", pixx)
      $(".pixels").css("height", pixy)
    
    };
    createGrid(10, 10, 10, 10)
    .inline {
      display: block;
      height: 10px;
    }
    
    .pixels {
      display: inline-block
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div canvas="canvas" id="main">
    
    </div>

    但最好将spans 放在divs 中,而不是反过来(div 默认为display: block):

    var createGrid = function(dimx, dimy, pixx, pixy) {
      for (var n = 1; n < dimy + 1; n++) {
        var str = "<div>"
    
        for (var i = 1; i < dimx + 1; i++) {
          var opentag = "<span class='pixels' x='"
          var midtag = "' y='"
          var endtag = "'></span>"
          str = str + opentag + i + midtag + n + endtag
    
        }
        str = str + "</div>"
    
        $("#main").append(str)
      }
      $(".pixels").css("background-color", "red")
      $(".pixels").css("width", pixx)
      $(".pixels").css("height", pixy)
    
    };
    createGrid(10, 10, 10, 10)
    .pixels {
      display: inline-block
    }
    
    #main > div {
      height: 10px
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div canvas="canvas" id="main">
    
    </div>

    【讨论】:

    • 谢谢,这可行,但它会产生白色换行符,我该如何阻止这种情况发生?我用边距/填充移动它们吗?
    • 在父元素的样式中添加height: 10px,见编辑
    • 添加 height:10px 是一个hack,不是一个好主意..添加overflow:hidden 你会看到会发生什么......换行符是由于字体大小/行高和内联块被视为文本的事实。所以你应该减少 line-height 或 font-size
    猜你喜欢
    • 2023-03-09
    • 2013-03-04
    • 2016-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多