2014-07-03 86 views
1

如何在百分比中設置正確div的寬度,以便填充左側div後的所有空間?要填充div後的所有空格

<div id='wrap'> 
    <div id='left'></div> 
    <div id='right'></div> 
</div> 
#wrap { 
    border: 5px solid green; 
    float: left; 
    width: 100%; 
    height: 100px; 
} 
#left { 
    background: black; 
    position: relative; 
    top:0; 
    left: 0; 
    width: 90px; 
    height: 100px; 
    float:left; 
} 
#right { 
    background: grey; 
    position: relative; 
    top:0; 
    right: 0; 
    height: 100px; 
    float:right; 
} 

試了一下:

$(document).ready(function() { 
    var x = $('#left').width(); 
    $('#right').width((100 - x) + '%'); 
}); 

fiddle

回答

3

使用calc()屬性:

#right{ 
width: calc(100% - 100px); /*<---do it here*/ 
background: grey; 
position: relative; 
top:0; 
right: 0; 
height: 100px; 
} 

不知道,但你也可以用display財產與table, table-row, table-cell做到這一點:

#wrap { 
    border: 5px solid green; 
    float: left; 
    width: 100%; 
    height: 100px; 
    display:table; /*<----here*/ 
} 
#left { 
    background: black; 
    position: relative; 
    top:0; 
    left: 0; 
    width: 90px; 
    height: 100px; 
    display:table-cell; /*<----here*/ 
} 
#right { 
    background: grey; 
    position: relative; 
    top:0; 
    right: 0; 
    height: 100px; 
    display:table-cell; /*<----here*/ 
} 
+0

給小提琴例子,請... – Manwal

+1

注意,這將不會在較老的IE和一些移動工作瀏覽器。在這裏使用'calc()'也是不必要的。 – JJJ

+1

...使用表格單元對於這樣一個簡單的任務太複雜了。你可以浮動另一個元素並完成它。 http://jsfiddle.net/tt94T/ – JJJ

0

嘗試CSS3這個http://jsfiddle.net/5cuH2/15/

$(document).ready(function() { 
    var wrap = $('#wrap').width(); 
    var left = $('#left').width(); 
    $('#right').width((wrap-left) + 'px'); 
}); 
+0

Unfortunaly,這不是工作 –

+0

檢查小提琴鏈接 – zzlalani

1

您可以設置包裝div的背景色爲灰色,然後用你的左手股利覆蓋的左部。這樣你就不需要任何JS計算。

檢查更新小提琴:http://jsfiddle.net/5cuH2/6/

CSS

#wrap{ 
    border: 5px solid green; 
    width: 100%; 
    height: 100px; 
    background: grey; 
} 
#left{ 
    background: black; 
    position: relative; 
    top:0; 
    left: 0; 
    width: 90px; 
    height: 100px; 
    float:left; 
} 
#right{ 
    position: relative; 
    top:0; 
    right: 0; 
    height: 100px; 
    float:right; 
} 

.clear { 
    clear: both; 
} 
+0

只有CSS的解決方案非常好,但它可以做得更簡單:您可以放棄'float:right'並從#right元素進行定位,它仍然可以工作,並且不需要將背景顏色移動到包裝元素。 http://jsfiddle.net/tt94T/ – JJJ

+0

真的!還必須向#left元素添加更高的z-index以使其覆蓋#right容器。 –

0

試試這個

$(document).ready(function() { 
    var x = $('#left').width(); 

    var total = $('#wrap').width(); 

    $('#right').css({ 
     width: total - x + "px" 
    }); 
}); 

OR

var x = $('#left').width(); 
    var total = $('#wrap').width(); 
    var leftPer = x * 100/total; 
    $('#right').css({ 
     width: 100 - leftPer + "%" 
    }); 

DEMO


0

試試這個

var x = ($('#left').width()/$('#wrap').width())*100; 
$('#right').width((100 - x) + '%'); 
0
var dx = $('#wrap').width(); 
var x = $('#left').width(); 
$('#right').width((dx - x) + 'px'); 
+0

請詳細說明您的答案,並解釋代碼以及如何解決問題以幫助未來訪問此頁面的其他人。 –