Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)
В этом уроке мы сделаем дизайн и код нашего первого веб-сайта простым и лёгким способом. Урок рассчитан на новичков с надеждой дать вам инструменты для написания собственных сайтов согласно принятым стандартам! Начало новой недели; возможно, время получить новый навык!
Шаг 1. Что мы делаем
Делаем дизайн и кодируем этот очень простой веб-сайт. Не совсем эффектный дизайн, но очень эффективный для обучения основным методам кодирования.

Шаг 2 - Подготовка
Что потребуется
Предполагается, что вы никогда не кодировали сайт раньше или делали это только пару раз. Тем не менее, для выполнения урока вам понадобится следующее:
- Photoshop или аналогичный редактор изображений
- Редактор кода (подробнее об этом позже)
- Базовое понимание того, как работает html, базовый синтаксис и теги. Для ускорения ознакомьтесь с официальным ресурсом w3 Schools, где вы найдёте все основы, необходимые для урока.
- Ditto для css, вы должны понимать, как работают селекторы и быть знакомы с основными свойствами. Опять же, смотрите лучший ресурс w3 Schools
- Очевидно, браузер. Я использую Firefox и вы, если хотите, чтобы ваш сайт повторял мои скриншоты на каждом шаге
Макет
Мы создадим очень простой веб-сайт с четырьмя основными элементами: header, content, sidebar и footer, макет будет выглядеть примерно так:

Хорошо бы зафиксировать макет вашего дизайна, прежде чем начнете, на бумаге или в Photoshop, чтобы оптимизировать процесс и организовать свои идеи.
Шаг 3 - Начало работы
Откройте чистый новый документ Photoshop, скажем, 1000px на 1200px. Мы всегда сможем его подрезать. Я делаю его довольно узким, потому что работаю на ноутбуке, но вы не стесняйтесь, если место позволяет.
Здесь я не буду спорить о разрешениях экрана и оптимальной ширине сайта. Вам нужно знать, что content нашей страницы будет шириной 800 пикселей, и всё. Итак, в нашем документе шириной 1000px мы будем перетаскивать направляющие по меткам 100 и 900px, чтобы установить ширину. У нашего дизайна есть sidebar и я решила сделать её на треть ширины страницы. Две трети от 800 составляет около 530, поэтому давайте добавим еще одну направляющую на 630px. Установим приятный цвет фона # ebe8e8.

Шаг 4 - Header
Возьмите инструмент rectangle и нарисуйте большой голубой прямоугольник в верхней части документа, мой - высоты около 170px , а цвет - 23b6eb. Затем нарисуем худенький тёмно-серый bar в самой верхней части страницы, я использовал # 5d5a5a

Шаг 5 - Highlight
Теперь мы добавим немного светового эффекта в синюю область header . Создайте обтравочную маску над синим слоем, затем возьмите большую мягкую кисть (шириной 400 пикселей) и выберите цвет немного светлее, чем синий фон.
Теперь слегка нажмите кончиком кисти прямо под панелью, вокруг центра документа. Старайтесь не допустить, чтобы более светлый цвет достиг края страницы (будет понятно позже). И установите режим смешивания на screen.

Шаг 6 - Navigation Bar
Теперь мы добавим еще один bar к нижней части синего, он будет серым с наложением градиента, так что точность не имеет большого значения.
На панели стилей слоев добавьте градиент от # e2e3e4 до #bebdbd на 90 градусов.

Шаг 7 - Footer
Давайте нарисуем серый квадрат внизу страницы, я выбрала цвет немного темнее, чем серый, расположенный сверху панели.

Step 8 - Logo
Задний план
Для логотипа мы нарисуем прямоугольник, добавим ещё одну опорную точку и перетащим её в сторону. Чтобы избавиться от округления, нажмите на точку правой кнопкой мыши.

Затем добавьте стили слоя: наложение градиента и 1px штрих: градиент от # aec457 до # cdf399



Текст
Теперь текст: большой и полужирный.
- Шрифт: Myriad Pro
- Стиль: Bold
- Размер: 60px
- Цвет: #36809a
Для придания глубины добавьте внутреннюю тень:


Step 9 - Слоган
Затем я просто добавила короткую строку:
- Font: Arial
- Style: Bold
- Size: 30pt
- Color: #e4dfdf

Шаг 10 - Навигация
Пишите ссылки хорошо и крупно, расставьте и разместите их равномерно.
- Font: Arial
- Style: Bold
- Size: 30pt
- Color: #676666

Шаг 11 - Основное содержимое
Время вставлять макет контента. Я использовала размер заголовка h2, а меньший будет h3 ссылкой на html ipsum.
Сделайте текстовые поля шириной около 2/3 страницы. Стили текста:
h2 Header:
- Font: Arial
- Style: Bold
- Size: 36pt
- Color: #0e5d7a
h3 Header:
- Font: Arial
- Style: Bold
- Size: 24pt
- Color: #444444
Paragraph:
- Font: Arial
- Style: Normal
- Size: 14pt
- Color: #595858

Данные в разделе "latest updates" будут помещены в маленький тег, шрифт такой же, как в абзаце, но 12pt. Я дважды копирую новость из лени.

Step 12 - Sidebar
Ссылки
Затем нарисуем тощий прямоугольник над областью sidebar, цвет # d4d6d3, с 1px строкой #bebdbd
Заполните sidebar фиктивным контентом с иконками, которые я тут использовала. Шрифты такие:
h3 Headers:
- Font: Arial
- Style: Normal
- Size: 24pt
- Color: #044055
Элементы списка:
- Font: Arial
- Style: Normal
- Size: 18/14pt
- Color: #373737

Кнопка
Затем мы добавим кнопку "join our team" под ссылками участников. Кнопка - просто прямоугольник с градиентом, что и у логотипа и строкой 1px цвет c7c7c7. Для текста:
- Font: Arial
- Style: Normal
- Size: 24pt
- Color: #434343

Шаг 13 - Footer
Заканчивая макет, добавьте немного фиктивного текста или что хотите, к нижнему колонтитулу. Шрифт:
- Font: Arial
- Style: Normal
- Size: 14pt
- Color: #e0e2e2

С дизайном страницы всё, ничего особенного, но его простота поможет вам следовать за остальной частью процесса.
Нарезка PSD
Теперь, когда у нас есть прекрасный PSD, пришло время разбить его на части, которые будем использовать. Идея здесь в том, чтобы использовать как можно меньше изображений как можно меньшего размера. Okay, начнём с header. Мы хотим растянуть его на весь экран, независимо от его ширины. Для этого мы собираемся вырезать маленький кусочек header и повторять его по экрану, сколько понадобится.
Шаг 14 - The Slice Tool
Может, вам не приходилось использовать slice tool раньше, но это действительно очень просто. Это позволяет вам нарезать файл в крошечные кусочки, которые можно экспортировать в Интернете.
Header
Итак, давайте вырежем небольшой кусочек нашего header. Нажмите и перетащите, чтобы создать срез так же, как инструмент прямоугольной области выделения. Будьте осторожны, чтобы не срезать со стороны изображения, а то не получите ни одного highlight.

Теперь, когда у нас есть эта полоска, мы можем повторить её по оси X. Однако highlighted область не повторяется, поэтому мы должны всё это вырезать . Нарежьте часть header между двумя направляющими, на ширину заявленных 800px .

Footer
Для нарезки footer повторите тот же процесс с узким фрагментом footer.

Всё остальное
Нам понадобятся несколько изображений: иконки "subscribe" и кнопка "join our team".
Поскольку значки и логотип имеют неправильную форму, мы сохраним их как прозрачные .png-файлы, поэтому мы вернемся и возьмём их отдельно.
Итак, чтобы нарезать кнопку, мы можем использовать ту же технику, что с header и footer, но на этот раз нам нужен только один тонкий срез. Когда делаете срез, не забудьте включить 1px строку (добавим позже), вам может понадобиться увеличить масштаб.

Шаг 15 - Экспорт в интернет
Теперь, когда у нас есть снимки, давайте сохраним их как оптимизированные jpeg и поместим их в нужное место.
Перейдите в меню File/Save for web и устройств ... В появившемся окне, удерживая клавишу shift, щёлкните, чтобы выбрать каждый фрагмент (опять же, можете увеличить масштаб). Убедитесь, что в раскрывающемся меню "preset" установлено значение JPEG-High, снимите флажок "convert to srgb" и нажмите "save"

В следующем окне выберите имя и место для ваших изображений, я пока сохраняю на рабочий стол.
Убедитесь, что установлено значение "images only", "default settings" и "selected slices only."

Затем проверьте место, где были сохранены ваши файлы. Вместо поиска отдельных images, найдите папку, помеченную "images", где будут все ваши изображения. Компьютер даст каждому изображению номер, который не очень нужен. Убедитесь, что у вас правильные изображения, затем назовите их соответствующим образом.
Теперь вернёмся к этим надоедливым иконкам и логотипу. Обязательно скройте слои фона, затем снова вытащите slice tool и вырежьте красивые квадратики вокруг каждого значка и логотипа.


Теперь мы проходим ту же процедуру экспорта в web, что и в случае с jpeg, только на этот раз обязательно выберите PNG-24 из выпадающего меню "preset" и отметьте флажком "transparency". Переименуйте и эти файлы и папка с изображениями будет выглядеть примерно так:

Вот и всё, мы закончили работу над нашим PSD и у нас есть все нужные изображения. Пока не закрывайте Photoshop, нам всё равно нужно выбирать цвета, шрифты, размеры и прочее.
Часть 3 - HTML
Шаг 16 - Начало работы
Хорошо, займёмся html. Первое, что вам понадобится, это какой-нибудь редактор кода. Это из области личных предпочтений,
Но я рекомендую начать с бесплатного. Для Mac и ПК я настоятельно рекомендую Komodo в качестве первого редактора кода. Он имеет множество функций, которые идеально подходят для любых пользователей.
Одна из лучших особенностей - синтаксическая проверка, похожая на проверку правописания в текстовых процессорах, она выявит и объяснит небольшие ошибки.
Для ПК есть гораздо больше опций, ни одна из которых мне не знакома, но есть статья Andrew Burgess 22 Neat Code Editors for Windows
В этом уроке мы будем использовать редактор Komodo, но принципы одинаковы в каждом.
Шаг 17 - Настройка папок
Во-первых, нам нужно создать место хранения всех файлов, связанных с нашим сайтом. Создайте папку сайта, моя называется "MySite", внутри этой папки создайте другую папку, содержащую только что вырезанные изображения.
Назовите её "images". Теперь мы открываем редактор кода, эта часть будет зависеть от того, какой software вы используете:
Если это Komodo, выберите "create new project" и сохраните/переместите файл .kpf в папку "MySite" . Когда вы открываете файл, браузер файлов от Komodo должен отображать содержимое папки.
Затем щёлкните правой кнопкой мыши на файле проекта и выберите "add" и "new file". В появившемся окне выберите «html (xhtml)» и назовите файл «index.html».


Если у вас другой редактор, процесс будет схожим, но основные моменты остаются теми же: вам нужно создать файл index.html, и он должен находиться в папке «MySite» вместе с папкой с изображениями.
Шаг 18 - Настройка файла index.html
Первое, что нам нужно сделать, это объявить тип документа, кодировку символов и создать <html> теги. Во многих редакторах это должно выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> </html>
Между тегами html нам нужен раздел "head", который содержит всю важную информацию о сайте, которая не отображается внутри body сайта.
На этом этапе всё его содержимое, это заголовок страницы, например:
<head> <title>MySite</title> </head>
Ниже head, логически, мы добавляем body, также заключённое в <html> тегах . Хорошо, теперь мы имеем:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>MySite</title> </head> <body> <!-- content goes here --> </body> </html>
Это базовая настройка страницы, вы можете сохранить этот штамп для будущего использования.
Помните, мы говорили, что у нас есть разделы header, content, sidebar и footer?
Хорошо, теперь каждый из них будет заключён в свой <div> и ему будет присвоен соответствующий id.
<body> <div id="header"> </div><!--end header --> <div id="content"> </div><!--end content--> <div id="sidebar"> </div><!--end sidebar--> <div id="footer"> </div><!--end footer--> </body>
ПРИМЕЧАНИЕ. Хорошо бы, особенно при первом запуске, добавлять комментарии в каждом </div>, чтобы отслеживать иерархию.
Теперь давайте еще раз взглянем на наш psd - мы хотим, чтобы срезы footer и header бесконечно повторялись по сторонам?
Нам понадобится способ растянуть эти элементы, но в то же время чтобы основной контент ("content" "sidebar")
оставался в пределах заданной ширины в центре экрана.
Чтобы справиться с этим, нам нужен большой div, содержащий расширяющиеся элементы, и div под основное содержимое.
Мы должны заметить, что текст footer также центрирован, поэтому нам нужно повторить тот же процесс для footer.
Чтобы сделать это, нам нужно обернуть несколько divs теми, которые у нас уже есть. У нас есть два основных раздела, main section и footer .
Каждый из них будет содержаться внутри одного большого неуправляемого div неопределённой ширины,
и содержимое каждого из них будет заключено в отдельные div, которые определяют ширину и центрирование.
Мы хотим использовать те же правила для main и footer содержимого, поэтому вместо (или в дополнение к) id's они будут иметь определённые классы,
что означает, что вы можете создать набор правил для определения всех div с тем же классом.
Таким образом, основное содержимое будет заключено в div с id "main" а нижний колонтитул будет заключен в div с id "footer." Вот схема для наглядности:

И разметка будет выглядеть так:
<body> <div id="main"> <div id="header"> </div><!--end header --> <div id="content"> </div><!--end content--> <div id="sidebar"> </div><!--end sidebar--> </div><!--end main--> <div id="footer"> </div><!--end footer--> </body>
Теперь мы обернём каждый раздел в контейнере div классом "container."
<div id="main"> <div class="container"> <div id="header"> </div><!--end header --> <div id="content"> </div><!--end content--> <div id="sidebar"> </div><!--end sidebar--> </div><!--end main container--> </div><!--end main--> <div id="footer"> <div class="container"> </div><!--end footer container--> </div><!--end footer-->
Я знаю, что все эти упаковочные divs кажутся лишними, но они пригодятся, когда мы перейдём к стилям страницы.
Шаг 19 - Добавление содержимого
Теперь, когда структура нашей страницы установлена, мы можем начать добавлять контент сверху вниз. Ниже приведено описание элементов html, которые составляют нашу страницу:

Header
На самом верху находится header, и внутри него у нас есть 3 основных элемента: логотип, слоган и меню навигации.
Итак, давайте создадим div для нашего header и чтобы всё было чисто, поместим логотип и tagline в свои собственные div.
<div id="header"> <div id="logo"> </div> <div id="tagline"> </div> </div><!--end header -->
Поскольку это самый важный заголовок страницы, логотип войдёт в <h1> тег. У нас есть больше опций для слогана, в зависимости от того, насколько они важны для вашего сайта. В этом случае я назначу <h3> тег.
Для навигации стандартом является размещение элементов меню в unordered list, причём каждый элемент списка содержит тег привязки.
Итак, мы имеем:
<div id="header"> <div id="logo"> <h1>Logo</h1> </div> <div id="tagline"> <h3>And a little tagline, too.</h3> </div> <ul id="menu"> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Portfolio</a></li> <li><a href="#">Contact</a></li> </ul> </div><!--end header -->
ПРИМЕЧАНИЕ: значение "href" в тегах привязки обычно указывает на ссылку, но в этом случае символ фунта означает "link to top of page."
Основное содержимое
Глядя на main content область, у нас есть 4 разных стиля: большой заголовок сверху, меньший,
и ещё меньший заголовок для новостей, плюс несколько абзацев и небольшие сообщения новостей.
Мы будем называть их <h2>, <h3>, <h4>, <p> и <small> соответственно. Теперь это просто вопрос вставки в ваш контент, что не очень весело, но довольно легко.
<div id="content"> <h2>Lorem ipsum, Dolor sit</h2> <h3>Nullam vulputate felis id odio interdum nec malesuada mi pretium. </h3> <p>Praesent luctus egestas nisl, vitae vehicula eros rhoncus vel. Phasellus consequat arcu eu neque convallis eu vulputate diam vehicula. In eget venenatis nisl. Vestibulum id nulla eu sapien pellentesque malesuada pharetra ac lacus. Curabitur et ultricies quam. Aenean pretium aliquet velit, gravida vulputate urna tempus vel. </p> <p>Proin tempor erat sit amet nisl porta nec vulputate arcu imperdiet. Praesent luctus egestas nisl, vitae vehicula eros rhoncus vel. Phasellus consequat arcu eu neque convallis eu vulputate diam vehicula. In eget venenatis nisl. Vestibulum id nulla eu sapien pellentesque malesuada pharetra ac lacus. Curabitur et ultricies quam. Aenean pretium aliquet velit, gravida vulputate urna tempus vel. Proin tempor erat sit amet nisl porta nec vulputate arcu imperdiet. </p> <div id="news"> <h3>Latest Updates</h3> <h4>Vestibulum id nulla eu sapien pellentesque</h4> <small>June 1, 2009</small> <p>Ut vel turpis a orci pulvinar tincidunt. Mauris id purus turpis. Aliquam metus arcu, facilisis quis pellentesque vitae, dapibus non nulla. Nulla suscipit sagittis sodales. Etiam laoreet ante in purus laoreet id malesuada dui pretium.<a href="#"> Read More</a></p> <h4>Vestibulum id nulla eu sapien pellentesque</h4> <small>June 1, 2009</small> <p>Ut vel turpis a orci pulvinar tincidunt. Mauris id purus turpis. Aliquam metus arcu, facilisis quis pellentesque vitae, dapibus non nulla. Nulla suscipit sagittis sodales. Etiam laoreet ante in purus laoreet id malesuada dui pretium.<a href="#"> Read More</a></p> </div><!--end news--> </div><!--end content-->
Я добавлю теги привязки со значением "Read More" в конце каждого сообщения.
Sidebar
Возьмёмся за sidebar. Боковая панель имеет три элемента, каждый из которых будет обёрнут в свой собственный div.
Каждый div будет содержать <h3> header и unordered list и каждый элемент списка будет содержать тег привязки.
Итак, начните копировать и вставлять текст, он должен выглядеть примерно так:
<div id="sidebar"> <div id="subscribe"> <h3>Subscribe!</h3> <ul> <li><a href="#">Subscribe via RSS</a></li> <li><a href="#">Get Email Updates</a></li> <li><a href="#">Follow us on Twitter</a></li> </ul> </div> <div id="popular"> <h3>Popular Items</h3> <ul> <li><a href="#">Lorem ipsum dolor site amet</a></li> <li><a href="#">Ulvinar tincidunt, Mauris id</a></li> <li><a href="#">Lorem ipsum dolor site amet</a></li> <li><a href="#">Proin tempor erat sit tene</a></li> </ul> </div> <div id="contributors"> <h3>Contributors</h3> <ul> <li><a href="#">John Smith, freelance writer</a></li> <li><a href="#">Jack McCoy, designer</a></li> <li><a href="#">Lenny Briscoe, editor</a></li> <li><a href="#">John Smith, martketing</a></li> </ul> <a href="#">Join Our Team</a> </div> </div><!--end sidebar-->
Footer
Мы можем поставить footer перед проверкой его в браузере, это займет всего секунду.
Стоит отметить, что любые символы, которые будут в вашем тексте, имеют специальные коды в html, например, символ авторского права кодируется как ©
<div id="footer"> <div class="container"> <p>Copyright © 2009 MySite <br /> All Rights Reserved</p> </div><!--end footer container--> </div><!--end footer-->
Давайте посмотрим по разметке:

приятно смотрится, нет? Да, не совсем. Но содержит всю необходимую нам информацию и готов к назначению стилей.
Часть четыре - CSS
Шаг 20 - Добавление CSS
Вот здесь и происходит волшебство.
Создайте в папке сайта новый файл "style.css".
Теперь нам нужно указать браузеру, что этот файл css принадлежит нашему index.html-файлу, поэтому мы связываем его тегом «link href». Поместите эту строку кода в раздел <head> под заголовком.
<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
Теперь html-файл может получить доступ к вашему css-файлу, поэтому любые изменения, внесенные в css, повлияют на html-файл.
Шаг 21 - Основная очистка
На нашем сайте есть пара уродливых вещей, которые мы можем исправить сразу: мы хотим изменить шрифт по умолчанию, мы хотим, чтобы контент был 800px ширины и центрированным и мы хотим избавиться от всех этих пробелов между элементами.
Сначала мы выберем шрифт для всего текста в body страницы по умолчанию:
body { font-family: Arial, Helvetica, sans-serif; }
Далее определим ширину и поля нашего класса "container" .
.container { width: 800px; margin: 0 auto; }
свойство margin: 0 auto является сокращением, означающим, что в верхней части нет поля и что он будет автоматически центрирован по горизонтали.
Теперь посмотрите.

Намного лучше. Следующий шаг попортит внешний вид, но держитесь за мной.
CSS reset
Во всех браузерах padding и margin стоят по умолчанию для каждого элемента, что делает страницы красивыми без стилей, но нам они мешают назначить свои стили.
Чтобы избавиться от всех этих грязных полей, мы сделаем очень простой сброс css, всего лишь правило, которое очистит от заполнения по умолчанию padding и margins. Поместите это в начало вашего файла css:
' body, div, h1, h2, h3, h4, h5, h6, p, ul, img {margin:0px; padding:0px; }
теперь давайте посмотрим:

Шаг 22 - Header
Ладно, всё собрано и готово к нашим манипуляциям! Начинаем добавлять собственные стили, опять же, сверху вниз.
Давайте сначала разберем сложную часть: настройку фоновых изображений для header.
Мы будем играть с повторяющимся обрезком из header. Повторяющееся изображение будет находиться внутри "main" div неопределённой ширины. Нам нужно сообщить браузеру, где находится изображение, и что с ним делать (повторить, не повторить), поэтому мы используем свойство "background" и указываем путь к изображению или 'url': в нашем случае оно находится в папке images, поэтому пишем:
url (images/header_slice.jpg)
и уточняем, чтобы он повторялся по оси x:
#main { background: url(images/header_slice.jpg) repeat-x; }
Проверьте:

удивительно, правда? Попробуйте растянуть ваш браузер, он просто тянется и тянется ... Но мы всё ещё не видим выделения на синей полосе и поскольку мы вырезаем часть заголовка размером 800px, мы можем поместить её в наш "container" div. Проблема в том, что у нас их две (одна для main div, одна для footer), поэтому нам нужно указать, чтобы div с классом "container" находился внутри div с id "main"
установить изображение так же, как и раньше, но на этот раз нам нужно указать "no-repeat":
#main .container { background: url(images/header.jpg) no-repeat; }
Посмотрите:

отлично! Выделение сидит именно там, где мы этого хотим, и вписываемся в повторяющиеся стороны.
Шаг 23 - Замена изображения логотипа
Наш логотип довольно сложный, правда? У нас фоновое изображение и не-html-шрифт с внутренней тенью. Мы не можем сделать это в css, поэтому мы должны заменить текст на изображение.
"Почему бы просто не поместить изображение вместо строки <h1>"?
можете вы спросить. Ну, в Интернете <h1> header - это в основном «имя» вашей страницы, и важные, мощные роботы (google) сканируют это свойство при поиске ключевых слов. Если у вас нет <h1> header, ваш сайт можно назвать kalamazoo, но он не появится в поиске точно этого слова.
Существуют и другие методы, которые имеют свои преимущества (см. here, особенно технику № 8), но этот наиболее подходящий в этой ситуации.
Поэтому, решая проблему, мы используем хитрость под названием «замена образа», чтобы использовать изображение, сохраняя <h1> header в разметке. Добавим изображение в качестве фона в #logo div.
#logo { background: url(images/logo.png) no-repeat; }
Если вы посмотрите в браузер, увидите, что наш логотип был расколот пополам. Это связано с тем, что мы не дали ему места, мы можем решить это, указав размеры изображения:
#logo { background: url(images/logo.png) no-repeat; height: 84px; width: 235px; }

Лучше, но у нас по-прежнему есть оригинальный <h1> текст, но мы можем это исправить! Всё, что нужно, это установить значение text-indent на что-то смешное, например -9999px вне страницы, так что никто не увидит её, кроме роботов поисковой системы.
#logo h1 { text-indent: -9999px; }
Теперь посмотрим, наш логотип с радостью сидит там, где был <h1> текст. Но это всё выглядит довольно плохо, всё теснится наверху. Когда мы хотим переместить элемент из его исходного положения на страницу, мы можем использовать свойства padding и margin. Мы собираемся попробовать оба,чтобы увидеть разницу
Во-первых, попробуем добавить margin в начало тега h1. Мы узнаем, как много можно сделать с помощью линейки в Photoshop.
#logo h1 { text-indent: -9999px; margin-top: 40px; }

Oops! Мы переместили логотип, но вместе со страницей! Попробуем вместо этого отредактировать padding :
#logo h1 { text-indent: -9999px; padding-top: 40px; }
Теперь взгляните, эта чёртова штука вернулась туда, откуда взялась! Это связано с тем, что свойство margin перемещает весь элемент, но padding перемещают только содержимое элемента, оставляя фон на своём месте. Таким образом, если бы экран был, скажем, шириной 19999px, мы бы увидели, что наш <h1> header опустился на 40px, но это не то, к чему мы стремились.
Итак, чтобы переместить фоновое изображение логотипа, нам нужно переместить div над ним, потому что весь div-логотип является "content" заголовка div. попробуем:
#logo h1 { text-indent: -9999px; } #header { padding-top: 40px; }

Намного лучше! Теперь логотип выглядит так же, как в PSD, в нужном месте. Если бы мы могли исправить этот слоган ...
Шаг 24 - Плавающий слоган
Итак, теперь нам нужно найти способ вытащить этот слоган к логотипу. Проблема в том, что элементы html располагаются вертикально, подталкивая друг друга вверх и вниз по странице.
У нас есть несколько вариантов поправок, но я собираюсь использовать float, которые немного сложны, но очень полезны, когда они есть.
Okay, что за float? Ну, это сложно. В основном, когда вы указываете элементу 'float', он прикрепляется к стороне страницы или элемента, а также вынимает его из обычного "потока" страницы. Задумались? Давайте покажу.
#logo { background: url(images/logo.png) no-repeat; height: 84px; width: 235px; float: left; }

Ну, как вы видите, нам удалось вывести слоган в сторону, но вместе с меню навигации.
Я думаю об этом так: нормальный элемент (например, div или h1 header или изображение), даже если он совсем маленький, незаметно занимает всё пространство сбоку от него, как одна большая длинная горизонтальная планка.

Вот почему все остальные элементы остаются под ним, вместо того, чтобы уживаться рядом. Когда вы float элемент, вы убираете всё дополнительное пространство в сторону и ограничиваете его только тем местом, которое оно занимает непосредственно, позволяя другим элементам обтекать его.
Теперь, когда вы знаете, как работают floats, как мы можем исправить нынешнюю ситуацию? Во-первых, мы должны изолировать слоган в свой собственный float, так чтобы он лежал вне обычного «потока» страницы:
#tagline { float: left; }
Посмотрите в браузере и посмотрите на это, мы сделали хуже. Теперь пункты меню обернулись вокруг нашего слогана! Нам нужно восстановить нормальный поток документа после floated элементов. Есть несколько способов, но мы используем самый прямой метод. Вернитесь в свой файл index.html и добавьте новый div под нашими floated div. Вместо класса или id к этому div, мы собираемся назначить ему стиль (да, это встроенный стиль, но только очень маленький) clear: both.
<div id="header"> <div id="logo"> <h1>Logo</h1> </div> <div id="tagline"> <h3>And a little tagline, too.</h3> </div> <div style="clear:both"></div>
Сохраните свой html-файл и проверьте в браузере: вы должны увидеть слоган рядом с логотипом, а меню ниже. Теперь нам осталось превратить этот слоган в форму и поместить туда, где ему надлежит быть. Начнем с копирования стилей шрифтов из Photoshop:
#tagline h3 {font-size: 30px; color: #e4dfdf; }
и добавьте немного padding сверху и слева:
#tagline { float: left; padding-top: 20px; padding-left: 20px; }
посмотрите: мы куда-то продвинулись!

Шаг 25 - Панель навигации
Теперь нам нужно расположить меню навигации по прямой. Во-первых, определим стиль шрифта, чтобы соответственно всё расположить. Когда вы набираете шрифт в списке тегов, вам нужно указать не только элементы списка, но и anchors внутри них. Мы указываем наш конкретный unordered list, чтобы справиться с другими отдельно. Нам также нужно избавиться от подчеркиваний и bullet points.
ul#menu { list-style: none; } ul#menu li a { font-size: 30px; color: #676666; text-decoration: none; }
Отлично, теперь нам нужно найти способ поставить все наши ссылки подряд. Как? Больше Floats! Мы собираемся сместить элементы списка влево, чтобы каждый элемент прилипал к тому, который находится рядом с ним.
ul#menu li { float: left; }
Если вы посмотрите в браузере, заметите ту же самую проблему, с которой мы сталкивались ранее с floated элементами: другие элементы обтекают их. Как и раньше, мы можем вставить наш clearing div сразу после unordered list.
<ul id="menu"> <li><a href="#">Home</a></li> <li><a href="#">About</a></li> <li><a href="#">Portfolio</a></li> <li><a href="#">Contact</a></li> </ul> <div style="clear:both"></div> </div><!--end header -->
Все элементы списка теперь должны быть в строке, мы просто должны выделить их и немного сдвинуть меню. Измерив расстояние от нижней части логотипа до верхней части текста меню, мы получаем около 55px.
Первый элемент около 30px слева от направляющей, поэтому установим заполнение элемента списка в 30px слева.
ul#menu { list-style: none; padding-top: 55px; } ul#menu li { float: left; padding-left: 30px; }
Нам нужно больше пространства между элементами, если мы измерить в psd, это около 105px, но поскольку у нас уже есть 30px padding между ними, нам нужно только добавить 75px padding справа от каждого элемента.
ul#menu li { float: left; padding-left: 30px; padding-right: 75px; }
Полюбуйтесь нашей работой:

Отлично! Наше меню такое же, как в psd. Переходим к content!
Шаг 26 - Content
Верхняя область
Первое - установим все шрифты, чтобы видеть интервал, с которым надо работать. Подключите информацию о шрифтах из Photoshop:
#content h2 { font-size: 36px; color: #015878; } #content h3 { font-size: 24px; color: #444444; } #content h4 { font-size: 18px; color: #373737; font-weight: normal; } #content p { font-size: 14px; color: #595858; } #content small { font-size: 12px; color: #373737; } #content a { color: #0f6c8d; font-weight: bold; text-decoration: none; }
Получим нечто подобное:

Вы можете заметить, что мы ещё не установили фоновый цвет для области содержимого. Это потому... Я забыла. Тогда сделаем сейчас, так?
body { font-family: Arial, Helvetica, sans-serif; background: #ebe8e8; }
Хорошо, теперь мы готовы добавить padding к пространству снаружи.
Во-первых, расстояние от нижней части nav menu до верхней части заголовка h2 составляет около 25px:
#content h2 { font-size: 36px; color: #015878; padding-top: 25px; }
Затем расстояние от нижней части заголовка h2 до верхнего края заголовка h3 также составляет около 25px, поэтому повторите в основном тот же код:
#content h3 { font-size: 24px; color: #444444; padding-top: 20px; }
Теперь расстояние от нижней части заголовка h3 до вершины первого абзаца составляет около 45px, но если мы установим padding-top до 40px, мы получим 40px padding между этими абзацами. Так как параграфы расположены друг от друга только на расстоянии 20px, нам нужно разбить padding сверху и снизу: добавьте 20px padding к нижней части заголовка h3 и 20px padding в начало абзаца.
#content h3 { font-size: 24px; color: #444444; padding-top: 20px; padding-bottom: 20px; } #content p { font-size: 14px; color: #595858; padding-top: 20px; }
Проверьте результат:

Новая секция
Расстояние между разделами немного отличается в разделе новостей, в первую очередь, нам нужно немного сжать его. Также слишком много padding под заголовком h3, так что немного сократим.
Нам также нужно уменьшить padding над параграфами и добавить padding между двумя новостями.
#news { padding-top: 10px; } #news h3 { padding-bottom: 10px; } #news p { padding-top: 10px; padding-bottom: 14px; }
Будет выглядеть так:

Теперь нам нужно получить sidebar в стороне и мы закончим основной контент.
Шаг 27 - Располагаем Sidebar
Во-первых, нужно установить ширину секции контента:
#content { width: 510px; }
Теперь, чтобы получить там sidebar, мы снова будем использовать float, устанавливая и область содержимого, и боковую панель влево.
#content { width: 510px; float: left; } #sidebar { float: left; }
В своём браузере вы заметите, что текст footer обернулся вокруг sidebar. Мы знаем, как справиться с этой проблемой: просто нужно добавить наш небольшой clearing div в разметку:
<div id="contributors"> <h3>Contributors</h3> <ul> <li><a href="#">John Smith, freelance writer</a></li> <li><a href="#">Jack McCoy, designer</a></li> <li><a href="#">Lenny Briscoe, editor</a></li> <li><a href="#">John Smith, martketing</a></li> </ul> <a href="#">Join Our Team</a> </div> </div><!--end sidebar--> <div style="clear:both"></div> </div><!--end main container--> </div><!--end main-->
Хорошо, следующий шаг - просто скопировать стили шрифта из нашего psd для sidebar:
#sidebar h3 { font-size: 24px; color: #044055; font-weight: normal; } #sidebar ul li a { font-size: 14px; color: #393838; }
Помните, что для стиля шрифта ссылок в unordered list, нам нужно обратиться к anchor тегу, а не к самому элементу списка.
Теперь, если мы посмотрим на наш psd, заметим, что текст для элементов списка в виджете «subscribe» немного больше, чем в остальной части sidebar. Для исправления нам нужно настроить таргетинг на конкретный unordered list, поэтому добавим значение id в subscribe ul в нашей разметке:
<ul id="subscribe"> <li><a href="#">Subscribe via RSS</a></li> <li><a href="#">Get Email Updates</a></li> <li><a href="#">Follow us on Twitter</a></li> </ul>
Тогда мы можем обратиться к ней в css:
ul#subscribe li a { font-size: 18px; }

Теперь делаем стиль sidebar: добавьте отступы, поля, фон и границы. Сначала давайте избавимся от bullets:
#sidebar ul { list-style: none; }
ОК, пока ещё всё не в том месте, поэтому давайте исправим это, добавив margins вверх и влево. Измеряя в вашем psd, измерьте, где начинается граница sidebar .
#sidebar { float: left; margin-left: 55px; margin-top: 35px; }
Теперь для фона: под свойством margin-top добавьте свойства background и border:
background: #d4d6d3; border: 1px solid #BEBDBD;
Затем мы добавим 15 px padding со всех сторон:
padding: 15px;
А затем добавим padding в стили текста, чтобы выделить наше меню:
#sidebar h3 { font-size: 24px; color: #044055; font-weight: normal; padding-bottom: 20px; padding-left: 15px; } #sidebar ul { list-style: none; padding-bottom: 25px; } #sidebar ul li a { font-size: 14px; color: #393838; } ul#subscribe li { padding-bottom: 5px; } ul#subscribe li a { font-size: 18px; }

Наш sidebar уже выглядит почти идеально, нам просто нужно добавить значки в разделе подписки и создать тег "join us" .
Хорошо, поработаем с иконками. Добавление изображений в unordered list может показаться запутанным, но если вы делаете шаг за шагом, толк будет. Но это немного утомительно.
Для начала нам нужно оставить места для значков. Мы установим их как фоновые изображения, поэтому, если мы используем свойство padding для перемещения элементов списка по битам, они не будут затронуты. Значки около 26px в ширину, поэтому мы добавим padding слева от элементов списка:
ul#subscribe li { padding-bottom: 5px; padding-left: 30px; }
Теперь нужно настроить target на каждый отдельный элемент списка, поэтому мы добавим некоторые id в разметку:
<ul id="subscribe"> <li id="rss"><a href="#">Subscribe via RSS</a></li> <li id="email"><a href="#">Get Email Updates</a></li> <li id="twitter"><a href="#">Follow us on Twitter</a></li> </ul>
Теперь мы добавляем фоновые изображения для каждого элемента списка:
li#rss { background: url(images/rss_icon.png) no-repeat; } li#email { background: url(images/email_icon.png) no-repeat; } li#twitter { background: url(images/twitter_icon.png) no-repeat; }
В этот момент мне пришло в голову, что, возможно, 18px многовато для ссылок, поэтому я уменьшила его до менее драматичных 16px, что позволило мне добавить немного padding левого края, не растягивая sidebar.
ul#subscribe li { padding-bottom: 5px; padding-left: 35px; }

Наш маленький sidebar почти завершён! Теперь к стилю кнопки:
Нужно настроить target на кнопку, поэтому давайте добавим класс к разметке: (на этот раз вместо id будет класс, что является обычной практикой, поскольку мы могли гипотетически добавить ещё несколько кнопок)
<a href="#" class="button">Join Our Team</a>
Поэтому давайте исправим текстовый стиль и добавим наш повторяющийся срез:
a.button { color: #393838; text-decoration: none; background: url(images/button_slice.jpg) repeat-x; }

как видите, фоновое изображение есть, но оно появляется только за текстом, мы должны дать ему пространство. Во-первых, дадим margin, чтобы он оказался в центре sidebar:
margin-left: 30px;
и некоторый padding с каждой стороны, так чтобы наша кнопка разместилась:
padding: 13px 23px;
Это короткий способ записи свойств padding и он полностью приемлем, поскольку экономит место. В этом случае он определяет 13px padding в верхней и нижней части и 23px padding слева и справа.

кнопка отлично выглядит, но, к сожалению! Переместилась вправо на 23px, так что давайте немного уменьшим margin для компенсации:
margin-left: 14px;
Теперь давайте дадим ей немного места, добавив padding ко всему sidebar div:
#sidebar { float: left; margin-left: 55px; margin-top: 35px; background: #d4d6d3; border: 1px solid #BEBDBD; padding: 15px 15px 30px 15px; }
Вот опять свойство краткости: в таком порядке: сверху, слева, снизу, справа. Так что здесь написано 15px со всех сторон, кроме нижней, которая должна быть 30px.
Наконец, нужно добавить границу 1px к классу кнопок:
border: 1px solid #c7c7c7;

И вот он, наш sidebar!
Шаг 28 - Footer
И последнее, не менее важное: наш простой маленький footer. Мы установим footer так же, как мы установили header:
Использование повторяющегося фрагмента в пределах div неуказанной ширины, а затем добавления содержимого внутри фиксированного по ширине, центрированного div.
Здесь нам пригодится .container div, потому что нам не нужно указывать 800px или margin: auto на этот раз, потому что это уже сделано.
Начнем с повторяющегося фрагмента:
#footer { background: url(images/footer_slice.jpg) repeat-x; }

Это начало, но оно действительно крошечное. Давайте добавим padding и сделаем текст белым:
#footer { background: url(images/footer_slice.jpg) repeat-x; padding-top: 20px; padding-bottom:60px; margin-top: 40px; color: #fff; }

и в целом:

Шаг 29 - Маленькие изменения
В браузере вещи выглядят немного иначе, чем в Photoshop, поэтому мы могли бы внести небольшие изменения. Например, я хотела бы немного больше padding над основным контентом и sidebar. Мы добавим его в низ меню.
ul#menu {padding-bottom: 50px}
Я также решила сдвинуть меню влево, поэтому я собираюсь удалить padding-left. Теперь элементы расположены плотнее, потому что у нас есть padding из 75px справа и 30px слева, в общей сложности 105. Теперь, когда мы убрали левый padding,нам нужно добавить его справа, чтобы убрать разницу:
ul#menu li { float: left; padding-right: 105px; width: 95px; }
И общий финал:

Итак, дальше ... подожди? Что? Мы закончили?
Мы закончили!
Теперь небольшая уборка: Validation.
Шаг 30 - Проверка
Теперь validation является решающим шагом в дизайне веб-сайта, я не буду вдаваться в бесконечные причины этого, потому что this article сделает это лучше. Я собираюсь пройти этот процесс:
HTML Validation
Перейдите в w3.org Validation Service, выберите подтверждение по загрузке файла, выберите файл index.html и нажмите "check."
Дальше... Момент истины:
RED (Red плохо!)
Не волнуйся, всё не так плохо; посмотрим, что пошло не так:
похоже, что есть одна ошибка:

Они поймали меня на одном и том же id tag дважды, что может вызвать серьёзную путаницу. Поскольку у нас есть много стилей, определенных для ul с идентификатором «subscribe», мы просто изменим имя div: назовем его «feeds»,
Теперь надо проверить, что не определили какие-либо стили для #subscribe, а у нас их нет!
Для подстраховки давайте перезагрузим нашу страницу, чтобы избежать непреднамеренных изменений.
Выглядит хорошо! Проведём validation снова:
Успешно! Наша страница с правильным XHTML. Вы даже можете загрузить значок, если хотите похвастаться.
Примечание: я приятно удивилась, обнаружив только одну ошибку, если вам не повезло, прочитайте предлагаемую информацию в w3 shcools или прочтите this article by Glen Stansberry.
Кажется, мы закончили! Ах, если бы всё было так просто. Нам ещё нужно проверить CSS!
CSS Validation
Перейдите к The w3 CSS Validator и выполните тот же процесс, что и с html, только на этот раз выберите файл style.css. Проверяем...
Всё правильно!
Однако мы получили пару предупреждений. Чтобы оставаться в пределах благосклонности церкви, мы должны обратить на них внимание:

Это всего лишь несколько небольших проблем: мы должны были объявить ширину для всех наших floated items. Опять же, эти предложения не являются обязательными, но лучше всего прислушиваться к конструктивной критике.
Очистка: элементы слогана, меню unordered list и sidebar должны иметь ширину. Мы хотим это сделать, не изменяя внешний вид страницы.
Сначала слоган. Мы можем только грубо догадаться, что это около 400px в ширину.
#tagline { float: left; padding-top: 20px; padding-left: 20px; width: 400px; }
И перезагрузка: без изменений, отлично. Дальше, элементы menu list. Это немного сложнее: наша страница шириной 800px, так что это максимальная общая ширина элементов списка. Если разделить на четыре и задать ширину 200px, элементы будут перемешаны и отобразятся по вертикали. Это потому, что у нас есть padding по обеим сторонам каждого элемента списка: 30px слева и 75px справа. Вычтите 105 из 200, оставшаяся ширина равна 95px.
ul#menu li { float: left; padding-left: 30px; padding-right: 75px; width: 95px; }
То же самое с sidebar: давайте сначала посмотрим на ширину области содержимого: 510px. Остаток на странице от 800px составляет 290px, но сначала нам нужно вычесть все отступы слева и справа: 290-30 = 260. Затем вычитаем левое поле, и мы остаемся с 205px. Ещё одно: наша граница 1px, поэтому давайте вычтем ещё 2px и установим ширину sidebar 203px. Проверьте снова, без изменений.
Отлично, проверяем ещё раз, ошибок нет, даже предупреждений!
Наша веб-страница, насколько это касается стандартов w3c, совершенна.
Заключение
Итак, у вас есть один простой сайт с хорошим кодом. Надеюсь, в этом уроке вы приобрели некоторые ценные навыки, чтобы применить их к своим проектам и готовы приступить к написанию собственных сайтов.
- Следуйте за нами на Twitter, подписывайтесь на Nettuts + RSS Feed за статьями и уроками по веб-разработке.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post