私は3つの浮動コンテナを包むコンテナを持ち、コンテナの幅は可変でleft most inner container
の幅は100px、right most inner container
の幅は500pxです。 center container
には幅が設定されていませんが、できるだけ多くのスペースが必要です。動的に子コンテナを可変幅の内側で使用可能な幅にする
<style type="text/css">
#outerContainer div:nth-child(1) {float: left; width: 100px}
#outerContainer div:nth-child(2) {float: left}
#outerContainer div:nth-child(3) {float: right; width: 500px}
</style>
<div id="outerContainer">
<div>left most inner container</div>
<div>center container</div>
<div>right most inner container</div>
</div>
ダイナミック中央コンテナは、プレゼンテーションの目的のためにコンテンツoverflow: hidden
と省略記号です作り、それに適用されるいくつかのスタイルを持っています。
<style type="text/css">
#outerContainer div:nth-child(1) {
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
</style>
解決策は、内側の要素の幅を動的に拡大/縮小する方法がわかりません。ここに私のJavaScriptのソリューションは動作しますが、私はそれが過剰に見えるようにカットしたいと思います。
NS.textWidth = function(sourceSel){
var sourceSel = sourceSel,
html_org = $(sourceSel).html(),
html_calc = '<span>' + html_org + '</span>';
//Wrap contents with a span.
$(sourceSel).html(html_calc).css({width:'100%'});
//Find width of contents within span.
var width = $(sourceSel).find('span:first').width();
//Replace with original contents.
$(sourceSel).html(html_org);
return width;
};
adjustContainerWidth();
$(window).bind('resize', function(e){
clearTimeout(c.resize_timeout);
c.resize_timeout = setTimeout(function() {
adjustContainerWidth();
}, 200);
});
function adjustContainerWidth() {
var winW = parseInt($(window).width());
var firstContainer = parseInt($('#outerContainer div:nth-child(1)').width());
var lastContainer = parseInt($('#outerContainer div:nth-child(3)').width());
var availW = winW - firstContainer - lastContainer;
var textW = NS.textWidth('#outerContainer div:nth-child(2)');
if (availW > 40 && availW < textW) {
$('#outerContainer div:nth-child(1)').css({ width : availW + 'px' });
} else {
$('#outerContainer div:nth-child(1)').css({ width : textW + 'px' });
}
}
http://jsfiddle.net/Za8RF/あなたは* *より良いJavaScriptのソリューション、またはCSSのみのソリューションを見つけようとしていますか?あなたはこれまでに持っていたことを示すhttp://jsfiddle.net/デモを作ることができますか? – thirtydot
ここで言及されているコードの多くは、はるかに大きなプロジェクトのスニペットです。そのために私ができることを見ていきます。また、これに取り組むための私の好ましい方法はCSSのみです。 –