2014-07-14 52 views
1

我有一个简单的案例复选框标签对齐,我似乎无法得到它的工作。 标签应该换行,并且所有行应该从第一行开始的位置开始。 与此类似:为什么这两个内联块不对齐?

0 Xxxx 
    xxxx 
    xxxx 

,而不是这样的:

0 Xxxx 
xxxxxx 
xxxxxx 

的HTML是:

<div class="limit"> 
    <input id="dd" type="checkbox" /> 
    <label for="dd" > Label text dh dfjgh dfhd;fhdh djh gfjh sfghj gpfhj sfpgdhj spfghj pfgohj spdfgoh spdfgih spdfgohi</label> 
</div> 

CSS:

label { 
    display: inline-block; 
    margin-left: 1.5em; 
    border: 1px dashed gray; 
} 

.limit { 
    border: 1px solid black; 
    vertical-align: top; 
    max-width: 300px; 
} 

input { 
    display: inline-block; 
} 

和活生生的例子就在这里:http://jsbin.com/virohima/1/edit?html,css,output

我现在得到这个权利:

0 
    Xxxxx 
    xxxxx 
    xxxxx 

我在做什么错?

回答

1

添加float:leftinput,使labeldisplay:block

label { 
    display: block; 
    margin-left: 1.5em; 
    border: 1px dashed gray; 
} 

.limit { 
    border: 1px solid black; 
    vertical-align: top; 
    max-width: 300px; 
} 

input { 
    display: inline-block; 
    float:left 
} 

DEMO

+0

工程。不漂亮,但它的作品。 –

+0

我喜欢这个答案,因为它不会让我在内联块中放置一个'max-width'。另外,I @ @Suresh是因为他指出'inline-block'将占用100%的宽度,这是我设计问题的根本原因。 (这将使这个答案完成,国际海事组织) – Ben

0

试试这个:

label { 
    display: inline; 
    margin-left: 1.5em; 
    border: 1px dashed gray; 

} 

.limit { 
    border: 1px solid black; 

    max-width: 300px; 
} 

input { 
    float: left; 
} 
1

内联元素指定宽度,否则它会采取100%。

label { 
display: inline-block; 
border: 1px dashed gray; 
width:272px; 
} 

.limit { 
border: 1px solid black; 
vertical-align: top; 
max-width: 300px; 
} 

input { 
display: inline-block; 
width:20px; 
margin:0px; 
vertical-align:top; 
} 

DEMO

+0

谢谢。我选择了另一个答案,但你的评论帮助我理解了我设计中的问题(我没有选择你的答案,因为我觉得更好的解决方案不包括'max-width',但我确实+1了你的答案) – Ben

+0

没问题本。我很高兴,因为它可以帮助你。 –