🔍 Начните печатать, чтобы искать по книге или перейти к нужной странице по номеру

Удобно листать не только прокруткой, но и клавишами‑стрелками:

 
между важными местами
Shift
между
разворотами
Васи­лий Полов­нёв, Игорь Пет­ров

ХТМЛ.
Вёрстка сайтов

Изда­тель­ство Бюро Гор­бу­нова
2021
Василий Половнёв, Игорь Петров

ХТМЛ.
Вёрстка сайтов

Издательство Бюро Горбунова
2021
удк 004.42
ббк З973.42
П52
Васи­лий Полов­нёв, Игорь Пет­ров
П52
ХТМЛ. Вёрстка сай­тов для дизай­не­ров, редак­то­ров и руко­во­ди­те­лей.—
М.: Изд‑во Бюро Гор­бу­нова, 2021

Эта книга — поша­го­вая инструк­ция по вёрстке сай­тов на язы­ках ХТМЛ и ЦСС. Вы узна­ете не только как свер­стать сайт, но и как опуб­ли­ко­вать его в интер­нете, настро­ить кра­си­вый шаринг в соц­сети и под­клю­чить системы аналитики.

Отдель­ный раз­дел книги посвя­щён работе с вер­сталь­щи­ком: как ста­вить задачи, полу­чать пред­ска­зу­е­мый резуль­тат и пра­вильно при­ни­мать и внед­рять вёрстку.

Оглавление

удк 004.42
ббк З973.42
П52
П52
Василий Половнёв, Игорь Петров
ХТМЛ. Вёрстка сайтов для дизайнеров, редакторов и руководителей.—
М.: Изд‑во Бюро Горбунова, 2021

Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.

Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.

Оглавление

Скрыто 74 разворота

Подписи к полям

Под­писи к полям формы вер­стают тегом label. Лейбл умеет свя­зы­вать себя с полем, чтобы при клике по лей­блу кур­сор ста­вился в поле. Такое пове­де­ние подпи­сей облег­чает работу с фор­мой и счи­та­ется при­зна­ком хоро­шего интерфейса.

Есть два спо­соба вёрстки лейблов.

Лейбл рядом с полем

Отдель­ный лейбл при­вя­зы­вают к полю по айди через атри­бут for. Минус этого спо­соба — нужно при­ду­мы­вать уни­каль­ные айди, повто­рять их в коде и вни­ма­тельно сле­дить, чтобы не опе­ча­таться, иначе связь не будет работать.

<label for="email">Эл. почта</label>
<input id="email" type="email">

Лейбл как обёртка

Есть трюк: лейбл авто­ма­ти­че­ски свя­зы­ва­ется с полем внутри себя, клик по любому эле­менту внутри лей­бла поста­вит кур­сор в поле. В этом слу­чае не при­дётся при­ду­мы­вать уни­каль­ные айди. Минус этого спо­соба — неко­то­рые устрой­ства чте­ния с экрана могут не понять связь лей­бла с полем ввода и неточно озву­чить вёрстку пользователю.

<label>
  <span>Эл. почта</span>
  <input type="email">
</label>

При­ят­ный бонус лей­бла как обёртки — внутри можно завер­стать не только под­пись, но и пояс­не­ния к полям или сооб­ще­ния об ошиб­ках. Клик по ним тоже будет ста­вить кур­сор в поле.

<label class="input">
  <span class="input__label">Эл. почта</span>

  <div class="input__input">
    <input type="email">

    <!-- Так же можно сверстать сообщение об ошибке. Видимостью сообщений об ошибках управляют через Яваскрипт -->
    <span class="input__caption">
      Для связи, документов и чеков
    </span>
  </div>
</label>
.input {
  display: flex;
  align-items: baseline;
}

.input__label {
  width: 25%;
}

.input__input {
  width: 75%;
}

.input__caption {
  display: block;
  margin-top: 8px;
  font-size: 12px;
}

Подписи к полям

Подписи к полям формы верстают тегом label. Лейбл умеет связывать себя с полем, чтобы при клике по лейблу курсор ставился в поле. Такое поведение подписей облегчает работу с формой и считается признаком хорошего интерфейса.

Есть два способа вёрстки лейблов.

Лейбл рядом с полем

Отдельный лейбл привязывают к полю по айди через атрибут for. Минус этого способа — нужно придумывать уникальные айди, повторять их в коде и внимательно следить, чтобы не опечататься, иначе связь не будет работать.

<label for="email">Эл. почта</label>
<input id="email" type="email">

Для связи, документов и чеков

Лейбл как обёртка

Есть трюк: лейбл автоматически связывается с полем внутри себя, клик по любому элементу внутри лейбла поставит курсор в поле. В этом случае не придётся придумывать уникальные айди. Минус этого способа — некоторые устройства чтения с экрана могут не понять связь лейбла с полем ввода и неточно озвучить вёрстку пользователю.

<label>
  <span>Эл. почта</span>
  <input type="email">
</label>

Приятный бонус лейбла как обёртки — внутри можно заверстать не только подпись, но и пояснения к полям или сообщения об ошибках. Клик по ним тоже будет ставить курсор в поле.

<label class="input">
  <span class="input__label">Эл. почта</span>

  <div class="input__input">
    <input type="email">

    <!-- Так же можно сверстать сообщение об ошибке. Видимостью сообщений об ошибках управляют через Яваскрипт -->
    <span class="input__caption">
      Для связи, документов и чеков
    </span>
  </div>
</label>
.input {
  display: flex;
  align-items: baseline;
}

.input__label {
  width: 25%;
}

.input__input {
  width: 75%;
}

.input__caption {
  display: block;
  margin-top: 8px;
  font-size: 12px;
}

Группы полей

Когда в форме много полей, их груп­пи­руют по смыслу. Форма с груп­пами выгля­дит опрят­нее и проще для заполнения.

Для груп­пи­ровки полей удобно исполь­зо­вать тег с гово­ря­щим назва­нием fieldset.

<form>
  <fieldset>
    <label class="input">
      <span class="input__label">Получатель</span>
      <input type="text" placeholder="Андрей Петров">
    </label>
  </fieldset>


  <fieldset>
    <label class="input">
      <span class="input__label">Доставка</span>
      <select>
        <optgroup label="Почта России">
          <option>Курьером ЕМС</option>
          <option>В ближайшее отделение Почты</option>
        </optgroup>
        <optgroup label="СДЭК">
          <option selected="selected">Курьером СДЭК</option>
          <option>В пункт выдачи СДЭК</option>
        </optgroup>
      </select>
    </label>

    <label class="input">
      <span class="input__label">Город</span>
      <input type="text" placeholder="Москва">
    </label>

    <label class="input">
      <span class="input__label">Адрес</span>
      <textarea rows="2" placeholder="Ленина, 1"></textarea>
    </label>
  </fieldset>


  <fieldset>
    <label class="input">
      <span class="input__label">Оплата</span>

      <select>
        <option>Картой на сайте</option>
        <option>Картой курьеру</option>
        <option>Наличными курьеру</option>
      </select>
    </label>

    <button type="submit">Оформить заказ</button>
  </fieldset>
</form>
.input {
  display: flex;
  align-items: baseline;
}

.input__label {
  width: 25%;
}

.input__input {
  width: 75%;
}

.input__caption {
  display: block;
  margin-top: 8px;
  font-size: 12px;
}

/* Сбрасываем стандартные браузерные стили филдсета */
fieldset {
  border: none;
  margin: 0;
  padding: 0;
}

fieldset:not(:last-child) {
  margin-bottom: 27px;
}

Группировка полезна не только пользователю, но и разработчику: работать с аккуратно сгруппированными кусочками кода проще и удобнее, чем со спрошной батареей тегов

Группы полей

Когда в форме много полей, их группируют по смыслу. Форма с группами выглядит опрятнее и проще для заполнения.

Для группировки полей удобно использовать тег с говорящим названием fieldset.

<form>
  <fieldset>
    <label class="input">
      <span class="input__label">Получатель</span>
      <input type="text" placeholder="Андрей Петров">
    </label>
  </fieldset>


  <fieldset>
    <label class="input">
      <span class="input__label">Доставка</span>
      <select>
        <optgroup label="Почта России">
          <option>Курьером ЕМС</option>
          <option>В ближайшее отделение Почты</option>
        </optgroup>
        <optgroup label="СДЭК">
          <option selected="selected">Курьером СДЭК</option>
          <option>В пункт выдачи СДЭК</option>
        </optgroup>
      </select>
    </label>

    <label class="input">
      <span class="input__label">Город</span>
      <input type="text" placeholder="Москва">
    </label>

    <label class="input">
      <span class="input__label">Адрес</span>
      <textarea rows="2" placeholder="Ленина, 1"></textarea>
    </label>
  </fieldset>


  <fieldset>
    <label class="input">
      <span class="input__label">Оплата</span>

      <select>
        <option>Картой на сайте</option>
        <option>Картой курьеру</option>
        <option>Наличными курьеру</option>
      </select>
    </label>

    <button type="submit">Оформить заказ</button>
  </fieldset>
</form>

Группировка полезна не только пользователю, но и разработчику: работать с аккуратно сгруппированными кусочками кода проще и удобнее, чем со спрошной батареей тегов

.input {
  display: flex;
  align-items: baseline;
}

.input__label {
  width: 25%;
}

.input__input {
  width: 75%;
}

.input__caption {
  display: block;
  margin-top: 8px;
  font-size: 12px;
}

/* Сбрасываем стандартные браузерные стили филдсета */
fieldset {
  border: none;
  margin: 0;
  padding: 0;
}

fieldset:not(:last-child) {
  margin-bottom: 27px;
}

Отключение кнопки или инпута, дисейбл

Атри­бут disabled отклю­чает кнопку или инпут, запре­щает вза­и­мо­дей­ствие с ними. Раз­ра­бот­чики так и гово­рят: «зади­сей­б­лить кнопку».

Обычно при про­грам­ми­ро­ва­нии форм кнопки или поля дисейб­лят Ява­скрип­том. Напри­мер, запре­щают отправ­лять форму, пока запол­нены не все поля. Дисейбл часто исполь­зуют с пред­уста­нов­лен­ным через value зна­че­нием инпута.

В бра­у­зе­рах есть стан­дарт­ные стили дисей­бла, но можно сти­ли­зо­вать и по‑своему.

<input type="email" value="petrov@yandex.ru" disabled> 

<textarea disabled></textarea> 

<button disabled>Отправить</button>
:disabled {
  background: #f8f8f8;
  border: 1px solid rgba(0, 0, 0, .08);
}

Отключение кнопки или инпута, дисейбл

Атрибут disabled отключает кнопку или инпут, запрещает взаимодействие с ними. Разработчики так и говорят: «задисейблить кнопку».

Обычно при программировании форм кнопки или поля дисейблят Яваскриптом. Например, запрещают отправлять форму, пока заполнены не все поля. Дисейбл часто используют с предустановленным через value значением инпута.

В браузерах есть стандартные стили дисейбла, но можно стилизовать и по‑своему.

<input type="email" value="petrov@yandex.ru" disabled> 

<textarea disabled></textarea> 

<button disabled>Отправить</button>
:disabled {
  background: #f8f8f8;
  border: 1px solid rgba(0, 0, 0, .08);
}

Оживление формы без программирования

Чтобы свёр­стан­ная форма зара­бо­тала, нужно напи­сать код на Ява­скрип­те и настро­ить сер­вер для при­ёма и хра­не­ния оптрав­ля­е­мых дан­ных формы. Это задачи для опыт­ного разработчика.

Чтобы полу­чить рабо­чую форму без про­грам­ми­ро­ва­ния, исполь­зуют сер­висы типа Форм­кипа. Сер­висы гене­ри­руют раз­метку формы с нуж­ными полями и код для «ожив­ле­ния» этой формы. Оста­нется доба­вить код на стра­ницу и сти­ли­зо­вать форму по сво­ему усмот­ре­нию. Отправ­лен­ные из формы дан­ные при­дут в лич­ный каби­нет сер­виса, обычно допол­ни­тельно опо­ве­стив вас по почте.

Раз­ные сер­висы мало отли­ча­ются прин­ци­пи­ально. Создаём акка­унт, жмём кнопку «Новая форма», настра­и­ваем набор полей и полу­чаем код для встра­и­ва­ния на страницу.

У сер­ви­сов бывают плат­ные тарифы, уве­ли­чи­ва­ю­щие коли­че­ство и срок хра­не­ния полу­ча­е­мых дан­ных или откры­ва­ю­щие допол­ни­тель­ные настройки форм. Но для боль­шин­ства задач хва­тает и бес­плат­ных тарифов.

Формкип предлагает настроить уже свёрстанную форму или взять готовый сгенерированный код

Оживление формы без программирования

Чтобы свёрстанная форма заработала, нужно написать код на Яваскрипте и настроить сервер для приёма и хранения оптравляемых данных формы. Это задачи для опытного разработчика.

Чтобы получить рабочую форму без программирования, используют сервисы типа Формкипа. Сервисы генерируют разметку формы с нужными полями и код для «оживления» этой формы. Останется добавить код на страницу и стилизовать форму по своему усмотрению. Отправленные из формы данные придут в личный кабинет сервиса, обычно дополнительно оповестив вас по почте.

Разные сервисы мало отличаются принципиально. Создаём аккаунт, жмём кнопку «Новая форма», настраиваем набор полей и получаем код для встраивания на страницу.

У сервисов бывают платные тарифы, увеличивающие количество и срок хранения получаемых данных или открывающие дополнительные настройки форм. Но для большинства задач хватает и бесплатных тарифов.

Формкип предлагает настроить уже свёрстанную форму или взять готовый сгенерированный код

Псев­до­классы — это осо­бые слова, кото­рые добав­ляют к ука­за­телю на эле­мент в ЦСС, чтобы опи­сать стили этого эле­мента при опре­де­лён­ных усло­виях. Напри­мер, при наве­де­нии кур­сора или при клике.

Наве­де­ние кур­сора пол­но­ценно рабо­тает только на устрой­ствах с курсором.

.megaButton:hover {
  background-color: hsl(88, 80%, 48%);
}

.megaButton:active {
  background-color: hsl(88, 80%, 48%);
}

Псевдоклассы

Псевдоклассы — это особые слова, которые добавляют к указателю на элемент в ЦСС, чтобы описать стили этого элемента при определённых условиях. Например, при наведении курсора или при клике.

Наведение курсора полноценно работает только на устройствах с курсором.

.megaButton:hover {
  background-color: hsl(88, 80%, 48%);
}

.megaButton:active {
  background-color: hsl(88, 80%, 48%);
}
Скрыт 141 разворот