我有3个div,我想显示为表格单元格:
<div class="field">
<div class="row">
<label for="name">Subdomain</label>
<input type="text" id="name" name="name">
<div class="subdomain-base ">test</div>
</div>
</div>
这是我正在使用的CSS:
body{
font-size: 13px;
}
.field {
width:450px;
display: table;
}
.row {
display: table-row;
width: 100%;
}
.row > * {
display: table-cell;
border: 1px solid red;
}
label {
width: 125px;
height: 18px;
}
input {
max-width: none;
min-width: 0;
overflow: auto;
height: 18px;
width: 100%;
}
.subdomain-base {
height: 18px;
width: 1px;
}
.subdomain-base {
color: blue;
font-size: 13px;
}
它在Firefox 24中完美运行:
但是,它在Chrome 30(最新版)中存在高度问题:
我一直在尝试各种各样的事情来解决Chrome的问题,但似乎没有任何作用。为什么镀铬会达到额外的高度?
Jsfiddle:http://jsfiddle.net/ahLMH/
答案 0 :(得分:3)
设置:
.row > * {
display: table-cell;
border: 1px solid red;
vertical-align: top; // add this
}
答案 1 :(得分:3)
问题似乎是由于display: table-cell
元素上的input
是实验性的。有关详细信息,请参阅此问题:display:table-cell not working on an input element
解决方案是将输入包装在span
中并将display: table-cell
应用于span
并从overflow: auto
中移除input
。
新标记看起来像这样:
<div class="field">
<label for="name">Subdomain</label>
<span>
<input type="text" id="name" name="name">
</span>
<div class="subdomain-base ">test</div>
</div>
css现在看起来像这样:
body {
font-size: 13px;
}
.field {
width:450px;
display: table;
}
.field > * {
display: table-cell;
border: 1px solid red;
}
span {
padding: 0 5px;
}
label {
width: 125px;
}
input {
width: 100%;
}
.subdomain-base {
width: 1px;
}
.subdomain-base {
color: blue;
font-size: 13px;
}
Jsfiddle:http://jsfiddle.net/ahLMH/6/
答案 2 :(得分:0)