2016-01-13 34 views
0

我需要一个包含值列表的面板。每个值都有一个标签。标签必须显示在值的上方。每个标签必须在左侧对齐。跨度内两列以上的列

它必须看起来像这样:

Label 1  Label 2 
Value 1  Value 2 

这里是我的代码 - plnkr

<div> 
    <span> 
    <span class="a">title 1</span> 
    <input type="text" class="b" /> 
    </span> 
    <span> 
    <span class="c">title 2</span> 
    <input class="d" /> 
    </span> 
</div> 

CSS:

span.a { 
    color: red; 
} 

input.b { 
    display: block; 
} 

span.c { 
    color: blue; 
} 

input.d { 
    display: block; 
} 

什么是解决它的最好方法?

+0

'DIV>跨度{浮动:左; }' – Alex

+0

你可以给你的'span'一个默认宽度,然后将它们左对齐'float:left'。或者使用“表格”。忘了设置'display:block;'。 (可以更好地使用div) – Xyv

+0

@Xyv,我不知道我理解正确,但它不起作用https://plnkr.co/edit/nGtRySJa6nvpFFu9OxJM?p=preview – demas

回答

3

CSS表是一个选项(如果不能使用实际的table

.table { 
 
    display: table; 
 
} 
 
.col { 
 
    display: table-cell; 
 
} 
 
.col > * { 
 
    display: block; 
 
}
<div class="table"> 
 
    <span class="col"> 
 
    <span class="a">title 1</span> 
 
    <input type="text" class="b" /> 
 
    </span> 
 
    <span class="col"> 
 
    <span class="c">title 2</span> 
 
    <input class="d" /> 
 
    </span> 
 
</div>

+0

好的旧表总能正常工作。 ;-) +1 – DavidDomain

2

你可以试试flex布局。

这里是一个例子。

如果您希望您的跨度元素缠绕在较小的屏幕上,请将flex-flow: row wrap添加到.wrapper类。

/* Styles go here */ 
 

 
.wrapper { 
 
    display: flex; 
 
    justify-content: flex-start; 
 
} 
 

 
.flex-item { 
 
    margin: 0 10px; 
 
} 
 

 
span.a { 
 
    color: red; 
 
} 
 

 
input.b { 
 
    color: green; 
 
    display: block; 
 
} 
 

 
span.c { 
 
    color: blue; 
 
} 
 

 
input.d { 
 
    color: black; 
 
    display: block; 
 
}
<div class="wrapper"> 
 
    <span class="flex-item"> 
 
    <span class="a">title 1</span> 
 
    <input type="text" class="b" /> 
 
    </span> 
 
    <span class="flex-item"> 
 
    <span class="c">title 2</span> 
 
    <input class="d" /> 
 
    </span> 
 
    <span class="flex-item"> 
 
    <span class="c">title 3</span> 
 
    <input class="d" /> 
 
    </span> 
 
</div>