我有一个有两件物品的容器。其中一个项目是select
元素,因此我需要通过HTML设置size
属性。我希望容器中的其他项目伸展其高度以适合容器。我无法弄清楚。我不想明确设置容器的高度,因为我不知道该选择框的大小。
.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>
答案 0 :(得分:57)
如果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>
答案 1 :(得分:19)
如果我理解你在说什么,你就会遇到100% height columns问题。我很遗憾地告诉你,没有实际的解决方案,但“黑客”。
Here您可以找到其中的几种解决方法。我喜欢使用一种真正的布局方法。
顺便说一下,这是在考虑你不想使用实验性的css3列属性。
答案 2 :(得分:5)
这里没有答案给了我安慰所以我去寻找真相。我添加了一点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
答案 3 :(得分:-2)
我还需要一个伪元素的例子:
.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>