2014-10-03 79 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