Распределение ширины двух блоков на одной линии (css/html)

Sanu0074
На сайте с 31.08.2012
Offline
110
1745

Есть два блока inline-block. У одного ширина фиксированная у другого задана в процентном соотношении, как сделать так чтобы они оба располагались на одной линии?

<div class='main' style='width:100%'>

<div class='menu' style='width:200px'>
</div>
<div class='content' style='width:100%'>
</div>
</div>

На этом примере блок .content растягивается во всю ширину окна, т.е. 200px лишние, как сделать так, чтобы оба блока оставались на одной линии и заполнялись по всей ширине окна?

p.s. я написал скрипт, который вычисляет нужную ширину для блока .content, но при масштабировании окна браузера (например колесиком мыши), видна погрешность у блока в несколько пикселей, и к тому resize в ie 8 у меня не работает:

(function($){	

var docW = null,
cW = null;

$.Main = {
init: function(){
$.Main.blockAligment(false);
$(window).resize(function(){$.Main.blockAligment(true);});

return $.Main;
},

blockAligment: function(resize){
var wrapW = $('.wrapper').width(),
menuW = $('.menu').width(),
contentW = Math.floor(parseInt(wrapW-menuW));

if(resize){
if($(document).width()>docW){
contentW-=2;
}else if($(document).width()<docW){
contentW++;
}
}
$('.content').width(contentW);
if(!resize){
docW = $(document).width();
cW=contentW;
};

if((cW-contentW)<5){
contentW=cW;
}

console.log(contentW,docW,$(document).width())
}
};
})(jQuery);

Как выйти из ситуации? Есть ли способ решить проблему на чистом CSS?

Z
На сайте с 07.06.2013
Offline
63
#1
Sanu0074:
Есть ли способ решить проблему на чистом CSS?

Через calc можно задать:

<div class='content' style='width: calc(100% - 200px)'>

Ну и нужный float для блоков.

Sanu0074
На сайте с 31.08.2012
Offline
110
#2

Zick, calc - это хороший вариант, но многие браузеры не поддерживают ее

Z
На сайте с 07.06.2013
Offline
63
#3

Sanu0074, так уж и многие ;)

http://caniuse.com/#feat=calc

Р
На сайте с 07.02.2013
Offline
178
#4

min-weight и max weight

TA
На сайте с 12.06.2009
Offline
116
TiA
#5

Это можно сделать на чистом CSS:


.main {
padding-left: 210px;
overflow: hidden;
}

.menu {
float: right;
width: 200px;
}

.content {
margin-left: -210px;
float: left;
width: 100%;
}

Рабочий пример: http://jsfiddle.net/uas7tbht/

Профессиональная верстка и разработка сайтов на WordPress (http://www.maultalk.com/topic139110s0.html)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий