2014-10-03 51 views
0

我有一个带有复选框的小表单,其中每个复选框位于其描述文本的左侧。使块元素停留在短元素的右侧

如果说明文字环绕,我希望下一行留在复选框的右侧,而我不要希望整个说明容器本身在复选框下方重新定位。

我不想这样:

enter image description here

我不想这样:

enter image description here

我想要这个! (原谅我弱的图像编辑技能):

enter image description here

我试过的display/float组合十几排列,我只是无法得到它。

下面是我的源,并here is my JSFiddle.

div.outer { 
    border: 1px green solid; 
    width: 100px; 
} 

span.check { 
    border: 1px orange solid; 
} 

span.desc { 
    border: 1px cyan solid; 
} 

<div class="outer"> 
    <span class="check"> 
     <input type="checkbox" /> 
    </span> 
    <span class="desc">Futures</span> 
    <br/> 

    <span class="check"> 
     <input type="checkbox"/> 
    </span> 
    <span class="desc">I don't currently trade</span> 
    <br/> 
</div> 

Again, here's that JSFiddle link.

能有人给我介绍?我很难过。似乎这不应该如此艰难。

enter link description here

+0

注:固定一个偶然的HTML代码错误 – 2014-10-03 20:31:02

回答

1

我能想出的最好的方法是给desc类定一个宽度,然后再加vertical-align: top。宽度保持desc不足以导致文字换行。

span.desc { 
    border: 1px cyan solid; 
    display: inline-block; 
    width: 90px;    // added 
    vertical-align: top;  // added 
} 

我不喜欢添加固定宽度,但现在我不能想出更好的东西。我仍然乐于接受更好的答案。

(See JSFiddle)

+0

几乎在那里...我也试过一些东西,只是检查我的回答 – Hitesh 2014-10-03 21:11:54

+0

接受我自己的答案,但会很乐意接受一个不同的答案,如果有人提出更好的东西。 – 2014-10-15 02:42:32

1

如果你做相对的标签,你可以通过绝对位置移动输入。

.check{ 
    position: relative; 
} 
.check>input{ 
    position: absolute; 
    top: 0; 
    display: inline-block; 
    left: -25px; 
    width: 25px; 
} 
+0

我怎么会将此我的代码?不幸的是,我目前无法彻底改变我的代码。 – 2014-10-03 20:24:40

+0

对不起,这似乎并不是我要找的。 – 2014-10-03 20:31:45

+0

为什么downvote? – Martijn 2014-10-04 08:32:22

0

你在找什么是display: inline-block

退房this fiddle,哪种类型的地址您的问题:如果你想要做的事与文本的跨度是不需要的,但更容易一点。

除此之外,我的建议是查看固定复选框的宽度(或包含它的跨度)。

+0

不,你没有解决它,你只是把外箱做得更宽,所以包裹不会发生。 (实际上我在发布之前尝试了很多'display:inline-block'的变体。) – 2014-10-03 20:22:03

+0

如何修复复选框的宽度可以做任何事情? – 2014-10-03 20:32:23

0

入住这fiddle

div.outer { 
    border: 1px green solid; 
width: 90px; 
} 

span.check { 
    border: 1px orange solid; 
} 

span.desc { 
    border: 1px cyan solid; 
display: inline-block; 
width: 60px; 
vertical-align: top; 
text-align: left; 
} 
+0

这是否解决了这个问题...我也是新来的CSS,但只是学习,并试图解决您的问题 – Hitesh 2014-10-03 21:15:42

+0

这几乎与我的答案相同,不是吗? – 2014-10-03 21:26:22

+0

差不多我刚刚加了'text-align:left;'.....但它解决了这个问题吗? – Hitesh 2014-10-03 21:27:25