Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
/css/style-{версия}.css
@import url("reset.css");
@import url("tip.css");
@import url("css.css");)# анти-прокси-кэширование стилей
# style.v123.css -> style.css
RewriteRule ^(.*)\.v[0-9]+\.css$ $1.css
RewriteRule ^(.*)\.v[0-9]+\.js$ $1.js
div.class img {vertical-align: -50%;}
Оптимальным решением такой проблемы будет:
overflow: hidden
div:after {
content: ".";
height: 0;
display: block;
clesr:both;
}
Floats, absolutely positioned elements, block containers (such as inline-blocks, table-cells, and table-captions) that are not block boxes, and block boxes with 'overflow' other than 'visible' (except when that value has been propagated to the viewport) establish new block formatting contexts for their contents.
document.createElement('header');
document.createElement('section');
document.createElement('footer');
document.createElement('nav');
document.createElement('article');
document.createElement('aside');
for(var i=0, el="header footer nav section article aside".split(" ");i<el.length;i++){
document.createElement(el[i])
}
var tags = [ 'header', 'footer', 'nav', 'section', 'article', 'aside' ];
for( var i = 0, n = tags.length; i < n; ++ i )
{
document.createElement( tags[ i ] );
}
var tags = [ 'header', 'footer', 'nav', 'section', 'article', 'aside' ];
tags.forEach(function(entry) { //можно даже без дополнительной переменной обойтись
document.createElement(entry);
});
document.createElements('header', 'footer', 'nav', 'section', 'article', 'aside');
Он ещё легче в чтении и поддержке.[ 'header', 'footer', 'nav', 'section', 'article', 'aside' ].forEach(document.createElement);
['header', 'footer', 'nav', 'section', 'article', 'aside'].map( function(el) { document.createElement(el); })
font: .13em/0 sans-serif;
document.createElement('header'); и подобные — можете почитать об этом в замечательной книжке по HTML5.<!doctype HTML>
Шпаргалка по верстке для больших и маленьких