12.09.2011, 00:49
|
Профессор
|
|
Регистрация: 23.04.2010
Сообщений: 354
|
|
Вертикальное выравнивание внутри DIV + scroll
Доброй ночи, коллеги.. Никак не получается привязать содержимое дива к его низу..
Ну и чтоб кроссбраузерно было разумеется..
Чо я только не делал уже..
Если прописать диву display:table-cell; vertical-align:bottom;
то атрибут таблиц width перестаёт быть резиновым почему то,
да плюс ко всему прочему пропадает скролл на диве((
Вопсчим, жесть
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
// расчёт высоты div#outer
// (обязательно нужно, не буду объяснять зачем,
// т.к. пример сильно упрощённый)
var window_h = $(window).height();
var outer_h=window_h-200;
$("#outer").css({'overflow-y': 'scroll', 'height': outer_h, 'width': '100%'});
block = mess("Вася Пупкин", "Всем привет, меня зовут Василий.", "11.09.2011") +
mess("Стояна Ракова", "Всем привет, я Стояна.", "10.09.2011");
$('#topic').scrollTop($('#topic').html(block));
});
function mess(users_name, message, date_string) {
var mess_block = '<table width=100% border="1" style="margin-bottom:10px"> \
<tr> \
<td><p><b>' + users_name + '</b></p></td> \
<td align="right"><p>' + date_string + '</p></td> \
</tr> \
<tr> \
<td colspan=2><p>' + message + '</p></td> \
</tr> \
</table>';
return mess_block;
}
</script>
<body style="margin:0">
<div style="background-color:#CCC; height:200px; border: 1px solid"><h1>Ш А П К А</h1></div>
<div id="outer">
<div id="topic"></div>
</div>
</body>
Пример в дейстивии
Последний раз редактировалось Триви, 13.09.2011 в 13:21.
|
|
12.09.2011, 15:08
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
Сообщение от Триви
|
Никак не получается привязать содержимое дива к его низу..
|
Картинка есть, того, что нужно сделать?
|
|
12.09.2011, 15:30
|
Профессор
|
|
Регистрация: 23.04.2010
Сообщений: 354
|
|
Сообщение от ksa
|
Картинка есть, того, что нужно сделать?
|
См.
Пример в дейстивии
Нужно таблицы привязать к нижней границе дива, сохранив его размеры и скролл.
Щас таблицы наверху((
|
|
13.09.2011, 08:44
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
Сообщение от Триви
|
См.
Пример в дейстивии
|
Пирмер лучше выкладывать тут как текст, с которым потом можно работать...
Сообщение от Триви
|
Нужно таблицы привязать к нижней границе дива, сохранив его размеры и скролл.
|
Как вариант, таблицы в див, диву абсолютное позиционирование, ну и вниз его.
|
|
13.09.2011, 13:29
|
Профессор
|
|
Регистрация: 23.04.2010
Сообщений: 354
|
|
Сообщение от ksa
|
Пирмер лучше выкладывать тут как текст, с которым потом можно работать...
|
через тег html run?
не получится, потому что с областью видимости экрана тут заморока.
Сообщение от ksa
|
Как вариант, таблицы в див, диву абсолютное позиционирование, ну и вниз его.
|
Вапсче лабудень какая то (( http://www.usaparts.ru/tests/4-1.html
пи.си. да, забыл добавить, всё должно быть в пределах области видимости экрана..
тут же всё уехало!
|
|
13.09.2011, 14:05
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
Сообщение от Триви
|
не получится
|
Это ты так думаешь... У остальных-то получается...
Я х/з что ты там ваяешь...
Сообщение от Триви
|
забыл добавить, всё должно быть в пределах области видимости экрана
|
Ну начинается!
Если все, всегда хочешь видеть на экране и в определённом месте это
position: fixed;
|
|
13.09.2011, 14:31
|
Профессор
|
|
Регистрация: 23.04.2010
Сообщений: 354
|
|
Сообщение от ksa
|
Это ты так думаешь... У остальных-то получается...
|
Что ж.. попробуем:
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
var window_h = $(window).height();
var outer_h=window_h-200; // вычисляем размер outer
$("#outer").css({'overflow-y': 'scroll', 'height': outer_h, 'vertical-align': 'bottom', 'width': '100%'});
block = mess("Вася Пупкин", "Всем привет, меня зовут Василий.", "11.09.2011") +
mess("Стояна Ракова", "Всем привет, я Стояна.", "10.09.2011")
$('#topic').scrollTop($('#topic').html(block));
});
function mess(users_name, message, date_string) {
var mess_block = '<table width=100% border="1" style="margin-bottom:10px"> \
<tr> \
<td><p><b>' + users_name + '</b></p></td> \
<td align="right"><p>' + date_string + '</p></td> \
</tr> \
<tr> \
<td colspan=2><p>' + message + '</p></td> \
</tr> \
</table>';
return mess_block;
}
</script>
<body style="margin:0">
<div style="background-color:#CCC; height:200px; border: 1px solid"><h1>Ш А П К А</h1></div>
<div id="outer">
<div id="topic"></div>
</div>
</body>
Сообщение от ksa
|
Я х/з что ты там ваяешь...
|
Да какая разница что?
Придётся повториться..
Есть пример
и я просто хочу притянуть таблицы книзу.
Это всё что я хочу.. профессор, как слышите? приём!
Сообщение от ksa
|
Ну начинается!
Если все, всегда хочешь видеть на экране и в определённом месте это
position: fixed;
|
это не подходит, потому что таблиц может быть от одной до туевой хучи
и все они умещаются в диве со скроллом,
размеры которого вычисляются в зависимости от размеров меняющегося контента до него,
т.о. чтобы не выпадать из области видимости!
пи.си. с праздником
|
|
13.09.2011, 15:45
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
Что-то ты окончательно меня запутал со своими таблицами...
Твой пример вообще не работает если я его скопирую к себе...
Твой "пример" по ссылке я не могу править - значит он для меня бесполезен...
Макета ты не даёшь... Т.е. задание так и непонятно.
"Нужно прижать книзу" - я тебе написал как можно прижать книзу.
"Нужно чтобы было всегда видно на экране" - написал и про это.
Сообщение от Триви
|
с праздником
|
Спасибо
|
|
13.09.2011, 15:48
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,205
|
|
Триви, если деньги есть - можно созвониться и таки порешать твою проблему...
Готов платить за услуги?
|
|
13.09.2011, 19:35
|
Профессор
|
|
Регистрация: 23.04.2010
Сообщений: 354
|
|
Да за что тут платить? =))
Да блин, your-bunny-wrote, неужели я так коряво объясняю???!
Ок, упростим до обычной вёрстки.
Во всех браузерах приведенный ниже кусок отображается одинаково.
<style>
div#outer {
width:100%;
height:300px;
background-color:#F00;
border: 1px solid;
overflow-y:scroll
}
div#topic {
background-color:#0F0;
border: 1px solid;
}
</style>
<div id="outer">
<div id="topic">
<table width=100% border="1" style="margin-bottom:10px">
<tr>
<td><p><b>Вася Пупкин</b></p></td>
<td align="right"><p>11.09.2011</p></td>
</tr>
<tr>
<td colspan=2><p>Всем привет, меня зовут Василий.</p></td>
</tr>
</table>
</div>
</div>
Вопрос. Как опустить div#topic к нижней границе div#outer?
при этом сохранив:
1. скролл
2. резиновость вёрстки
3. кроссбраузерность
Полагаю, что для тех, кто на вёрстке собаку съел,
дать правильный ответ не составит никакого труда..
Или ещё пофлудим?
Последний раз редактировалось Триви, 13.09.2011 в 19:38.
|
|
|
|