Метатеги title, description и author
Далее HTML шаблон содержит следующие три строки:
<title>HTML5. Базовый шаблон для любого проекта</title> <meta name="description" content="Шаблон HTML5 для любого проекта"> <meta name="author" content="Кодер">
Эти элементы уже давно являются частью HTML, поэтому здесь нет ничего особенного. это то, что отображается в строке заголовка браузера (например, при наведении курсора на вкладку браузера). Этот элемент является единственным обязательным элементом внутри .
Два других — необязательные метатеги, определяющие описание для SEO и автора. Все элементы внутри
являются необязательными, за исключением .
Элемент
Следующим за в любом HTML документе является элемент :
<html lang="ru">
В приведенном фрагменте кода мы включили атрибут со значением , которое указывает, что документ написан на русском языке. Аттрибут не обязательный, но вы получите предупреждение от большинства валидаторов HTML страниц, если вы его не укажите.
Элемент разделен на две части, и .
Раздел содержит важную информацию о документе, которая не отображается для пользователя, например, кодировка символов, ссылки на CSS файлы, JavaScript и так далее.
Раздел содержит все, что отображается в браузере — текст, изображения, и так далее.
Документация Django библиотек
Рецепты Django ORM
Рецепты Django ORM — это книга о работе с моделями Django ORM и Django. Django ORM является одним из ключевых столпов Django. Он предоставляет абстракции …
Django Rest Framework
Django Rest Framework (DRF) — это библиотека, которая работает со стандартными моделями Django для создания гибкого и мощного API для проекта.
Django CMS
Django CMS — это современная платформа для веб-публикаций, построенная на Django, фреймворке веб-приложений «для перфекционистов с соблюдением сроков». Django CMS предлагает готовую поддержку общих функций, …
Channels
Channels — это проект, который использует Django и расширяет его возможности за пределы HTTP — для обработки WebSockets, протоколов чата, IoT-протоколов и многого другого. Он …
ASGI — спецификация и утилиты
ASGI (Asynchronous Server Gateway Interface) является духовным наследником WSGI, предназначенным для обеспечения стандартного интерфейса между асинхронными веб-серверами, платформами и приложениями Python. WSGI предоставил стандарт для …
Python Social Auth
Python Social Auth — это простой в настройке механизм социальной аутентификации/регистрации с поддержкой нескольких платформ и провайдеров аутентификации. Созданный с использованием базового кода из django-social-auth, …
Один из самых простых способов создания постраничной навигации
Пагинация страниц php и с использованием баз данных, библиотек jQuery и AJAX возможна разными способами. Выделяют плагины, работающие на стороне пользователя и на стороне сервера.
Приведем простой пример скрипта с применением jQuery, работающего на стороне пользователя. Он позволит вам создать быстрый и эстетичный пейджинг страниц.
Используем скрипт постраничной навигации simplePagination, укомплектованный тремя темами оформления с поддержкой Bootstrap. Скрипт довольно мало весит и прост в установке.
1. Подключаем jQuery
Если на своем на сайте вы еще не используете jQuery, на странице между тегами <head> и </head> нужно подключить jQuery не ниже версии 1.7.2.
Сделать это можно двумя способами. Первый — воспользоваться специальным хранилищем Google: <script src=»http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js»></script>.
Второй — использовать библиотеку jQuery из скачанного архива с исходниками, заранее загрузив ее на хостинг в папку с вашим сайтом:
<script type=»text/javascript» src=»путь_к_js/jquery.min.js»></script>
Следующей строчкой нам нужно подключить непосредственно плагин jquery.simplePagination.js:
<script type=»text/javascript» src=»путь_к_js/jquery.simplePagination.js»></script>
2. Подключаем CSS
Пагинация страниц CSS предполагает выбор темы с наиболее подходящим дизайном из трех представленных: светлого, темного и компактного. Далее из исходного файла со стилями необходимо выбрать часть кода с желаемым стилем и вставить его в файл стилей .css сайта.
Если не хотите усложнять себе задачу, просто подключите исходный файл CSS такой строчкой кода:
<link type=»text/css» rel=»stylesheet» href=»путь_к_css/simplePagination.css»/>
3. Прописываем код HTML
Пагинация страниц HTML-кода подразумевает вывод панели пейджинга на страницах сайта. Для этого в месте, где будет располагаться панель, нужно прописать такой код:
- <div id=»light-pagination» class=»pagination»></div> (светлая тема);
- <div id=»dark-pagination» class=»pagination»></div> (темная тема);
- <div id=»compact-pagination» class=»pagination»></div> (компактная тема).
4. Инициализируем плагин
Для запуска плагина нам нужно всего несколько строк кода:
$(function() {
$(#light-pagination).pagination({
items: 100,
itemsOnPage: 10,
cssStyle: ‘light-theme’
});
});
Данный пример приведен для светлой темы #light-pagination. Для ее замены на темную нужно лишь изменить селектор на #dark-pagination, для компактной — #compact-pagination. Обязательно в этом случае меняйте и класс в файле со стилями cssStyle.
Чтобы настроить этот скрипт, применяют такие опции:
- items — общее число элементов для расчета страниц пагинации (1 по умолчанию);
- itemsOnPage — число отображаемых на каждой странице элементов (1 по умолчанию);
- pages — число страниц в списке. Если обозначено значение, то вышеуказанные опции items и itemsOnPage не применяются;
- displayedPages — число отображаемых в процессе навигации страниц. Максимально допустимо 3. По умолчанию — 5;
- edges — число страниц, которые видны в начале и в конце пейджинга. По умолчанию — 2;
- currentPage — стартовая страница после запуска. По умолчанию — 1;
- hrefTextPrefix — строчка, которая используется в атрибуте HREF. Ее добавляют перед номером страницы. По умолчанию «#page- «;
- hrefTextSuffix — строчка, которая используется в атрибуте HREF. Ее вставляют после номера страницы. По умолчанию — пустая;
- prevText — текст кнопки на предыдущую страницу. По умолчанию — Prev;
- nextText — текст кнопки на следующую страницу. По умолчанию — Next;
- cssStyle — определяет стиль CSS. По умолчанию — light-theme;
- selectOnClick — выбор страницы после нажатия. По умолчанию — включен (true).
Для тех, кому не хватает этих опций, есть дополнительные функции и доступные методы использования данного плагина на странице разработчика.
В итоге весь код этого пагинатора, установленного на одной из страниц сайта, должен выглядеть так:
<script src=»http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js»></script>
<script type=»text/javascript» src=»paginator/jquery.simplePagination.js»></script>
<link type=»text/css» rel=»stylesheet» href=»paginator/simplePagination.css»/>
<div id=»light-pagination» class=»pagination»>
<script type=’text/javascript’>
$(window).load(function(){
$(‘#light-pagination’).pagination({
items: 100,
itemsOnPage: 10,
hrefTextPrefix: »,
hrefTextSuffix: ‘.html’,
prevText: ‘Начало’,
nextText: ‘Конец’,
cssStyle: ‘light-theme’
});
});
</script>
Этот скрипт нужно установить на все страницы, где требуется пагинация.
§6. Формы
6.1. Наберите код пустой html-страницы. В качестве базового адреса укажите http://localhost/test. Добавьте код простейшей формы для ввода имени и фамилии пользователя. Обязательно задайте имена полям ввода. Для связи полей формы с соответствующим текстом используйте элемент ‘label’. В качестве обработчика формы укажите скрипт php/registration.php. Данные должны отправляться методом ‘POST’. Не забудьте также задать имя форме и отключите автозаполнение полей. Кнопку отправки даных формы на сервер создайте при помощи элемента ‘input’. Показать решение.
6.2. Усложните код первой задачи. Добавьте поле выбора пола, использовав радиокнопки, а затем поле выбора владения языками, используя три элемента ‘input’ в виде флажков для русского, белорусского и английского языков. Не забудьте связать подписи к кнопкам с самими кнопками при помощи элемента ‘label’. Добавьте кнопку сброса формы. Внешний вид страницы показан на рис. 6.2a. Показать решение.
Условие задачи №6.2
6.3. Продолжим усложнять форму, код которой был написан в задачах №1 и №2. Добавьте в форму поля выбора страны проживания и загрузки фотографии для профиля. Используйте для этого, соответственно, элементы ‘select’ и ‘input’. Внешний вид страницы показан на рис. 6.3a. Показать решение.
Условие задачи №6.3
6.4. Добавьте в код формы, написанный в задачах №1-№3, автозаполнение в поле ввода имени, а также поля ввода логина и пароля. Используйте для этого, соответственно, элементы ‘datalist’ и ‘input’. Объедините все поля формы, кроме кнопок сброса и отправки, при помощи элемента ‘fieldset’ и укажите заголовок, как показано на рис. 6.4a. Поэкспериментируйте с атрибутами элементов формы. Показать решение.
Условие задачи №6.4
6.5. Восстановите код страницы, представленной на рис. 6.5a. Используйте элемент ‘form’ из предыдущих задач, а также элемент ‘button’ для создания кнопки отправки данных на сервер. Кнопка должна быть неактивной. Показать решение.
Условие задачи №6.5
Комбинации селекторов.
Селекторы можно комбинировать друг с другом используя, так называемые комбинаторы.
В задачу, описанную выше, мы можем решить, написав два правила.
Для заголовков статей:
.articles h3 {
text-align: center;
}
1 |
.articles h3 { } |
Для заголовков новостей:
.sidebar h3 {
color: darkred;
}
1 |
.sidebar h3 { color darkred; } |
Здесь мы использовали комбинатор
пробел . Т.е. селектор
.articles h3 выберет для изменений теги
<h3> , которые находятся внутри элемента с классом
articles (вне зависимости от уровня вложенности).
Этот комбинатор называется «комбинатор потомков» и используется очень часто.
Дочерний селектор
Давайте немного изменим верстку блока со статьями.
<div class=»articles»>
<h3>Заголовок статьи 1</h3>
<h3>Заголовок статьи 2</h3>
<div class=»promo»>
<h3>Рекламная акция</h3>
</div>
<h3>Заголовок статьи 3</h3>
<h3>Заголовок статьи 4</h3>
</div>
1 |
<div class=»articles»> <h3>Заголовок статьи 1</h3> <h3>Заголовок статьи 2</h3> <div class=»promo»> <h3>Рекламная акция</h3> </div> <h3>Заголовок статьи 3</h3> <h3>Заголовок статьи 4</h3> </div> |
У нас, среди статей, появился рекламный блок, и в нем также используется заголовок
<h3> .
Использованный нами ранее селектор
.articles h3 подействует и на заголовок рекламной акции, поскольку он не учитывает уровень вложенности.
Если мы хотим изменить только заголовки статей, не трогая рекламный заголовок, то лучше использовать «дочерний селектор» — символ
> .
.articles > h3 {
text-align: center;
}
1 |
.articles > h3 { text-align center; } |
Селектор
.articles>h3 выберет для изменения теги h3, которые находятся непосредственно в элементе с классом
articles , а теги рекламных заголовков затронуты не будут.
Комбинатор всех соседних элементов
Комбинатор
~ выберет все соседние элементы, т.е. элементы у которых такой же контейнер, как и у указанного элемента. Слово «соседний» в данном случае обозначает, что будут выбраны все элементы находящиеся после указанного.
<div class=»articles»>
<h3 class=»first-article»>Заголовок статьи 1</h3>
<h3>Заголовок статьи 2</h3>
<div class=»promo»>
<h3>Рекламная акция</h3>
</div>
<h3>Заголовок статьи 3</h3>
<h3>Заголовок статьи 4</h3>
</div>
1 |
<div class=»articles»> <h3 class=»first-article»>Заголовок статьи 1</h3> <h3>Заголовок статьи 2</h3> <div class=»promo»> <h3>Рекламная акция</h3> </div> <h3>Заголовок статьи 3</h3> <h3>Заголовок статьи 4</h3> </div> |
.first-article ~ h3 {
color: blue;
}
1 |
.first-article~h3{ colorblue; } |
В примере выше все заголовки <h3>, которые находятся после заголовка с классом
.first-article , станут синего цвета. Заголовок, находящийся внутри <div> с классом
.promo затронут не будет, поскольку у него другой контейнер.
Комбинатор следующего соседнего элемента
Комбинатор
+ позволяет выбрать элемент, который находится сразу после указанного элемента. При этом, конечно, у них должен быть общий контейнер.
.first-article + * {
margin-top: 3rem;
}
1 |
.first-article + * { margin-top 3rem; } |
В примере выше, написано правило, которое обеспечивает, что любой (один) элемент, который находятся сразу после заголовка с классом
.first-article , будет иметь отступ сверху размером
3rem .
Комбинатор запятая
Комбинатор, позволяет сгруппировать селекторы, т.е. задать несколько селекторов для одного правила.
h1, h2, h3, h4, h5, h6 {
margin-bottom: 0;
}
1 |
h1, h2, h3, h4, h5, h6 { margin-bottom; } |
В примере выше, мы обнуляем отступы снизу сразу у всех заголовков.
Изменяем шаблон
Блок с пагинацией встречается в Opencart, как минимум, в следующих шаблонах:
- category.tpl
- search.tp
- manufacturer_info.tpl
- review.tpl
- special.tpl
В качестве примера мы будем работать только с шаблоном category.tpl, так что, если вы будете изменять навигацию на своем сайте, не забудьте изменить ее вывод на других шаблонах.
На стандартной теме Opencart пагинация выводится в одноименном блоке и представляет собой следующую конструкцию:
Чтобы убрать отображение блока c информацией о списке выводимых элементов, удалим тег div с переменной $results.
После этого изменим класс у div’а с пагинацией на class=»col-sm-12 text-center», тем самым задав ширину данного блока в 12 колонок, а так же центрировав его. В результате получим следующий код:
Основные семантические теги HTML
Среди «старых» тегов из ранних версий HTML тоже есть семантические — например, тег , который обозначает параграф. При этом теги или не семантические, потому что они не добавляют смысла выделенному тексту, а просто определяют его внешний вид.
Но в актуальной версии стандарта HTML Living Standard есть семантические теги почти для всех основных частей сайта, и лучше пользоваться ими. Вот несколько примеров семантических тегов.
<article>
- Значение: независимая, отделяемая смысловая единица, например комментарий, твит, статья, виджет ВК и так далее.
- Особенности: желателен заголовок внутри.
- Типовые ошибки: путают с тегами и .
<section>
- Значение: смысловой раздел документа. Неотделяемый, в отличие от <article>.
- Особенности: желателен заголовок внутри.
- Типовые ошибки: путают с тегами и .
<aside>
- Значение: побочный, косвенный для страницы контент.
- Особенности: может иметь свой заголовок. Может встречаться несколько раз на странице.
- Типовые ошибки: считать тегом для «боковой панели» и размечать этим тегом основной контент, который связан с окружающими его элементами.
<nav>
- Значение: навигационный раздел со ссылками на другие страницы или другие части страниц.
- Особенности: используется для основной навигации, а не для всех групп ссылок. Основной является навигация или нет — на усмотрение верстальщика. Например, меню в подвале сайта можно не оборачивать в . В подвале обычно появляется краткий список ссылок (например, ссылка на главную, копирайт и условия) — это не является основной навигацией, семантически для такой информации предназначен сам по себе.
- Типовые ошибки: многие считают, что в может быть только список навигационных ссылок, но там может быть навигация в любой форме.
<header>
- Значение: вводная часть смыслового раздела или всего сайта, обычно содержит подсказки и навигацию. Чаще всего повторяется на всех страницах сайта.
- Особенности: этих элементов может быть несколько на странице.
- Типовые ошибки: использовать только как шапку сайта.
<main>
- Значение: основное, не повторяющееся на других страницах, содержание страницы.
- Особенности: должен быть один на странице, исходя из определения.
- Типовые ошибки: включать в этот тег то, что повторяется на других страницах (навигацию, копирайты и так далее).
<footer>
- Значение: заключительная часть смыслового раздела или всего сайта, обычно содержит информацию об авторах, список литературы, копирайт и так далее. Чаще всего повторяется на всех страницах сайта.
- Особенности: этих элементов может быть несколько на странице. Тег не обязан находиться в конце раздела.
- Типовые ошибки: использовать только как подвал сайта.
А нужно ли знать HTML 4.01 и CSS 2.1,если теперь есть HTML5 и CSS3?
Обязательно! HTML5 и CSS3, несмотря на всю их глобальность, являются лишь расширением базовых возможностей HTML и CSS. Поэтому прежде чем приступать к изучению HTML5 и CSS3, обязательно нужно знать все базовые возможности этих технологий, а также уметь верстать сайты с их помощью.
Всему этому обучает Видеокурс «Вёрстка сайта с нуля».
Пройдя данный курс, Вы сможете сверстать страницы любой сложности. А уже после надо проходить курс «HTML5 и CSS3 с Нуля до Гуру», который упростит Вашу работу и увеличит её качество.
Для тех, кто любит всё по максимуму!
У данного курса есть несколько различных комплектов.
1) Комплект «Стандарт» — сюда входит курс «HTML5 и CSS3 с Нуля до Гуру» с Бонусным курсом «Вёрстка под мобильные устройства».
2) Комплект «Вёрстка+»
В данный комплект входит всё то, что есть в комплекте «Стандарт», а также курс «Вёрстка сайта с нуля», важность которого была описана немного выше. Если Вы ещё не умеете верстать сайты, или ещё даже плохо знаете HTML или CSS, то обязательно изучите сначала именно курс «Вёрстка сайта с нуля»
3) Комплект «Профи в создании страниц». В данный комплект входит всё то, что есть в комплекте «Вёрстка+», а также курс «JavaScript, jQuery и Ajax с Нуля до Гуру», который позволит Вам «вдохнуть жизнь» в страницы Вашего сайта. Несмотря на богатые возможности HTML5 и CSS3, даже им необходим JavaScript. Например, та же работа с Canvas или механизмом Drag and Drop требует JavaScript, поэтому его знать необходимо, если Вы хотите создавать страницы с любой сложностью и с любым функционалом.
4) Комплект «Профи в создании сайтов». Данный комплект содержит всё то, что есть в «Профи в создании страниц», а также курс «PHP и MySQL с Нуля до Гуру». Данный курс научит Вас создавать весь внутренний функционал сайта: регистрацию, авторизацию, поиск по сайту, динамическую генерацию страниц сайта и многое-многое другое. Комплект «Профи в создании сайтов» научит Вас создавать любые сайты с использованием самых современных Web-технологий.
Каскадность и специфичность
Напомню, что CSS в переводе – это «Каскадные таблицы стилей», уже одно это показывает важность понятия «каскадность». В верстке самой распространенной является ситуация, когда на один элемент действуют множество CSS-правил
И то, как именно будет выглядеть элемент определяют именно каскадность и специфичность
В верстке самой распространенной является ситуация, когда на один элемент действуют множество CSS-правил. И то, как именно будет выглядеть элемент определяют именно каскадность и специфичность.
Каскадность
Посмотрите на пример:
<h3 class=»attention highlight»>Заголовок третьего уровня</h3>
1 | <h3 class=»attention highlight»>Заголовок третьего уровня</h3> |
h3 {
font-size: 24px;
}
.attention {
color: red;
}
.highlight {
background-color: yellow;
}
1 |
h3 { font-size 24px; } .attention { color red; } .highlight { background-color yellow; } |
Видим, что для данного элемента имеются 3 правила. Итоговыми стилями, примененными к элементу, будут:
{
font-size: 24px;
color: red;
background-color: yellow;
}
1 |
{ font-size24px; colorred; background-coloryellow; } |
С каскадностью теснейшим образом связана специфичность.
Дело в том, что одни и те же свойства, для одного и того же элемента, могут быть определены в разных css-правилах, и даже, в разных файлах.
Какое же значение у свойства будет в итоге? Это определяется через механизм, называемый специфичность.
Специфичность
Посмотрим пример:
<div class=»sidebar»>
<h3>Заголовок новости</h3>
</div>
1 |
<div class=»sidebar»> <h3>Заголовок новости</h3> </div> |
.sidebar h3 {
color: red;
}
h3 {
color: blue;
}
1 |
.sidebar h3 { color red; } h3 { color blue; } |
В примере цвет текста для тега
<h3> , находящегося в контейнере с классом
.sidebar , прописан 2 раза.
Вопрос: «Какой цвет будет у этого элемента?»
Ответ: «Красный, поскольку селектор
.sidebar h3 более специфичен, еще говорят: селектор имеет больший вес».
Специфичность (вес) селектора определяется при помощи 4-х различных значений. Эти значения можно, условно, представить как цифры: тысячи, сотни, десятки, единицы.
- Тысяча – это встроенные стили, добавляемые непосредственно в сам элемент в HTML-разметке.
- Сотня – это идентификатор.
- Десятки – это классы.
- Единицы – это сам элемент или псевдоэлемент.
Если не очень понятно, то посмотрите таблицу ниже и все станет ясно:
Селектор | Тысячи | Сотни | Десятки | Единицы | Специфичность |
div | 1 | 0001 | |||
.some-class | 1 | 0010 | |||
#myid | 1 | 0100 | |||
<p style=»color: red»>текст</p> | 1 | 1000 | |||
.some-class div | 1 | 1 | 0011 | ||
#myid .some-class div | 1 | 1 | 1 | 0111 | |
.some-class ul li | 1 | 2 | 0012 | ||
.some-class .my-class p span | 2 | 2 | 0022 |
В ситуации, если специфичность у селекторов одинакова, действовать будет правило, которое находится ниже в css-файле.
Если правила находятся в разных css-файлах, то действовать будет правило, которое расположено в файле, подключенном позднее (ниже).