Начинаю изучать верстку на div-ах. Возникает такая проблема:
Часто требуется выводить некоторые элементы (например div-ы) в одну строку так,
чтобы один из них растягивался до тех пор, пока можно сужать остальные. Точнее говоря,
чтобы все элементы были минимально возможной ширины (ну это просто), а один из них
растянулся на все оставшееся место в элементе-контейнере, в котором все это безобразие находится.
Этот элемент часто бывает самым правым, но может быть и в центре (как сейчас ).
Размер элементов и их количество справа и слева от "резинового" в общем случае не известен.
Эта проблема с горем пополам решалась с помощью таблиц установкой width="100%" у "резиновой" ячейки.
Искал много где, но толкового, универсального решения не нашел. Помогите.
Пока что это все, что напрягает в div-ах по сравнению с таблицами. В остальном глюки примерно одинаковые.
Здравствуйте, KnazDmitriy, Вы писали:
KD>Часто требуется выводить некоторые элементы (например div-ы) в одну строку так, KD>чтобы один из них растягивался до тех пор, пока можно сужать остальные. Точнее говоря,
На коленке набросал для случая, если ширина «минимальных» элементов извесна заранее:
Здравствуйте, KnazDmitriy, Вы писали:
KD>Начинаю изучать верстку на div-ах. Возникает такая проблема:
KD>Часто требуется выводить некоторые элементы (например div-ы) в одну строку так, KD>чтобы один из них растягивался до тех пор, пока можно сужать остальные. Точнее говоря, KD>чтобы все элементы были минимально возможной ширины (ну это просто), а один из них KD>растянулся на все оставшееся место в элементе-контейнере, в котором все это безобразие находится. KD>Этот элемент часто бывает самым правым, но может быть и в центре (как сейчас ). KD>Размер элементов и их количество справа и слева от "резинового" в общем случае не известен.
Да, это слишком частный случай, здесь все хорошо из-за position: absolute;
В моем случае элементы должны позиционироваться относительно любоко контейнера а не только всего окна.
Но и на этом спасибо.
Все больше убеждаюсь, что даже когда ширина остальных элементов известна, сделать элемент резиновым
не так то просто, что уж говорить об общем случае, наверно придется вводить таблицу.
В конце концов, не так уж и плохо, главное чтоб работало
Здравствуйте, KnazDmitriy, Вы писали:
KD>Да, это слишком частный случай, здесь все хорошо из-за position: absolute; KD>В моем случае элементы должны позиционироваться относительно любоко контейнера а не только всего окна.
Если absolute это вовсе не обязательно, что оно должно позиционироваться относительно всего окна. Он будет позиционировться относительно родителя, если у него указано relative или absolute.
KD>Все больше убеждаюсь, что даже когда ширина остальных элементов известна, сделать элемент резиновым KD>не так то просто, что уж говорить об общем случае, наверно придется вводить таблицу. KD>В конце концов, не так уж и плохо, главное чтоб работало
Кстати, может быть что-то такое натолкнёт на мысль:
KD>Эта проблема с горем пополам решалась с помощью таблиц установкой width="100%" у "резиновой" ячейки.
KD>Искал много где, но толкового, универсального решения не нашел. Помогите. KD>Пока что это все, что напрягает в div-ах по сравнению с таблицами. В остальном глюки примерно одинаковые.
"Универсального" решения в природе нет и быть не может из-за кривости как CSS, так и браузеров.
Здравствуйте, Mamut, Вы писали:
KD>>Эта проблема с горем пополам решалась с помощью таблиц установкой width="100%" у "резиновой" ячейки.
KD>>Искал много где, но толкового, универсального решения не нашел. Помогите. KD>>Пока что это все, что напрягает в div-ах по сравнению с таблицами. В остальном глюки примерно одинаковые.
M>"Универсального" решения в природе нет и быть не может из-за кривости как CSS, так и браузеров.
M>Максимально приближенное к универсальности — In search of the One True Layout, которым можно достичь очень многого, но и он не лишен проблем.
По моему то, что на той странице приводят — это ужасно
Жуткие хаки в CSS коментариях
Здравствуйте, MBy, Вы писали:
MBy>Здравствуйте, KnazDmitriy, Вы писали:
KD>>Да, это слишком частный случай, здесь все хорошо из-за position: absolute; KD>>В моем случае элементы должны позиционироваться относительно любоко контейнера а не только всего окна. MBy>Если absolute это вовсе не обязательно, что оно должно позиционироваться относительно всего окна. Он будет позиционировться относительно родителя, если у него указано relative или absolute.
Первый раз слышу, что если position: absolute, то элемент позиционируется относительно родителя.
KD>>Все больше убеждаюсь, что даже когда ширина остальных элементов известна, сделать элемент резиновым KD>>не так то просто, что уж говорить об общем случае, наверно придется вводить таблицу. KD>>В конце концов, не так уж и плохо, главное чтоб работало MBy>Кстати, может быть что-то такое натолкнёт на мысль: MBy>
Огромное спасибо, практически то, что нужно.
Все гениальное просто, как говориться.
Вот только в данном примере, резиновый див на самом деле занимает всю строку, а остальные его просто перекрывают.
Хотя в эксплорере если у резинового установить высоту, он занимает только свободное пространство, да еще и с небольшими отступами. Вот пример
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
<style>
#a { border: 1px solid Red;}
#b { border: 1px solid Blue; height: 35px; }
#c { border: 1px solid Green; }
#a, #c { width: 10px; height: 30px;}
#a { float: left; }
#c { float: right; }
#x {width: 400px; margin: 0px auto}
</style>
</head>
<body>
<div id="x">
<div id="a"></div>
<div id="a"></div>
<div id="a"></div>
<div id="a"></div>
<div id="c"></div>
<div id="c"></div>
<div id="c"></div>
<div id="c"></div>
<div id="b"><div>[rubber string] f f f f f f f f f f f f f f f f f f f f f f</div></div>
</div>
</body>
</html>
Так вот в идеале, хотелось бы, чтобы резиновый див занимал только свободное пространство (ну или вложенный в него див)
да еще чтобы это все по-прежнему не зависило от количества и расположения остальных элементов.
Сейчас пробую сам поиграться, но что-то пока не получается
Здравствуйте, KnazDmitriy, Вы писали:
MBy>>Если absolute это вовсе не обязательно, что оно должно позиционироваться относительно всего окна. Он будет позиционировться относительно родителя, если у него указано relative или absolute.
KD>Первый раз слышу, что если position: absolute, то элемент позиционируется относительно родителя.