获取内嵌块元素的高度以填充父项
我有两个物品的容器。 其中一个项目是select
元素,所以我需要通过HTML来设置size
属性。 我想要容器中的其他项目伸展其高度以适应容器。 我无法弄清楚。 我不想明确设置容器的高度,因为我不知道该select框的大小。
.container { padding: 5px; border: 1px solid black; } .container .column { display: inline-block; width: 40%; background-color: #AAA; padding: 5px; margin: 5px; vertical-align: top; height: 100%; } select { width: 100%; }
<div class="container"> <div class="column">Stretch to fill?</div> <div class="column"> <select size="15"> <option>Option 1</option> <option>Option 2</option> </select> </div> <div>
如果table-cell
是一个选项,这是一个办法:
.container { display: table; width: 100%; padding: 5px; border: 1px solid black; } .container .column { display: table-cell; width: 40%; background-color: #AAA; padding: 5px; border: 5px solid white; vertical-align: top; height: 100%; } select { width: 100%; }
<div class="container"> <div class="column">Stretch to fill?</div> <div class="column"> <select size="15"> <option>Option 1</option> <option>Option 2</option> </select> </div> <div>
如果我明白你在说什么,你正面临着100%的高度问题。 我很抱歉告诉你,没有实际的解决scheme,但“黑客”。
在这里你可以find几种解决方法。 我喜欢使用一种真正的布局方法。
顺便说一下,这是想你不想使用实验css3列属性。
这里没有答案给了我安慰,所以我去了寻找真相。 我添加了一些更多的CSS来指出两个盒子之间的间距。
CSS:
.wrapper { background-color:gray; } .container { margin: 25px auto; display: inline-flex; } .leftbox { height: inherit; display: inline-block; border: 1px solid #D7D2CB; background-color: #FFFFFF; border-radius: 5px; max-width: 550px; margin-right: 18px; align-items: stretch; padding: 15px; width: 100%; } .rightbox { height: 100%; display: inline-block; border: 1px solid #D7D2CB; background-color: #FFFFFF; border-radius: 5px; align-items: stretch; max-width: 300px; width: 100%; padding: 20px 15px; }
HTML:
<div class="wrapper"> <div class="container"> <div class="leftbox"> There is something here, I am not avoiding it. </div> <div class="rightbox"> Probably something else here but much much much much much much much much much much much much much much much much much much much much much much much much much much much much much bigger. </div> </div> </div>
检查codepen: https ://codepen.io/anon/pen/XRNMMp
我也需要一个伪元素的例子:
.cf:before, .cf:after { content: " "; /* 1 */ display: table; /* 2 */ } .cf:after { clear: both; } *, *:before, *:after { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } .faux-columns { width: 80%; margin:3em auto; background-image: -webkit-linear-gradient(left, #f2f7fa 25%, #fff 75%); background-image: -moz-linear-gradient(left, #f2f7fa 25%, #fff 75%); background-image: -o-linear-gradient(left, #f2f7fa 25%, #fff 75%); background-image: linear-gradient(left, #f2f7fa 25%, #fff 75%); background: -webkit-gradient(linear, left top, right top, color-stop(0%,#f2f7fa), color-stop(25%, #f2f7fa), color-stop(25%,#ffffff), color-stop(100%,#ffffff)); background: -moz-linear-gradient(left, #f2f7fa 0%, #f2f7fa 25%, #ffffff 25%, #ffffff 100%); background: -webkit-gradient(linear, left top, right top, color-stop(0%,#f2f7fa), color-stop(25%,#f2f7fa), color-stop(25%,#ffffff), color-stop(100%,#ffffff)); background: -o-linear-gradient(left, #f2f7fa 0%,#f2f7fa 25%,#ffffff 25%,#ffffff 100%); background: -ms-linear-gradient(left, #f2f7fa 0%,#f2f7fa 25%,#ffffff 25%,#ffffff 100%); background: linear-gradient(left, #f2f7fa 0%,#f2f7fa 25%,#ffffff 25%,#ffffff 100%); border:1px solid #c1c1c2; } .col-1, .col-2 { float:left; vertical-align:top; padding:2em 3em; } .col-1 { position:relative; width:25%; background:#F2F7FC; border-right:1px solid #c1c1c2; } .col-2 { width:75%; border-left:1px solid #c1c1c2; margin-left: -1px; } .col-1:after, .col-1:before { top:100%; border:solid transparent;content:""; height:0; width:0; position:absolute; pointer-events:none; display:block; } .col-1:after { border-color: rgba(255, 255, 255, 0) rgba(255, 255, 255, 0) rgba(255, 255, 255, 0) #f2f7fa; border-style: solid; border-width: 21px 0 21px 22px; left:100%; top: 47px; } .col-1:before { border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #c1c1c2; border-style: solid; border-width: 22px 0 22px 23px; left: 100%; top: 46px; }
<div class="faux-columns cf"> <div class="col-1"> <h4>First column with bordered triangle pseudo element attached to it. The background needs to be the full height of .faux-columns</h4> </div> <div class="col-2"> <h4> Second column which in some cases will be much taller than column</h4> There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc. </div> </div>