Автор: CrucialWebHosting.com
Перевод: Всеволод Козлов
При работе с CSS новички (да и не только) допускают одну и ту же грубейшую ошибку – забывают сбрасывать дефолтные стили браузера. Обычно эта оплошность приводит к некорректному отображению сайта в различных браузерах.
Когда так происходит, верстальщики начинают злостно обвинять тот или иной «некорректно» работающий браузер во всех мирских грехах, в то время как виноваты именно они сами, их невнимательность и халатность!
Поэтому Вы должны взять себе за правило, «намотать на ус», как Вам больше нравится, каждый раз перед началом создания таблицы стилей CSS производить сброс дефолтных стилей браузера.
Наиболее популярным и распространенным способом сброса дефолтных стилей является global reset, но он не является панацеей, при работе с ним также возникают трудности. Например, под него попадают такие элементы форм как кнопки и fieldset’ы. Из-за этого они теряют свой первоначальный, стандартный стиль оформления, предустановленный браузером.
Чтобы избежать подобных «переусердствований», Вам не следует повсеместно использовать global reset, вместо него просто перечислите те элементы, дефолтные параметры которых требуется сбросить!
Ниже я привожу пример оптимально организованной таблицы стилей CSS, которая спокойно может служить примером поистине качественной организации CSS-стилей. Замечу, что я удалил оттуда некоторые стили для облегчения понимания!
/***** Global Settings *****/
html, body {
border:0;
margin:0;
padding:0;
}
body {
font:100%/1.25 Arial, helvetica, sans-serif;
}
/***** Headings *****/
h1, h2, h3, h4, h5, h6 {
margin:0;
padding:0;
font-weight:normal;
}
h1 {
padding:30px 0 25px 0;
letter-spacing:-1px;
font-size:2em;
}
h2 {
padding:20px 0;
letter-spacing:-1px;
font-size:1.5em;
}
h3 {
font-size:1em;
font-weight:bold;
}
/***** Common Formatting *****/
p, ul, ol {
margin:0;
padding:0 0 1.25em 0;
}
ul, ol {
padding:0 0 1.25em 2.5em;
}
blockquote {
margin:1.25em;
padding:1.25em 1.25em 0 1.25em;
}
small {
font-size:0.85em;
}
img {
border:0;
}
sup {
position:relative;
bottom:0.3em;
vertical-align:baseline;
}
sub {
position:relative;
bottom:-0.2em;
vertical-align:baseline;
}
acronym, abbr {
cursor:help;
letter-spacing:1px;
border-bottom:1px dashed;
}
/***** Links *****/
a,
a:link,
a:visited,
a:hover {
text-decoration:underline;
}
/***** Forms *****/
form {
margin:0;
padding:0;
display:inline;
}
input, select, textarea {
font:1em Arial, helvetica, sans-serif;
}
textarea {
width:100%;
line-height:1.25;
}
label {
cursor:pointer;
}
/***** Tables *****/
table {
border:0;
margin:0 0 1.25em 0;
padding:0;
}
table tr td {
padding:2px;
}
/***** Wrapper *****/
#wrap {
width:960px;
margin:0 auto;
}
/***** Global Classes *****/
.clear { clear:both; }
.float-left { float:left; }
.float-right { float:right; }
.text-left { text-align:left; }
.text-right { text-align:right; }
.text-center { text-align:center; }
.text-justify { text-align:justify; }
.bold { font-weight:bold; }
.italic { font-style:italic; }
.underline { border-bottom:1px solid; }
.highlight { background:#ffc; }
.wrap { width:960px;margin:0 auto; }
.img-left { float:left;margin:4px 10px 4px 0; }
.img-right { float:right;margin:4px 0 4px 10px; }
.nopadding { padding:0; }
.noindent { margin-left:0;padding-left:0; }
.nobullet { list-style:none;list-style-image:none; }
Источник: Master Stylesheet: The Most Useful CSS Technique
Смотрите также:
- Footer
- Перекодирование цвета из hex
- Оптимизация изображений
- Сборник иконок для рабочего стола
- Красивые таблицы css
- Семантическая разметка
- Css button
- Иконка корзины
- Css конструктор
- Blockquote css
15 комментария(-ев)
Что за чушь? Нельзя обнулять CSS стили только из-за того, что они разные в разных браузерах. CSS, описанный выше тоже далеко не идеален: половина значений в пикселях, половина в em, форму зачем-то сделали inline элементом, sup и sub нормально работают во всех браузерах, отступы между блоками надо делать не padding-ами, а margin-ами и т.д. Автор пытается агрессивно впарить свою точку зрения, которая не совпадает с современными понятиями HTML/CSS верстки.
половина свойств в этой таблице зависят от дизайна.
нужна более универсальная — подключил и забыл.
Mertas, подобный совет дают многие верстальщики-специалисты западного сектора Сети. Получается, что они все пропагандируют чушь???
never_again, универсальные решения должны быть, не спорю! Даже где-то встречал публикацию именно на эту тему, если найду, обязательно опубликую!
Всеволод Козлов, совет можно понять, но нельзя понять
«При работе с CSS новички (да и не только) допускают одну и ту же грубейшую ошибку – забывают сбрасывать дефолтные стили браузера.»
Это не ошибка и тем более не грубейшая. И если это пропагандируется, то это чушь.
Mertas, во всяком случае, так советуют многие…
К том уже дальше идет некоторое уточнение на счет сброса дефолтных значений стилей НЕ ДЛЯ ВСЕХ элементов, а выборочных!
Очень граммотно всё предложено. Универсального ни чего не существует, но хотябы облегчит понимание. Поправил чуток под конретные нужды и всё.
Спасибо)
очень помогла ваша статья
Долго разбирался с , чтоб одинаково изображалось в разных браузерах. Помог способ описанный в статье:
sup {
position:relative;
bottom:0.3em;
vertical-align:baseline;
}
теперь отображает во всех браузерах одинаково
Mertas, как же ты предлагаешь выходить из положния?этому учат сразу…с подобнымы резетами жить намного спокойнее…на опыте выявил что по ходу работы оч легко многие нюансы забыть.
Долгое время я тоже юзал CSS Reset от Эрика Майерса, но потом до меня дошло, что это реально неверный подход, я перестал пользоваться обнулениями стилей вообще. Дело в том, что нельзя стили просто обнулять, их обязательно нужно перезаписывать своими значениями, а иначе пользователь, прибегнув к тегу, о котором вы не подумали, обнуляя стили, удивиться эффекту своего творения. Те, кто пользуется CSS Reset’ами, портят жизнь пользователю. В (x)html несколько сотен тегов, не будешь же ты каждый из них обнулять и задавать затем каждому свое значение? Поэтому я руководствуюсь принципом, что ничего не обнуляется, а лишь переназначается по мере необходимости. Ну, а об обнулении конечно нужно помнить, когда дойдет до кроссбраузерности, но обнулять нужно только в конкретных случаях, а не глобально. Это, имхо, универсальный вариант
.
Перспективный блоггер
Вас никто не просит обнулять все.
На пример если браузер Х у элемента имеет по умолчанию отступ 5рх, а браузер У имеет 0рх, то если этому элементу не переназначить, он сьедит, или того хуже — все посыпится. Намного удобнее глобально обнулить, а потом локально менять отдельно взятый элемент, чем обнулять лакально обсолютно каждый элемент и давать свойство каждому.
Меня больше волнует другой вопрос: почему не записать одним блоком это
html, body {
border:0;
margin:0;
padding:0;
font:100%/1.25 Arial, helvetica, sans-serif;
}
Вы сами не пытаетесь думать, есть ли альтернативы написаному вами. Намного даже не удобнее, а резонее не глобально обнулять, а тут же в начале css прописывать свои правила для данного элемента, и тогда и у браузера X и Y не возникнет никаких разногласий. Конечно же эта схема трудозатратней, чем простое втискивание обнуляющего куска кода. Но обнулив чуть ли не все теги, поверьте, вы обязательно забудете что-нибудь какому-нибудь тегу в итоге прописать, а с носом останется пользователь, который без обнуления получил бы какой-нибудь эффект, а так не увидел для тега ни малейшего отличия от абзаца. Работать надо качественно, и для проектов в особо крупных масштабах у верстальщика со стажем вопрос: «обнулять или не обулять» вообще не стоит. В первую очередь там думают о пользователе, это я вам говорю, как человек, в таких проектах работающий. Обнуление — способ для новичков и ленивых. Опытные прекрасно сами знают, что если какой-то тег ведет себе не как положено, то нужно переназначить ему какой-либо дефолтный параметр.
сэр вы из какой деревни ? я больше доверяю w3c чем не пойми кому, зайдите и посмотрите как это сделанно у профи, подчеркиваю — профи.
Сэр, тут, я вижу, вопрос уже не в месте происхождения, а в вашей собственной тупости. Вы то, что написано выше, читали? Попробуйте не тупо (как вы видимо все делаете) доверить «кумирам», а иметь свои мозги. Почему профи позволили себе так сделать? Да потому что на своем ресурсе они и являются пользователями, и для них это НЕ ПРИНЦИПИАЛЬНО. Забыл дописать стили на какой-нить тег, который обнулил — 2 минуты открыть css и дописать. А заказчику??? Сделай профи этот сайт ДЛЯ заказчика, понадобилось бы более гибкое проектирование, в котором места обнулению стилей не было бы. Сечете, СЭР? Хотя вряд ли… Если за 2 таких развернутых коммента так и не дошло, то, видимо, ограниченность мышления сказывается…
Я лично юзаю такой:
* {margin:0; padding:0; outline:0; border:0; }
a {text-decoration:none; color:#000;}
Собственно, это все что нужно.