Тема по сути стара как мир, но, по моим наблюдениям, актуальности не теряет и новички все также продолжают делать ошибки.
Итак, первый вопрос о высоте таблиц.
Почему при установке DOCTYPE в начале документа не работает атрибут HEIGHT у таблицы?
Итак, первый вопрос о высоте таблиц.
Почему при установке DOCTYPE в начале документа не работает атрибут HEIGHT у таблицы?
<table height="100%">
<tr>
<td>
Таблица
</td>
</tr>
</table>
Проблема в том, что вообще в спецификации HTML нет атрибута height у таблицы. Т.е. его использование - это ошибка изначально.Так почему же это работает когда не указан DOCTYPE? Дело в том, что режим рендеринга страницы браузером определяется именно типом документа (DOCTYPE). Но когда DOCTYPE не указан браузер отрисовывает страницу в так называемом "quirks mode" не пытаясь соответствовать какому-то конкретному стандарту.
В режиме соответствия стандартам это работать не будет. Т.е. если у страницы указан полный DOCTYPE или если указан DOCTYPE XHTML
Так зачем мне указывать DOCTYPE?
Отвечу кратко - это гарантирует, или по крайней мере позволяет надеяться, что страница будет одинакого выглядеть в разных браузерах, а во-вторых - следование стандартам - это к тому же правило хорошего тона и в некоторых случаях может избавить вас от лишних проблем.
Так как же сделать, чтобы это работало?
Чтобы работал именно атрибут height - никак, а вот чтобы добиться того же результата нужно использовать CSS.
Для начала нужно задать CSS самого тела страницы:
В режиме соответствия стандартам это работать не будет. Т.е. если у страницы указан полный DOCTYPE или если указан DOCTYPE XHTML
, то браузер отрисовывает страницу в режиме соответствия стандартам, если же DOCTYPE отсутствует или же присутствует, но без URL его XML-описания, то отрисовка будет в режиме совместимости (quirks mode).Так зачем мне указывать DOCTYPE?
Отвечу кратко - это гарантирует, или по крайней мере позволяет надеяться, что страница будет одинакого выглядеть в разных браузерах, а во-вторых - следование стандартам - это к тому же правило хорошего тона и в некоторых случаях может избавить вас от лишних проблем.
Так как же сделать, чтобы это работало?
Чтобы работал именно атрибут height - никак, а вот чтобы добиться того же результата нужно использовать CSS.
Для начала нужно задать CSS самого тела страницы:
html, body {margin: 0px;padding: 0px;height: 100%;border: none;}
Для чего это нужно?
Дело в том, что таблица растягиваться на всю высоту элемента, в котором она содержится, т.е. в данном случае на высоту элемента BODY. Но он может не иметь высоту области отображения страницы в браузере, поэтому нам нужно задать высоту BODY принудительно.
Теперь создадим стиль для нашей таблицы:
Дело в том, что таблица растягиваться на всю высоту элемента, в котором она содержится, т.е. в данном случае на высоту элемента BODY. Но он может не иметь высоту области отображения страницы в браузере, поэтому нам нужно задать высоту BODY принудительно.
Теперь создадим стиль для нашей таблицы:
#full_height_table {height: 100%;}
Ну а HTML должен быть таким:
<body><table id="full_height_table"><tr><td>Таблица</td></tr></table></body>
Теперь у нас все замечательно работает и таблица имеет высоту в 100%.
Теперь второй вопрос.
Как в XHTML центрировать контент из блочных элементов?
Атрибут ALIGN="center" теперь нам не поможет. Чтобы центрировать блочный элемент по горизонтали нужно задать для него CSS со праметрами margin-left и margin-right.
Теперь второй вопрос.
Как в XHTML центрировать контент из блочных элементов?
Атрибут ALIGN="center" теперь нам не поможет. Чтобы центрировать блочный элемент по горизонтали нужно задать для него CSS со праметрами margin-left и margin-right.
#my_centered_div {margin-left: auto;margin-right: auto;}
Центрированный элемент
Это касается блочных элементов, чтобы центрировать текст нужно использовать CSS text-align: center;
Чтобы центрировать по вертикали нужно использовать свойство CSS родительского элемента vertical-align, но это подойдет только для текста, для блочного элемента следует добавить свойство display: table-cell;. Однако в Internet Explorer это работать не будет. Приемы как сделать вертикальное центрирование блочного элемента в IE можно посмотреть тут.
Чтобы центрировать по вертикали нужно использовать свойство CSS родительского элемента vertical-align, но это подойдет только для текста, для блочного элемента следует добавить свойство display: table-cell;. Однако в Internet Explorer это работать не будет. Приемы как сделать вертикальное центрирование блочного элемента в IE можно посмотреть тут.
#my_centered_div_container {vertical-align: middle;display: table-cell;}
Центрированный элемент
Небольшое демо:
Блочный элемент
Свойства CSS (кликайте и смотрите результат выше):
margin-left: 0px; margin-right: auto;
margin-left: auto; margin-right: auto;
margin-left: auto; margin-right: 0px;
И в заключение
Старайтесь задавать все параметры внешнего вида через CSS и вынесите CSS в отдельный файл, не прописывайте стили внутри страницы. В дальнейшем это избавит вас от многих проблем, если вы захотите изменить внешний вид и поведение страницы.
Старайтесь задавать все параметры внешнего вида через CSS и вынесите CSS в отдельный файл, не прописывайте стили внутри страницы. В дальнейшем это избавит вас от многих проблем, если вы захотите изменить внешний вид и поведение страницы.
Полезная статья чувак! +5
ОтветитьУдалитьСпасибо. Рад, что понравилось и пригодилось. =)
ОтветитьУдалитьА не проще вместо
ОтветитьУдалить#my_centered_div {
margin-left: auto;
margin-right: auto;
}
Написать
#my_centered_div {
margin:0 auto;
}
?
Да, можно и так, но в целях правильного понимания этой статьи логичнее будет все же первый вариант.
ОтветитьУдалитьПросто в дальнейшем идет margin-left: 0; margin-right: auto; - по левой стороне, затем по правой.
Возможно статья сыровата. Со временем обвешаю ее некоторыми дополнениями.
Ваш вариант надо тоже добавить. Благодарю за замечание. =)
Hi there mates, its wonderful article about cultureand fully explained, keep it up all the
ОтветитьУдалитьtime.
My weblog; Cheap Louis Vuitton Bags
I constantly spent my half an hour to read this website's content daily along with a cup of coffee.
ОтветитьУдалитьFeel free to visit my site sac Guess
Every weekend i used to visit this website, as i want enjoyment,
ОтветитьУдалитьsince this this web site conations truly pleasant funny information too.
Visit my website :: Air Max Femme (smu-fr.org)
Do you have a spam issue on this site; I also am a blogger, and I was curious about your situation; many of us have created some nice practices
ОтветитьУдалитьand we are looking to swap strategies with others, be sure to shoot me an e-mail if interested.
Feel free to visit my weblog ... Sac Louis Vuitton Pas Cher **
Hi, I think your blog might be having browser compatibility issues.
ОтветитьУдалитьWhen I look at your website in Chrome, it looks fine but when opening in Internet
Explorer, it has some overlapping. I just wanted to give you a quick heads up!
Other then that, superb blog!
My site Air Max Pas Cher