Элементы по горизонтали без js
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> * { padding: 0; margin: 0; } #container { width: 700px; height: 100px; margin: 30px auto; border: 1px solid #ccc; overflow-x: scroll; } #ruler { border: 1px solid #FF0000; display: inline-block; width: 1000px; height: 20px; } #ruler div { border-right: 1px solid #999966; float: left; height: 20px; width: 99px; } </style> </head> <body> <div id="container"> <div id="ruler"> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </div> </div> </body> </html> Вот пример. Элементы расположены по горизонтали благодаря фиксированной ширине контейнера (#ruler) Вопрос: возможно ли сделать тот же результат не указывая ширину контейнеру? |
white-space: nowrap ? В хроме это срабатывает. Отпишись что в IE, опере и файрфоксе.
|
Цитата:
Не знаю как в ie, но в firefox и opera работает только когда у детей display inline-block <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> * { padding: 0; margin: 0; } #container { width: 700px; height: 100px; margin: 30px auto; border: 1px solid #ccc; overflow-x: scroll; } #ruler { border: 1px solid #FF0000; display: inline-block; white-space: nowrap; height: 20px; } #ruler div { border-right: 1px solid #999966; display: inline-block; height: 20px; width: 99px; } </style> </head> <body> <div id="container"> <div id="ruler"> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </div> </div> </body> </html> |
Цитата:
или все дети идентичной высоты и их воткнуть в элемент с высотой, меньшей двух высот их самиx |
Цитата:
Цитата:
Цитата:
Цитата:
|
danik.js,
Как умею так и несу - нех тут командовать - блин "просветлеённый" еще один, я с dmitry111, год с лишним общаюсь, проблем не возникало или решался без посредников - тут свалился оценщик сообщений, с говнокомментами |
Deff, да пофиг сколько ты там и с кем общаешься. Мне это не интересно. Ты похож на тролля. Прибежал, даже вопроса не прочитал, что-то там ответил, даже не включив мозг, убежал. Еще и обижаешься.
|
а в чём вообще проблема?
1) #ruler{ //display: inline-block; /* ??? */ font-size:0; /* вот с какой-то из новых версий Оперы у меня это не срабатывало, даже с техподдержкой ихней пришлось общаться */ display:table; /* а это костыль для Сафари */ } #ruler div{ display: inline-block; } 2) #ruler{ overflow:hidden; /* популярный костыль, но использовать осторожно! */ } #ruler div{ float:left; } И вообще не понял, что тут за разборки? Свойство float (кроме значения none), делает элемент блочным. |
Цитата:
Цитата:
|
а что использование свойств display: table, table-row, table-cell и тд. не катит?
|
Цитата:
|
у таблиц есть дофига недостатков и в каждом конкретном случае они разные.
но в целом по 2 причинам: 1) <!--[if lte IE 7]> 2) несколько бредовая затея по смыслу - эмулировать таблицу через стили. проще уж тогда в HTML её и забабахать, хотя бы ослы станут поддерживать. |
Цитата:
пункт 3. |
Цитата:
|
Цитата:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>float</title> <style> #layer { background: #fd0; /* Цвет фона */ border: 1px solid black; /* Параметры рамки */ padding: 10px; /* Поля вокруг текста */ margin-right: 20px; /* Отступ справа */ } </style> </head> <body> <div id="layer" style="display: inline; float: left; width: 100px;"> Кликни на меня, чтобы узнать мой display и float! </div> <div> Duis autem dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit au gue duis dolore te feugat nulla facilisi. </div> <script> document.getElementById("layer").onclick = function () { alert("display: " + this.style.display + ", float:" + this.style.float); }; </script> </body> </html> float это float, а display это display |
Цитата:
http://javascript.ru/forum/misc/3583...tml#post236904 не подходит ? |
Цитата:
|
dmitry111,
в посте 13 - нету таблицы, другое дело, что контейнер авторасширяется только до края окна, далее просто элементы стоят из-за float в единой строке, |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
<style type="text/css"> div { display: table-cell; width: 100px; min-width: 100px; border: 1px solid #000; } </style> <div>Duis autem dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit au gue duis dolore te feugat nulla facilisi.</div> <div>1</div> <div>Duis autem dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit au gue duis dolore te feugat nulla facilisi.</div> <div>2</div> Вариант 2, насильно пытаемся растянуть блок, никаких распорок не нужно: <style type="text/css"> div { display: table-cell; width: 100px; min-width: 100px; border: 1px solid #000; } </style> <div>рррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррр</div> <div>1</div> <div>Duis autem dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit au gue duis dolore te feugat nulla facilisi.</div> <div>2</div> Вариант 3, не даем растягиваться: <style type="text/css"> div { display: table-cell; width: 100px; min-width: 100px; max-width: 100px; border: 1px solid #000; } </style> <div>рррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррррр</div> <div>1</div> <div>Duis autem dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit au gue duis dolore te feugat nulla facilisi.</div> <div>2</div> |
Вот про min-width я не подумал. Круто)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> * { padding: 0; margin: 0; } #container { width: 700px; height: 100px; margin: 30px auto; border: 1px solid #ccc; overflow-x: scroll; } #ruler { border: 1px solid #FF0000; display: table; height: 20px; } #ruler div { border-right: 1px solid #999966; display: table-cell; height: 20px; min-width: 99px; width: 99px; } </style> </head> <body> <div id="container"> <div id="ruler"> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </div> </div> </body> </html> devote, разницы в поведении нет. Просто возможны расхождения из-за отсутствия display:table-row элемента. Убери в коде выше min-width и ты поймешь о чем я говорил. |
Цитата:
|
Часовой пояс GMT +3, время: 00:03. |