2013-09-19 3 views
4

У меня есть 3 див, каккак получить максимальную ширину доступной для DIV с помощью JQuery

<div id="d1" style="float:left;width:150px;"> 
asdqwe 
</div> 
<div id="d2" style="float:left;"> 
qwerty 
</div> 
<div id="d3" style="float:right;width:150px;"> 
poilkj 
</div> 

Теперь я хочу, чтобы установить ширину d2 Div динамически и установите его максимально доступным с, как на экран разрешения с помощью JQuery ,

Я пробовал jQuery('#d2').width(), но он дает нам только фактическую удержание ширины.

Я хочу показать свой экран веб-страницы, например, d1 для 150 пикселей слева и d3 для 150 пикселей справа и остальной доступной ширины для d2.

Пожалуйста, дайте мне знать, как мы это делаем ????

+0

http://api.jquery.com/outerWidth/ – Arun

ответ

4

По умолчанию <div> только заполняет пространство, которое он нуждается, когда плавал.

Вы не можете получить ширину вы требуете, как это, но вы можете установить это:

$("#d2").width($(window).width() - $("#d1").width() - $("#d1").width); 

Будьте осторожны: если пользователь изменяет свое окно (или что-нибудь еще, чтобы изменить окно просмотра размер), вам нужно будет обновить это значение. Вы можете обойти эту проблему, зацепив на события Изменить размер окна:

$(window).on("resize", function() { 
    $("#d2").width($(window).width() - $("#d1").width() - $("#d1").width); 
}); 
0

В вашем сценарии вам необходимо получить ширину экрана и вычесть ширину # d1 и # d3 из ширины экрана. Эта рассчитанная ширина может быть присвоена # d2.

0

Вы можете получить ширину окна просмотра, используя

var screenWidth = $(window).width(); 

Затем установите ширину для #d2 как:

$('#d2').css('width', screenWidth - 300); 
0
Math.max.apply(Math, $('#d2').map(function(){ return $(this).width(); }).get()); 

За предложение, я сломаю что вниз:

$('#d2').map(function(){ 
    return $(this).width(); 
}).get(); 

Math.max принимает N аргументов, поэтому вы должны называть его следующим: Math.max (200, 300, 250, 100, 400), что и выполняет Math.max.apply.

+0

Следуйте за этим: http://stackoverflow.com/questions/5784388/jquery-get-max-width-of-child-divs –

0

вы должны попробовать это

$(document).ready(function(){ 
setMaxWidth(); 
$(window).bind("resize", setMaxWidth); //Remove this if it's not needed. It will react when window changes size. 

function setMaxWidth() { 
$("#d2").css("maxWidth", ($(window).width() * 0.7 | 0) + "px"); 
} 

}); 
0

Если вы просто не плаваете средний DIV, и положить плавающие перед ним в источнике, вам не нужны никакие Javascript, потому что браузер может обрабатывать это само по себе.

<div id="d1" style="float:left;width:150px;"> 
asdqwe 
</div> 
<div id="d3" style="float:right;width:150px;"> 
poilkj 
</div> 
<div id="d2"> 
qwerty 
</div> 

Если у вас нет требований, о которых вы нам не говорили, это должно сделать это.

+0

Но этот случай, 'd2' заполнит все доступное пространство - не просто пространство, оставшееся после вставки плавающих divs, например Http: // jsfiddle.net/Blade0rz/xMPsS/1/ – CodingIntrigue

+0

Будучи способным предоставить разные цвета фона, может быть одним из тех требований, которые OP нам не рассказывал. В любом случае, вы можете решить эту проблему, указав во всех цветах четкие цвета фона: http://jsfiddle.net/MrLister/xMPsS/2/ –

+0

К сожалению, фон был просто для демонстрации. Требовалось: * Я хочу показать свой экран веб-страницы, например, d1 для 150px слева и d3 для 150px справа и ** остальной доступный widht для d2 ***. Но эй, кто знает - это не очень понятно :) – CodingIntrigue

1
entireScreenWidth = screen.width 
d1Width = $("#d1").width() 
d2Width = $("#d2").width() 

$("#d3").width(entireScreenWidth-d1Width-d2Width) 
Смежные вопросы