Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Размер дива в процентах
 
 автор: Drago   (16.04.2007 в 19:33)   письмо автору
 
 

Есть вот такой пример:

<table border=1 width=100% height=100%>
    <tr><td height=80% align=left valign=top>
        <div style="width: 100%;height: 100%;border: black solid 1px;overflow: auto;">
            1<br>2
        </div>
    </td></tr>
    <tr><td height=20% align=left valign=top>row2</td></tr>
</table>


Проблема в том, что при заполнение дива и появлении вертикального скроллбара, в разных браузерах он отбражается по разному.


<table border=1 width=100% height=100%>
    <tr><td height=80% align=left valign=top>
        <div style="width: 100%;height: 100%;border: black solid 1px;overflow: auto;">
            1<br><br><br><br><br><br><br><br><br><br><br>
            <br><br><br><br><br><br><br><br><br><br><br><br><br><br>
            <br><br><br><br><br><br><br><br><br><br><br>2
        </div>
    </td></tr>
    <tr><td height=20% align=left valign=top>row2</td></tr>
</table>


В IE (6.0) все правильно: див растягивается на 100% в ячейке.
В FF (1.5) неправильно: див растягивается под размер контента. То есть, скроллбар не функционирует.
В Opera (9.0) неправильно: высота дива становится нулевой. Контент не отображается.

Вопрос: Как сделать, что бы див с высотой указанной в процентах, правильно (как в IE) отображался во всех браузерах?

   
 
 автор: AlexSol   (16.04.2007 в 22:42)   письмо автору
 
   для: Drago   (16.04.2007 в 19:33)
 

если это весь html, то надо прописать

body,html{height:100%}

   
 
 автор: Drago   (17.04.2007 в 01:24)   письмо автору
 
   для: AlexSol   (16.04.2007 в 22:42)
 

Сделал так:

<html>
<head>
<style>
body,html {height: 100%}
</style>
</head>
<body>
<table border=1 width=100% height=100%>
    <tr><td height=80% align=left valign=top>
        <div style="width: 100%;height: 100%;border: black solid 1px;overflow: auto;">
            1<br><br><br><br><br><br><br><br><br><br><br>
            <br><br><br><br><br><br><br><br><br><br><br><br><br><br>
            <br><br><br><br><br><br><br><br><br><br><br>2
        </div>
    </td></tr>
    <tr><td height=20% align=left valign=top>row2</td></tr>
</table>
</body>
</html>

Результат нулевой. То есть, ничего не изменилось.

   
 
 автор: CNT   (17.04.2007 в 12:10)   письмо автору
 
   для: Drago   (17.04.2007 в 01:24)
 

Для FF лекарство есть - этому браузеру надо, чтобы размеры областей были явно указаны у всей цепочки родительских элементов вплоть до BODY (в атрибутах или в стилях). Здесь в коде отсутствует тег <TBODY>, который и надо вписать с размерами:

<table border=1 width=100% height=100%><tbody style="height: 100%">
    <tr><td height=80% align=left valign=top>
        <div style="width: 100%;height: 100%;border: black solid 1px;overflow: auto;">
            1<br><br><br><br><br><br><br><br><br><br><br>
            <br><br><br><br><br><br><br><br><br><br><br><br><br><br>
            <br><br><br><br><br><br><br><br><br><br><br>2
        </div>
    </td></tr>
    <tr><td height=20% align=left valign=top>row2</td></tr>
</tbody>
</table>

Логика FF, в общем, понятная... если размер области не указан, то он определяется браузером автоматически и получает значение auto, проценты от которого браузер брать затрудняется.

Что надо в этом случае Opera, сказать не могу - не знаю.

   
 
 автор: Drago   (17.04.2007 в 13:57)   письмо автору
 
   для: CNT   (17.04.2007 в 12:10)
 

Благодарю.

В FF теперь отображается правильно. Разве что, за исключением появления вертикального скроллбара у всей страницы. Но, это не критично и решается уменьшением высоты таблицы на 1%.

Кто подскажет, как же исправить код, чтобы он правильно отображался и в Opera?

   
 
 автор: AlexSol   (17.04.2007 в 15:08)   письмо автору
 
   для: Drago   (17.04.2007 в 13:57)
 

глянь http://www.dynamicdrive.com/style/layouts/item/css-bottom-frame-layout/

и http://www.dynamicdrive.com/style/layouts/category/C11/

   
 
 автор: Drago   (17.04.2007 в 15:27)   письмо автору
 
   для: AlexSol   (17.04.2007 в 15:08)
 

>глянь http://www.dynamicdrive.com/style/layouts/item/css-bottom-frame-layout/
>
http://www.dynamicdrive.com/style/layouts/category/C11/
Можно поподробнее, чем мне эти ссылки могут помочь? Мне же не фрейм, фиксированной высоты нужен.

   
 
 автор: AlexSol   (17.04.2007 в 15:39)   письмо автору
 
   для: Drago   (17.04.2007 в 15:27)
 

ну... я предположил, что у тебя не таблица как элемент страницы, а как способ верстки :)

фреймов там нет.

   
 
 автор: Drago   (17.04.2007 в 15:51)   письмо автору
 
   для: AlexSol   (17.04.2007 в 15:39)
 

Скорее, и то, и другое.
Мне нужно в ячейке таблицы расположить див, растягивающийся на всю высоту ячейки.

   
 
 автор: Drago   (18.04.2007 в 17:41)   письмо автору
 
   для: Drago   (17.04.2007 в 15:51)
 

Неужели, нельзя ничего сделать, чтобы Опера нормально отображала этот див?

   
 
 автор: Lelik   (18.04.2007 в 17:45)   письмо автору
 
   для: Drago   (18.04.2007 в 17:41)
 

только задать в конкретных еденицах. такая вот она, опера...

   
 
 автор: Drago   (18.04.2007 в 18:16)   письмо автору
 
   для: Lelik   (18.04.2007 в 17:45)
 

Чтож, жаль конечно. Спасибо за ответ.

   
 
 автор: Drago   (18.04.2007 в 17:41)   письмо автору
 
   для: Drago   (17.04.2007 в 15:51)
 

.

   
 
 автор: Drago   (20.04.2007 в 20:01)   письмо автору
 
   для: Drago   (17.04.2007 в 13:57)
 

Снова столкнулся с той же проблемой в FF. Обрамил эту таблицу еще одной. В результате, тег <tbody> утратил нужное мне свойство и див, опять, растягивается на высоту контента.


<html>
<body>
<table width=100%><tr><td>
<table border=1 width=100% height=99%><tbody style="height: 100%">
    <tr><td height=80% align=left valign=top>
        <div style="width: 100%;height: 100%;border: black solid 1px;overflow: auto;">
            1<br><br><br><br><br><br><br><br><br><br><br>
            <br><br><br><br><br><br><br><br><br><br><br><br><br><br>
            <br><br><br><br><br><br><br><br><br><br><br>2
        </div>
    </td></tr>
    <tr><td height=20% align=left valign=top>row2</td></tr>
</tbody></table>
</td></tr></table>
</body>
</html>


Пробовал добавить тег <tbody> и в обрамляющую таблицу, но эффекта это никакого не дало.
Что можно предпринять в этом случае?

Добавлено
Перечитал еще раз сообщение CNT:
Для FF лекарство есть - этому браузеру надо, чтобы размеры областей были явно указаны 
у всей цепочки родительских элементов вплоть до BODY (в атрибутах или в стилях).


И сразу все исправил :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования