Как заполнить 100% оставшейся ширины
Есть ли какая-нибудь работа, чтобы сделать что-то вроде этой работы, как ожидалось?
Я хотел бы, чтобы что-то вроде width:remainder;
или width:100% - 32px;
.
width: auto;
не работает.
Я думаю, что единственный способ - это работать с paddings/marginins, отрицательными значениями или float или html-тэгами. Я попробовал также отобразить: block;.
Мне нравится получать тот же результат, что и без таблиц http://jsfiddle.net/LJGWY/
![enter image description here]()
<div style="position: absolute; width: 100%; height: 100px; border: 3 solid red;" id="container">
<div style="display:inline; width: (100%-100px); border: 3 solid green;">Fill</div>
<div style="display:inline; width: 100px; border: 3 solid blue;">Fixed</div>
</div>
Ответы
Ответ 1
Элементы уровня блока, такие как <div> автоматически заполнит 100% доступной ширины. Если вы поместите один из них вправо, другой заполнит оставшееся пространство.
<div style="height: 100px; border: 3px solid red;" id="container">
<div style="float: right; width: 100px; border: 3px solid blue;">Fixed</div>
<div style="border: 3px solid green;">Fill</div>
</div>
http://jsfiddle.net/5AtsF/
Ответ 2
Для тех, кто просматривает это сейчас, существует новый метод свойств CSS, называемый calc, который может выполнять это гораздо более гибким образом.
<div class="container">
<div class="fixedWidth"></div>
<div class="variableWidth"></div>
</div>
.fixedWidth{
width:200px;
}
.variableWidth{
width:calc(100%-200px);
}
Как предупреждение, это не очень портативно, и поддержка мобильных устройств на мобильных устройствах. IOS 6+ и andriod 4.4, я считаю. Поддержка значительно лучше для рабочего стола, хотя IE 9.0 +.
http://caniuse.com/calc
Я использовал JS-хак в прошлом для достижения этой техники, если кто-то невероятно застрял, другой макет более целесообразен, хотя изменение размера происходит медленнее.
window.addEventListener('resize', function resize(){
var parent = document.getElementById('parent');
var child = document.getElementById('child');
child.style.width = parseInt(parent.offsetWidth - 200) + "px"; //200 being the size of the fixed size element
}, false);
Ответ 3
Это должно сделать для вас:
<div style="position: absolute; width: 100%; height: 100px; border: 3px solid red;" id="container">
<div style="float: right; width: 100px; border: 3px solid blue;">Fixed</div>
<div style="display: block; margin-right: 100px; border: 3px solid green;">Fill</div>
</div>
См. jsFiddle
Предполагается, что вы удалите границы 3px из конечного результата (они перекрываются в примере, потому что ширина границы не включена в ширину).
Ответ 4
Вы можете добиться этого без изменения вашей разметки с использованием свойства display:table
для этого:
.parent{
position: absolute;
left:0;
right:0;
height: 100px;
border: 3px solid red;
display:table;
}
.fill{
margin-right: 100px;
border: 3px solid green;
display:table-cell;
width:100%;
}
.fixed{
width: 100px;
border: 3px solid blue;
display:table-cell;
}
Проверьте живой пример без horizontal scrollbar
Еще один пример, но лучше проверить это:
Примечание: он не работает в IE7 и ниже
Проверьте это также
Работает в всех браузерах.
Ответ 5
Если вы не знаете, насколько большой будет фиксированная часть, вы можете использовать хак Flex 9999.
<div class="container">
<div class="fixedWidth"></div>
<div class="variableWidth"></div>
</div>
.container {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.fixedWidth {
flex: 1;
}
.variableWidth {
flex: 9999;
}
Ответ 6
Попробуйте установить положение так:
<div style="position: absolute; width: 100%; height: 100px; border: 3 solid red;" id="container">
<div style="position:absolute; left: 0; top: 0; right: 100px; border: 3 solid green;">Fill</div>
<div style="position:absolute; top: 0; right: 0; width: 100px; border: 3 solid blue;">Fixed</div>
</div>
Ответ 7
Вы можете поместить fixed div
внутри fill div
.
<div id="container">
<div>Fill
<div>Fixed</div>
</div>
</div>
CSS
#container{
position:absolute;
width:90%;
height:100px;
border:3px solid red;
}
#container div{
height:95%;
border:3px solid green;
width:100%;
}
#container div div{
height:95%;
width:100px;
border:3px solid blue;
float:right;
}
Пример: http://jsfiddle.net/EM8gj/3/
Ответ 8
вы можете использовать стиль таблицы.
создать div со стилем таблицы и подпунктами, чтобы стили табличной ячейки
Этикетка текст
Ответ 9
Если вы используете CSS, одним из простых решений может быть использование следующего кода внутри div:
div{
left: 0;
right: 0;
top: 0;
bottom: 0;
}