Pull to refresh

Тривиальные задачи по вёрстке

Reading time4 min
Views60K
image

Начинаю вести серию статей Это статья про вёрстку html css js, начинаю с самого простого, потом планирую описать более сложные вещи и всякие тонкости и этим видимо так и закончил


Начнем с самого простого.



Макет с одной колонкой по центру


Стандартная задача — разместить контент в середине экрана.
Контентная часть может быть фиксированной или тянущейся, а еще Надо вытянуть центральный блок в высоту на весь экран…

последний раз я использовал такую схему

html
<div class="wrap">
  <div class="contentdiv">
Этот блок фиксированного или относительного размера всегда будет горизонтально отцентрован <br /><br />
А еще он растянут на всю высоту экрана
  </div>
</div>


* This source code was highlighted with Source Code Highlighter.


css
html, body {height:100%;}
.wrap {
/*центрируем*/
  position:relative;
  width:50%; /*могут быть и пиксели*/
  margin: 0px auto ;
/*вытягиваем в высоту*/  
  height:auto !important;
  height:100%;
  min-height:100%;
/*украшательства*/  
  border-left:1px solid #69b401;
  border-right:1px solid #69b401;  
}
.contentdiv {padding:10px;}

* This source code was highlighted with Source Code Highlighter.


тут два вложенных блока, наружний — обёртка, который позиционирует контентную часть, внутренний — сам контент

выдвигаем его на середину указываем ему отступ margin: 0px auto; и ширину width:50%; размеры могут быть и px и %

растягиваем по высоте: для ие и для всего остального, как обычно, разные способы, поэтому высоту указываем 4 раза — 3 раза в блоке и 1 раз в html, body

upd {
почему именно так?
что бы контент не проваливался в нормальных браузерах пишем height:auto!important, а ниже
height:100%
Нормальные браузеры понимают !important как более высокий приоритет и используют его, а
ие6 в следствии своей безумности переписывает «нижним значением» «важное значение»…
}

Для обёртки нельзя использовать вертикальные отступы, это даст ненужный скролл, поэтому все необходимые отступы используем во внутреннем блоке

пример

Футер

Футер, который находится всегда внизу, тоже одна из тривиальных задач, которая у многих вызывает ступор.
способ растягивания контента на всю страницу описаный вышу статье прекрасно дополняется правильным футером

вот пример

если посмотрим в исходный код заметим два новых блока

    <div class="empty_inner" style=""> </div>

* This source code was highlighted with Source Code Highlighter.


внутри блока-обёртки wrap

и сам footer после этого блока

<div id="footer">
 © Vilz 09  
 
</div>


* This source code was highlighted with Source Code Highlighter.


поскольку контентная часть у нас растянута на всю страницу в высоту, то футер будет сразу же после неё.Тогда появляется ненужный скролл
и мы сразу же от него избавляемся, отодвигая блок на верх на высоту футера

css

#footer {
  position:relative;
  height:20px;
  margin-top:-21px;

  line-height: 20px;
  vertical-align:middle;

  border-top: 1px solid #e8e9e8;  
  width:100%;
  text-align:right;
  font-size:10px;
}


* This source code was highlighted with Source Code Highlighter.


Указываем высоту блока и поднимаем блок на эту высоту вверх с помощью верхнего отрицательного margin. В данном случае высота на единицу больше из-за бордера, так же если использовать для футера еще и паддинги, то они сплюсуются с высотой и в margin, соответственно, надо будет указывать общее значение.

upd {
Так же его можно поднять с помощью отрицательного нижнего margin для блока обёртки .wrap

перенести верхний отрицательный марджин из .footer в нижний отрицательный марджин в .wrap
margin:0 auto -21px;


пример
}

Смысл блока, который находится в контентной части, не дать, когда страница растянется, содержанию сайта залезть на футер, в нём мы просто указываем высоту нашего блока

.empty_inner {
  height:20px;
}


* This source code was highlighted with Source Code Highlighter.


Попап


довольно часто встречающийся вопрос, как разместить небольшой блок фиксированного размера по центру экрана

<div class="popup">какой контент </div>

* This source code was highlighted with Source Code Highlighter.


вот такой css для блока

.popup {
  position:absolute;
  top:50%;
  left:50%;
  width:360px;
  height:180px;
  margin-left:-180px;
  margin-top:-90px;
  border:1px solid #69b401;
  padding:5px;
}

* This source code was highlighted with Source Code Highlighter.


пример

Что мы тут видим? позиционируем абсолютно, и отправляем в центральную точку экрана 50% 50%.
получается, что блок висит левым углом чётко по центру экрана. Естественно это нас не устроит.

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

У этого решения есть один значительный минус. левая верхняя точка у нас получается по середине блока, а от неё ведется позиционирование. Поэтому, когда размеры браузера превышают размеры блока, то он прячется верхней и левой частью за границу экрана без прокрутки.

ну и напоследок

Стандартный шаблон


Вот такой шаблон я использую для начала работы над новой вёрсткой

что в него входит:
index.html со стандартной структурой, и уже подключенными css и js
папка css
reset.css — для сброса стандартных значений браузеров
main.css — основной css файл c описанием нескольких стандартных классов
папка js
jquery.js — мой любимый js фреймворк последней 1.3.1.min версии
app.js — основной файл для собственных js функций
тут же бонусом iepngfix.htc и iepngfix_tilebg.js для полноценной борьбы с неправильными png в ie6
и папка img — просто что бы не создавать каждый раз

ничего сложного, но ускоряет начало работы раз в несколько

скачать

Вот и всё в общем то.
Tags:
Hubs:
+227
Comments160

Articles

Change theme settings