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