显示:chrome中的表格单元格问题

时间:2013-10-27 03:45:38

标签: css google-chrome

我有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中完美运行: enter image description here

但是,它在Chrome 30(最新版)中存在高度问题: enter image description here

我一直在尝试各种各样的事情来解决Chrome的问题,但似乎没有任何作用。为什么镀铬会达到额外的高度?

Jsfiddle:http://jsfiddle.net/ahLMH/

3 个答案:

答案 0 :(得分:3)

设置:

.row > * {
  display: table-cell;
  border: 1px solid red;
  vertical-align: top; // add this
}

Updated Fiddle

答案 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)

可悲的是,没有足够的代表来回应Dhaval的回答。

更改为

vertical-align: middle;

http://jsfiddle.net/ahLMH/3/