[英]Auto resize content to div
我有一个<div class="row">
,它将包含动态生成的按钮(基本上我需要使用框)
我需要父div的大小固定,但需要根据插入的按钮数自动调整其内容的大小(以适应一行中的所有内容)。
考虑以下布局:
我尝试过的所有解决方案都需要固定宽度,否则将在新行中绘制方框。
我的最后一个选择是使用ng-style并将宽度设置为100 /箱数。 我需要其他解决方案。
到目前为止我尝试过的一件事:
.wrap {
width:80%;
margin:0 auto;
}
.wrap div {
width:23%;
padding-bottom:23%;
margin:1%;
float:left;
background:gold;
}
<div class="wrap">
<div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div>
</div>
使用flexbox
div { display: flex; } button { flex: 1 1; }
<div> <button>1</button> <button>2</button> <button>3</button> <button>4</button> </div>
例如 与您的代码。
.wrap { width: 80%; margin: 0 auto; display: flex; } .wrap div { flex: 1 1; padding-bottom: 23%; background: gold; border: 1px solid; }
<div class="wrap"> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </div>
仅使用flexbox不会削减它。 如果您需要在添加更多框时保持框的正方形形状,则还需要使用一些JavaScript。
我们在做什么?
var flex = document.getElementById("container"); var box = document.getElementById("box1"); var i=1; function add() { i++; var cln = box.cloneNode(true); cln.removeAttribute("id"); flex.appendChild(cln); flex.style.height=(flex.clientWidth/i) + 'px'; }
.flexc { display: flex; width: 400px; height:400px; } .box { flex: 1; border-radius: 20px; background: olive; margin:1px; }
<button id="add" onclick="add()">Add more boxes</button> <div class="flexc" id="container"> <div class="box" id="box1"></div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.