2015-06-23 22 views
1

我需要做的是將兩個動態div保持在同一水平線上,並強制最右側的div將單詞換行而不是移動到下一行。如何在同一行上保留兩個動態div,並強制單詞在右側換行

我已經試過許多方法,如在此類似,但不完全相同,問題的:

Keep floating divs on same line

這裏是什麼,我想用我去掉了實驗方案非常簡化的版本(如使用表細胞,浮右右側DIV等):

<div class='wrapper'> 
<div class='images'> 
    images 
</div> 
<div class='text'> 
    long text long text long text long text long text long text long text long text long text long text 
</div> 
</div> 

.images { 
    float:left; 
    border:1px solid black; 
    height: 200px; 
} 

.text { 
    float:left; 
    border:1px solid black; 
    position: relative; 
} 

.wrapper { 
} 

在這段代碼中,我需要對準正確地發生,即使JavaScript不加載所以回來並固定其與jQuery是不是選擇離子。兩個div都是動態的,它們可以根據用戶交互改變寬度。

如果第二個div中的文本不是太長,我可以得到兩個div對齊,但如果我縮小瀏覽器窗口直到它太緊,那麼第二個div跳到第二行。

我希望文本左對齊,所以第二個div文本應排列在第一個div的右側。

該divs也不是一樣的高度,也不是固定的高度,它可以非常依賴於頁面的內容。

很明顯,一種解決方案是使用表格標籤,但我希望避免這種情況,因爲表格通常不是最佳做法。

更新: 爲了完整起見,這裏是一個小提琴,它非常接近我的實際頁面格式 - 左邊的圖像,右邊的長文本和文本下的一堆按鈕。 https://jsfiddle.net/yyt0tkLr/目前我正試圖讓一堆按鈕顯示在單獨的行上,而不使用br標籤來完成。

+0

您可以使用flexbox。這些日子有很好的支持。但爲什麼不使用table-cell/table CSS選擇器?他們是有原因創建的。克服元素的超限語義使用。有時你只需要使用CSS提供給你的東西。這是其中的一次。 –

+0

@PaulM - 我實際上已經使用了表格單元格/表格CSS選擇器,但是在這種情況下他們沒有解決我的問題。 –

回答

3

任何你不能使用float作爲自然意圖的理由?

Fiddle demo

.images { 
 
    float:left; 
 
    border:1px solid black; 
 
    height: 200px; 
 
} 
 
.text { 
 
    border:1px solid black; 
 
    overflow: hidden; 
 
}
<div class='wrapper'> 
 
    <div class='text'> 
 
    <div class='images'>images</div> 
 

 
    long text long text long text long text long text long text long text long text long text long text</div> 
 
</div>

+0

而不是溢出隱藏你應該已經在文本中使用絕對位置div –

+0

這是一個意見。隨意創建自己的答案,展示該技術。 – isherwood

+0

我只是說,因爲內部隱藏溢出將用於隱藏任何正在溢出的東西 –

0

如果你給你的div的寬度屬性,這一切都在一起。如果沒有它,divs會相互碰撞,你會在另一個下包裝。

<div class='wrapper'> 
<div class='images'> 
    images 
</div> 
<div class='text'> 
    long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text long text 
</div> 
</div> 

.images { 
    float:left; 
    border:1px solid black; 
    height: 200px; 
    width:20%; 
} 

.text { 
    float:left; 
    border:1px solid black; 
    position: relative; 
    width:75% 
} 

.wrapper { 
} 

https://jsfiddle.net/Ls3bw80t/

+0

OP說divs是「動態」的。我認爲它們的寬度可以變化。 – isherwood

+0

正確,即使百分位數增加,也會使它們「動態」,因爲它們將在飛行中進行調整。如果你真的想進入它,如果他打算以這種方式構建div,應該設置最小和最大寬度。 –

+0

儘管我可以爲這些div設置最小和最大寬度,但我不認爲我的解決方案可以依賴於此。此外,我真的不認爲這是必要的。不錯,儘管嘗試! –

1

你嘗試使用display:inline爲正確的DIV?

小提琴:http://jsfiddle.net/fe6yp0m1/

+0

是的我嘗試過使用display:inline,我發現它可以在我的修剪過的示例中使用,但由於某些原因,我不瞭解更復雜的實際代碼。儘管如此,值得讚賞,謝謝。 –

1

我認爲它使用的是使用其他float元素後,明確你的包裝將不低於有用做最好的和正確的方法是我做的方式,請

.images { 
    border:1px solid black; 
    height: 200px; 
    float:left; 
} 
.clear{ 
    clear:both; 
} 
.text { 
    display:inline;  
    border:1px solid black; 
} 

.wrapper { 
    border:1px solid black; 
} 

http://jsfiddle.net/Siddharth_Pandey/6vb4bkng/

+0

我其實在我的實際頁面(而不是簡化版本)上嘗試了這一點,並且無法使其工作。 –

+0

@AlanMoore你能分享你的整頁細節在小提琴或猛擊 –

+0

當然,我會將它添加到主要問題 –

相關問題