By
klierik
Техническое задание.
Базовые требования
Платформы: Windows, Mac OS X.
Браузеры
IE8 и выше
Chrome последние 2 версии
Firefox последнии 2 версии
Opera последнии 2 версии (на базе движка Blink)
Safari последнии 2 версии
В качестве эталонного браузера использовать Chrome или Firefox.
Это значит что в одном из них вёрстка должна как можно точнее соотвествовать макету, в остальных не должно быть визуальных отличий.
Соответствие макету
Вёрстка должна 1:1 соответстввовать дизайну, но допускаются незначительные различия. Данные различия, как правило, возникают из-за шрифтов или при использовании технологии адаптивной разметки. В помощь прийдет инструмет PixelPerfect -- расширение для браузера.
Отдельно отмечу что верстка должна быть написана в лучших традисиях graceful degradation. Т.е. всё современные фишки оформления должны быть выполнены средствами CSS. Браузеры которые не поддерживают CSS3 или некторые его свойства должны корректно рендерить страницу без них.
Стандарты
HTML5/CSS3. HTML - должен проходить валидацию. CSS - не обязательно.
В кажестве исходного кода для CSS использовать препроцессор LESS или SASS.
Не обязательно, но крайне желательно использовать Grunt для генерирования LESS/SASS в CSS с применением технологии сжатия.
Сброс стилей
В качестве сброса стилей браузера использовать Normalize.css.
Javascript:
За основу взять фреймворк jQuery версии 1.11.х или 2.x.x.
Для поддержки HTML5 тегов в IE можно использовать код:
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]><script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script><![endif]-->
Допускается применение modernizr если потребуется.
Ширина сайта
Стандартная ширина сайта - 960px.
Grid
За основу взять любой распрастранненый инструмет для построения макета, например 960.gs или Bootstrap Grid System (требуются знания фреймворка)
Изменение/наполнение контентом
Блоки могут и будут содержать иной контент, отличный от того что в макете. Контент может занимать как больше так и меньше пространства. При вёрстке следует это учесть что бы в будущем макет не "поехал".
Особености макета
1. Шапка
1.1. Меню - Все как видно так и делать. Пунктов меню может быть больше -- это один список который выводится в 2 столбца. Текст пункта меню может быть длинее и распологатся в 2 строки. Обратить внимание на высоту строки в этом блоке, так как пункт в 2 строки будет выглядеть плотнее.
1.2. Учесть, что под ссылкой "Мы на Facebook" появятся в будущем еще несоклько аналогичных ссылок.
1.3. Возможно добавится пару языков.
1.4. Поле поиска
1.4.1. В поле поиска добавить placeholder с текстом "Искать...".
1.4.2. Поле поиска изначально должно быть на 1/3 меньше шириной. Поле прилегает к правому краю.
1.4.3. При клике на поле, средствами CSS оно должно растянутся на ширину, указанную на макете.
2. Слайдер в 4 колонки.
Слайдер состоит из 4х колонок в слайде. Прокрутка осуществляется при помощи ползунка под ним.
Требуется поддержка для touch-устройств для прокрутки контента.
3. Промо-слайдер
3.1. Табы слайдера -- первый и последний "затухают"с градиентом. Активный - крассный. На макете первый затухающий пункт меню содержит ошибку: градиент должен быть от светло-серого в прочрасный, слева на право (для последнего наоборот)
3.2. Кол-во слайдов может быть больше или меньше, чем на макете.
3.3. С прокруткой каждого слайда так же должны прокручиватся Табы (анимация при этом не обязательна).
3.4. В случае, если размер экрана меньше чем ширина макета, стрелка Предыдущий/Следующий слайд должны быть внутри области слайдера.
3.5. Кнопку управления слайдера должны поддерживать состояние "disabled". В случае если прокрутка далее/назад невозможна, стрелка должна быть не-активной. Визуально достаточно будет применить прозрачность 50% к кнопке.
3.6. Слайдер не влияет на 4 колонки под ним.
4. Контент
4.1. Меню слева. Пукты меню могут быть в несколько строк длиной.
4.2. Центральная колонка
4.2.1. Тут ничего особенного, фотография и статья, набранная контент-менеджером.
5. Футер
5.1. 3 колонки разибы по ширине области. Слева меню может наполнятся. Справа какой-то текст. По-центру виджет от Facebook.
5.2. Оступ снижу дл футера сделать высотой 20px.
Дополнительно
Кнопка "Отправить письмо", справа от макет -- закреплена всегда на одно расстоянии от верха.
WYSIWYG
Хочу обратить внимание на то что контент будет набиратся контент-менеджером, который не имеет соотвествующих знаний и навыков в работе с разметкой, а использует только окно редактора и инструменты которые он содержит. Соотвественно весь контент который визуально отвечает таким критериям (статьи, информационные блоки), должен "уметь" корректно выводить результат набранный контент-менеджером в редакторе. В качестве примера такого редактора можно взять TinyMCE
Масштабирование страниц
Поддержка не обязательна. Пользователь сам на себя берет отвественность за результат отображения страницы применяя к ней любые инструменты которые влияют на её изменение.
Если есть желание все таки учесть поддержку масштабируемости, то советую почитать про Эластичные шаблоны, а так же опосля ознакомится с "rem"
HTML код
Кодировка – utf-8
Структурный, не комментируемый код
Семантическая разметка на уровне грамотного использования тегов.
Имена классов и идентификаторов – осмысленные, на усмотрение разработчика.
Классы служат для привязки оформления, идентификаторы – скриптов.
LESS/SASS код
Структурный, отбивка табами.
Комментариями обозначены начало/конец крупных модулей/блоков разметки.
Допускается использование вендорных префиксов.
Стили для IE вынесены в отдельные CSS файлы, если они потребуются.
Для реализации в IE не поддерживаемых CSS свойств использование javascript хаков, или каких либо других интсрументов, запрещено (выше уже упоминалось про graceful degradation)
Перед тем как приступить к работе настоятельно рекомендую ознакомится с темой Типичные ошибки начинающего верстальщика
Javascript код
Структурный, отбивка табами.
Имена переменных осмысленные, на усмотрение разработчика.
Снабжен комментариями: описаны назначения
методов/классов
функций
условий.
Для объемных задач используется ООП, для простых – обычные функции.
Код должен быть без ошибок.
При использовании Ajax и не предоставления заказчиком api для взаимодействия с серверной частью, api создается на усмотрение разработчика.
Изображения
Имена файлов осмысленные, на усмотрение разработчика.
Графику следует оптимизацировать в Photoshop (использую инструмент "Save for Web") и ImageOptim (OSX) или OptiPNG (Windows)
Малые изображения и иконки объеденить в спрайты.
Для полноцветных RGBA картинок можно использовать инструмент Stitches
Для векторных изображений иожно использовать IcoMoon
Организация структуры файлов и папок
HTML файлы лежат в корне. Главная страница – index.html. Остальные – по именам макетов.
Стили в папке - /css/
SASS/LESS в соответствующей папке - /sass/ или /less/
Javascript - /js/
Изображения оформления - /images/
Изображения содержания - /thumbs/ или /pic/
Шрифты - /fonts/
Наглядный пример
Краткий вариант - только директории:
Полный вариант -- директории и файлов:
Удачи в обучении
Автор макета -- Павел Борисенко предоставил данную работу на благо обучения начинающим
За основу ТЗ был взят пример со статьи Техническое задание на верстку сайта
design 1 - splat.zip
Question
aaron
Подскажите.
Я новичок в верстке и только осваиваю шаблоны. В сети нашел такой готовый макет - своего рода скелет для будущего шаблона.
http://jsfiddle.net/...tPCz8CJv/66Eh2/
У меня вопрос по поводу footer. Я просмотрел код и меня смущает краткость тех строк, с помощью которых подвал прижимается книзу сайта. Действительно ли такой способ является рабочим?
Если так, то он мне нравиться больше, чем "классический", с отрицательным margin-top для footer.
Конечно, я его протестировал немного - вроде все работает. Но хотел спросить и уточнить у людей, которые больше меня знают в верстке.
Edited by aaronLink to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.