Содержание

Шапка сайта и навигационное меню с помощью CSS – Zencoder

Просматривал видеокурс по блочной верстке сайта от Андрей Морковина.

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

Автор зачем-то вырезал только часть фона с навигацией, вставлял изображение логотипа в html-каркас и обертывал его ссылкой, пытался угадать местоположение навигации с помощью абсолютного или относительного позиционирования. Я решил сам попробовать сделать шапку сайта так, как мне кажется более правильным.

В основу создания шапки я положил свойство вложенных слоев на ‘ах. Кстати, с этим методом я только недавно познакомился в другом видеоуроке от Дмитрия Семенова. Далее, предполагается, что размеры всех фоновых изображений известны (на практике так и происходит, при вырезании их из psd-макета).

Для чистоты эксперимента приведу эти размеры: ,

1
bg-header.gif - 800x50px
, . В CSS-свойствах сделал для них подстановку с помощью фоновой заливки цветом, для подстраховки.

Итак, что я буду делать. Первый шаг стандартный. Создается обертка с помощью слоя , которой прописываются свойства центрирования страницы и задания ей ширины:

#wrap{
  width: 800px;
  height: 100%;
  margin: 0 auto;
  background: #c0c0c0;
}

Затем создается слой , в котором будет располагаться шапка будущего сайта. Для нее прописываю совсем короткие свойства, с помощью которых гарантированно растягиваю шапку на всю ширину блока-родителя и задаю ее высоту:

#header{
  width: 100%;
  height: 70px;
}

Затем создаю слой , задача которого будет содержать в себе фоновое изображение для навигационного списка шапки. Высоту этого слоя устанавливаю равной высоте шапки, а сам фоновый рисунок позиционирую в правом углу блока. Высота его равна высоте шапки, поэтому достаточно сметить его по-горизонтали вправо, а по-вертикали оставляю как есть.

Рисунок короткий и будет занимать не всю ширину шапки, а только некоторую ее правую часть, как раз ровно настолько, чтобы вместить в себя навигационный список. CSS-код для этого слоя представлен ниже:

#nav{
  background: url(i/bg-nav.gif) #b318cf 100% 0 no-repeat;
  height: 70px;
}

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

Поэтому фон слоя будет видет только частично, лишь его нижний краешек, для которого и отводится роль фона навигации. Для слоя явно задаю его высоту. Код со свойствами приведен ниже:

#head{
  background: url(i/bg-header.gif) #2b66c8 0 0 no-repeat;
  height: 50px;
}

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

При этом снова воспользуюсь фоновым изображение, которое вложу внутрь этого слоя. Никаких img в html-коде! Позиционировать или смещать его никуда не надо, так как он по-умолчанию расположится в левом верхнем углу блока (как мною задумано для простоты эксперимента). Только явно задам этому слою высоту и ширину, равную высоте и ширине фонового рисунка:

#logo{
  background: url(i/logo.gif) #36cf18 0 0 no-repeat;
  width: 30px;
  height: 30px;
}

Чтобы сделать слой кликабельным, помещаю внутрь него ссылку. Так как изначально она является строчным элементом (), то ей невозможно задать правила, чтобы “растянуть” на всю высоту и ширину слоя-родителя .

Поэтому “превращаю” ссылку в блочный элемент с помощью свойства . А вот теперь растяну ссылку, задав для нее ширину и высоту в процентах. Конечно, можно указать эти параметры и с помощью пикселей, так как размеры логотипа известны. Но лучше возложить эту задачу на плечи браузера — пусть сам вычисляет размеры блока-ссылки:

#logo a{
  display: block;
  width: 100%;
  height: 100%;
}

Осталось создать навигационное меню шапки, которое должно располагаться поверх слоя . Создаю ненумерованный список, который помещаю внутрь слоя . Так как по коду слой расположен выше и имеет фиксированную высоту, то список займет все оставшееся пространство под ним:

.

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

#nav ul{
  list-style-type: none;
  float: right;
}
  #nav li{
    display: inline-block;
  }
    #nav a{
      text-decoration: none;
      color: #fff;
      font-weight: bold;
      margin-right: 15px;
      line-height: 20px;
      display: inline-block;
    }

Единственный момент, который вызвал у меня затруднения, это появившиеся еле заметные отступы между внешним блоком и внутренним элементом(ами) . Первоначально для них я прописал свойство .

Но после “наводки” Kray Storm с форума проблема была решена. Для элементов и я поменял свойство на и для я дополнительно задал высоту строки

, равную высоте блока . Зазоры пропали и пункты меню растянулись на всю высоту блока-родителя.

Все, шапка сайта готова. Если посмотреть на html-код, то видно, что он “правильный”. То есть, он не замусорен всякими . Разметка выполнена простыми свойствами CSS, который будут гарантировано работать почти во всех браузерах. При этом она никуда не “съедет”.

Ниже приведу полный код html-каркаса и CSS-кода.

HTML-код:

CSS-код:

/*  reset  */
  *{
    margin: 0;
    padding: 0;
  }

  /*  main */
  #wrap{
    width: 800px;
    height: 100%;
    margin: 0 auto;
    background: #c0c0c0;
  }
  #header{
    width: 100%;
    height: 70px;
  }
  #nav{
    background: url(i/bg-nav.gif) #b318cf 100% 0 no-repeat;
    height: 70px;
  }
    #nav ul{
      list-style-type: none;
      float: right;
    }
      #nav li{
        display: inline-block;
      }
        #nav a{
          text-decoration: none;
          color: #fff;
          font-weight: bold;
          margin-right: 15px;
          line-height: 20px;
          display: inline-block;
        }
  #head{
    background: url(i/bg-header.gif) #2b66c8 0 0 no-repeat;
    height: 50px;
  }
  #logo{
    background: url(i/logo.gif) #36cf18 0 0 no-repeat;
    width: 30px;
    height: 30px;
  }
    #logo a{
      display: block;
      width: 100%;
      height: 100%;
    }

Здесь я представлю нарисованную мною схему расположения всех блоков в шапке сайта:

И, наконец, результат всего — готовая шапка сайта:

На этом все.


csshtml

Семантический HTML — Основы современной вёрстки

При создании вёрстки нужно учитывать семантику, то есть смысловое (логическое) значение элементов.

Основная цель любой HTML-вёрстки

— передача смысла блоков. Часто, помимо пользователей, по нашим страницам ходят и роботы. Они собирают и анализируют информацию страницы. К примеру, поисковые роботы просматривают всю страницу и определяют её полезность, а также уникальность. И если для человека достаточно просто поделить страницу на части и найти шапку, основной контент, футер, то для робота это достаточно сложная задача. Робот видит исключительно нашу вёрстку и не может «глазами» отделить части макета.

Вторая важная причина необходимости создания семантической вёрстки — использование страниц людьми с ограниченными возможностями. Слабовидящие пользователи используют «скринридеры» — устройства или приложения, воспроизводящие голосом элементы страницы. Чтобы скринридер мог правильно понять, где содержится основная информация, меню, поясняющие блоки и так далее, мы должны правильно разметить страницу. Это поможет устройствам правильно разбить страницу на логические блоки и дать возможность посетителям корректно перемещаться по странице. Такая концепция называется

«Доступный WEB».

Запомните: минимальная доступность лучше, чем её отсутствие.

Для решения этих вопросов в стандарте HTML5 появилось множество семантических тегов, которыми вы можете пользоваться. В этом уроке изучим базовые семантические теги и разметим целую HTML-страницу.

Шапка сайта

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

Чтобы создать шапку сайта, используется парный тег header, внутри которого мы и располагаем необходимую информацию.

Один из примеров шапки сайта:

<header>
    <img src="/logo.png" alt="Логотип"> <!-- Логотип сайта -->
    <div> <!-- Меню -->
        <ul>
            <li><a href="/">Главная</a></li>
            <li><a href="/about">О нас</a></li>
            <li><a href="/contacts">Контакты</a></li>
        </ul>
    </div>
</header>

По своему поведению тег header работает так же, как и простой div. Почти все семантические элементы являются блочными и не имеют стилей по умолчанию. Это позволяет очень быстро добавить семантику в уже существующие проекты. Если стили в этих проектах не завязаны на тегах, то достаточно просто сменить название с div на header и мы получим уже семантичную шапку сайта.

Навигация

Попробуйте взглянуть на шапку сайта из примера выше глазами компьютера. Что он там видит?

  • Картинку.
  • Блочный элемент div.
  • Маркированный список.
  • Набор ссылок.

Если вы ещё не сверстали пару своих макетов, то по такому набору можете и не понять, что набор ссылок не что иное, как основное меню сайта. Вот и роботам не всегда просто это сделать. Конечно, они уже достаточно обучены, чтобы в таком простом наборе найти меню, но меню обычно может быть не одно и быть контекстно-зависимым. Тогда робот может принять за основное меню не то, что бы мы хотели.

Как же нам ему помочь? Для этого в стандарте HTML5 появился тег nav. Он обозначает навигационную область. Причём помочь отделить основное меню от меню раздела можно с помощью других тегов, речь о которых пойдёт ниже.

Заменим простой блочный элемент div на его семантичного брата

nav:

<header>
    <img src="/logo.png" alt="Логотип"> <!-- Логотип сайта -->
    <nav> <!-- Меню -->
        <ul>
            <li><a href="/">Главная</a></li>
            <li><a href="/about">О нас</a></li>
            <li><a href="/contacts">Контакты</a></li>
        </ul>
    </nav>
</header>

Главной особенностью использования nav является то, что не обязательно оборачивать все меню на странице. Обычно достаточно обернуть только главное меню и, например, не оборачивать меню в футере. При этом не запрещается иметь сразу несколько элементов nav на странице. Выделяйте ими главные меню на странице.

Уникальный контент

Основной смысл каждой страницы — уникальный контент. Это самое главное, что должно быть на вашей странице. Пользователь вполне справится без меню или футера, но если на странице нет своего уникального контента, то страница бесполезна.

Для разметки уникального контента в стандарте HTML5 появился специальный тег main. Именно он поможет обозначить область с самым важным контентом на странице. Старайтесь в нём держать только контент. Обычно меню, боковые панели и футер в эту область не входят. Исключением может быть только ситуация, если эти блоки действительно уникальны для данной страницы. Например, меню может вести по разделам страницы. В таком случае оно на полных правах может быть включено в область уникального контента.

Добавим такую область в нашу вёрстку:

<header>
    <img src="/logo.png" alt="Логотип"> <!-- Логотип сайта -->
    <nav> <!-- Меню -->
        <ul>
            <li><a href="/">Главная</a></li>
            <li><a href="/about">О нас</a></li>
            <li><a href="/contacts">Контакты</a></li>
        </ul>
    </nav>
</header>

<main>
    <h2>Хекслет — практические курсы по программированию</h2>

    <p>Мы считаем, что настоящий программист должен понимать, как работает компьютер, и обладать вычислительным мышлением. Он должен видеть проблему, а не задание. Должен уметь анализировать и рассуждать на уровне проблемы и выше, а не только на уровне кода.</p>
    <p>При сегодняшнем обилии учебных материалов, курсов и книг, главный вопрос, который встает перед новичком, это не «где учиться?», а «что и в каком порядке учить?». Существует множество мнений по этому поводу. Кто-то советует начинать с математики, кто-то советует конкретные языки и технологии.</p>
    <p>Хекслет — это готовый путь от абсолютного новичка до первого трудоустройства. </p>
</main>

Наличие тега main также очень важно для мобильных браузеров. Вы могли видеть, что многие из них имеют функцию «Режим чтения». При его включении браузер автоматически удалит всё оформление и все ненужные блоки, оставив только главный контент. Этим контентом и будет являться область, заключённая в тег main. Такой режим отлично подходит для людей, у которых, в настоящий момент, слабое подключение к интернету.

Так как внутри main содержится уникальный контент страницы, то разрешено использовать только один такой тег на странице.

Секции

Контент на странице не является однородным. Обычно это цепочка логических областей, каждая из которых описывает что-то конкретное. Например, на странице могут присутствовать область с описанием преимуществ, цены, формы и так далее. Их хочется как-то выделить. И на это есть несколько причин:

  • С правильно разделённым контентом удобно работать. Мы легко можем перемещать такие области, менять местами или удалять. В коде их будет легко найти.
  • Правильная группировка разделов — важная часть при создании доступного web’а.

Для таких самостоятельных логических единиц существует специальный тег section, который внутри себя может содержать одну конкретную секцию. Добавим её в наш пример:

<header>
    <img src="/logo.png" alt="Логотип"> <!-- Логотип сайта -->
    <nav> <!-- Меню -->
        <ul>
            <li><a href="/">Главная</a></li>
            <li><a href="/about">О нас</a></li>
            <li><a href="/contacts">Контакты</a></li>
        </ul>
    </nav>
</header>

<main>
    <h2>Хекслет — практические курсы по программированию</h2>

    <p>Мы считаем, что настоящий программист должен понимать, как работает компьютер, и обладать вычислительным мышлением. Он должен видеть проблему, а не задание. Должен уметь анализировать и рассуждать на уровне проблемы и выше, а не только на уровне кода.</p>
    <p>При сегодняшнем обилии учебных материалов, курсов и книг, главный вопрос, который встает перед новичком, это не «где учиться?», а «что и в каком порядке учить?». Существует множество мнений по этому поводу. Кто-то советует начинать с математики, кто-то советует конкретные языки и технологии.</p>
    <p>Хекслет — это готовый путь от абсолютного новичка до первого трудоустройства. </p>

    <section>
        <h3>Преимущества</h3>

        <ul>
            <li>Много теории</li>
            <li>Много практики</li>
            <li>Много менторов</li>
        </ul>
    </section>
</main>

Заметьте, как легко стало искать преимущества в коде, ведь они находятся в отдельной секции. Также вы могли обратить внимание на заголовок внутри секции. Так как секция — это самостоятельная единица, то почти всегда она имеет свой заголовок. Хоть это и не всегда так, и стандарт не обязывает нас включать заголовок в секцию, но старайтесь придерживаться этого правила.

Как быстро определить, стоит ли включать участок контента в отдельную секцию? Всё очень просто: если вы можете описать участок контента в одном или двух словах (преимущества, цены, форма заказа, каталог, контакты и так далее), то с большой вероятностью этот участок является самостоятельной секцией.

Независимые секции

Другим способом выделить логический участок текста является использование тега article. Может показаться, что какой смысл иметь два различных тега для выделения одного и того же?

Между section и article есть одна существенная разница: article является независимой секцией, то есть её можно перенести на любую страницу сайта или даже на другой сайт, и при этом она не потеряет своего контекста.

Представьте себе блог и отдельную статью в нём. Можем ли мы понять статью, если она вдруг окажется не в блоге, а, например, на странице с услугами? Конечно! Ведь статья — это законченный текст. Следовательно, такую статью можно обернуть в тег article.

Добавим колонку новостей в наш пример вёрстки. Сразу подумаем, как она может быть разделена. Сами по себе новости являются достаточно уникальным элементом, ведь даже если их перенести на другую страницу, то они не потеряют свою актуальность. В этом случае каждую новость можно обернуть в article. А что делать с обёрткой блока? Она объединяет по смыслу несколько различных новостей, её можно спокойно назвать одним словом, и она точно будет иметь свой заголовок. Следовательно, ей подойдёт тег section.

<header>
    <img src="/logo.png" alt="Логотип"> <!-- Логотип сайта -->
    <nav> <!-- Меню -->
        <ul>
            <li><a href="/">Главная</a></li>
            <li><a href="/about">О нас</a></li>
            <li><a href="/contacts">Контакты</a></li>
        </ul>
    </nav>
</header>

<main>
    <h2>Хекслет — практические курсы по программированию</h2>

    <p>Мы считаем, что настоящий программист должен понимать, как работает компьютер, и обладать вычислительным мышлением. Он должен видеть проблему, а не задание. Должен уметь анализировать и рассуждать на уровне проблемы и выше, а не только на уровне кода.</p>
    <p>При сегодняшнем обилии учебных материалов, курсов и книг, главный вопрос, который встает перед новичком, это не «где учиться?», а «что и в каком порядке учить?». Существует множество мнений по этому поводу. Кто-то советует начинать с математики, кто-то советует конкретные языки и технологии.</p>
    <p>Хекслет — это готовый путь от абсолютного новичка до первого трудоустройства. </p>

    <section>
        <h3>Преимущества</h3>

        <ul>
            <li>Много теории</li>
            <li>Много практики</li>
            <li>Много менторов</li>
        </ul>
    </section>

    <section>
        <h3>Новости</h3>

        <article>
            <h4>Новость 1</h4>
            <p>Текст новости 1</p>
            <a href="#">Подробнее</a>
        </article>

        <article>
            <h4>Новость 2</h4>
            <p>Текст новости 2</p>
            <a href="#">Подробнее</a>
        </article>

        <article>
            <h4>Новость 3</h4>
            <p>Текст новости 3</p>
            <a href="#">Подробнее</a>
        </article>
    </section>
</main>

Дополняющие секции

Ещё одним крупным контейнером для нашего контента служит тег aside. Это область с дополнительной информацией. Она может быть как связана с текущей страницей, так и не очень. Подобные секции вы можете встречать в виде боковых панелей на сайтах. Там содержится дополнительное меню, баннеры, реклама и другая информация.

Обратите внимание, что aside не обязан являться боковой панелью по внешнему виду. Это может быть даже дополнительная информация внутри статьи. Но чаще всего внешнее оформление у такого тега именно в виде боковой панели.

Давайте добавим такую информацию в нашу вёрстку. Внутри этой дополнительной секции будет находиться ещё одно меню, которое не будем оборачивать в nav, так как оно не является основным.

<header>
    <img src="/logo.png" alt="Логотип"> <!-- Логотип сайта -->
    <nav> <!-- Меню -->
        <ul>
            <li><a href="/">Главная</a></li>
            <li><a href="/about">О нас</a></li>
            <li><a href="/contacts">Контакты</a></li>
        </ul>
    </nav>
</header>

<aside>
    <div>
        <a href="#">Необязательный пункт 1</a>
        <a href="#">Необязательный пункт 2</a>
        <a href="#">Необязательный пункт 3</a>
    </div>
</aside>

<main>
    <h2>Хекслет — практические курсы по программированию</h2>

    <p>Мы считаем, что настоящий программист должен понимать, как работает компьютер, и обладать вычислительным мышлением. Он должен видеть проблему, а не задание. Должен уметь анализировать и рассуждать на уровне проблемы и выше, а не только на уровне кода.</p>
    <p>При сегодняшнем обилии учебных материалов, курсов и книг, главный вопрос, который встает перед новичком, это не «где учиться?», а «что и в каком порядке учить?». Существует множество мнений по этому поводу. Кто-то советует начинать с математики, кто-то советует конкретные языки и технологии.</p>
    <p>Хекслет — это готовый путь от абсолютного новичка до первого трудоустройства. </p>

    <section>
        <h3>Преимущества</h3>

        <ul>
            <li>Много теории</li>
            <li>Много практики</li>
            <li>Много менторов</li>
        </ul>
    </section>

    <section>
        <h3>Новости</h3>

        <article>
            <h4>Новость 1</h4>
            <p>Текст новости 1</p>
            <a href="#">Подробнее</a>
        </article>

        <article>
            <h4>Новость 2</h4>
            <p>Текст новости 2</p>
            <a href="#">Подробнее</a>
        </article>

        <article>
            <h4>Новость 3</h4>
            <p>Текст новости 3</p>
            <a href="#">Подробнее</a>
        </article>
    </section>
</main>

Дополнительное задание

Создайте файл index.html на своём компьютере и создайте собственное резюме. Используйте изученные в этом уроке теги.


Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Из PSD в HTML. Вёрстка шапки

Наша шапка состоит из двух блоков: блок с логотипом в левой части, и блок с контактами в правой части. Запишем в файле index.html код для шапки:

<div>
    <div>
        <div>

        </div>
        <div>

        </div>
    </div>
</div>

В блоке с классом <div></div> пропишем путь к изображению при помощи тега <img src="" alt="">. Так как логотипы в шапке обычно являются ссылками, ведущими на главную страницу, то этот тег мы заключим между тегами <a href=""></a>:

<div>
    <a href=""><img src="img/logo.png" alt=""></a>
</div>

В блоке с классом <div></div> запишем контактную информацию, каждую строку поместим в тег <p></p>:

<div>
    <p>Телефон: 8 800 2000 01 01<br>звонок бесплатный</p>
    <p>E-mail: [email protected]</p>
    <p>
        <a href=""><img src="img/vk.png" alt=""></a>
        <a href=""><img src="img/fb.png" alt=""></a>
        <a href=""><img src="img/tw.png" alt=""></a>
        <a href=""><img src="img/gp.png" alt=""></a>
    </p>
</div>

Запись звонок бесплатный на макете находится на новой строке, поэтому перед ней мы поставили тег <br>. Иконки социальных сетей являются ссылками, поэтому их мы добавили между тегами <a href=""></a>.

Переходим к стилям. Первым делом нам нужно указать высоту и фоновое изображение для селектора #header:

#header {
    height: 148px;
    background: white url("img/bg-header.jpg") left top no-repeat;
}

Для блока с логотипом укажем следующие свойства:

.logo {
    margin-top: 51px;
    float: left;
}

Для блока с контактами:

.contacts {
    float: right;
    text-align: right;
    margin-top: 25px;
}

Эти свойства должны применяться только для тех блоков, которые лежат именно в шапке, т.е. в блоке <div></div>, поэтому здесь мы добавим перед стилями (.logo и .contacts) контекстные селекторы:

#header .logo {
    margin-top: 51px;
    float: left;
}

#header .contacts {
    margin-top: 25px;
    float: right;
    text-align: right;
}

Для абзацев в блоке с контактами запишем следующие свойства:

#header .contacts p {
    font: bold 18px/14px Arial;
    color: black;
}

Теперь нам нужно добавить дополнительные классы для выделенных слов: Телефон, E-mail, а также звонок бесплатный. В шаблоне index.html запишите:

<p><span>Телефон:</span> 8 800 2000 01 01<br><span>звонок бесплатный</span></p>
<p><span>E-mail:</span> [email protected]</p>

В стилях запишем отдельно для селекторов .green и .gray цвета:

.green {
    color: #1d8b15;
}

.gray {
    color: #666;
}

И для отдельно взятых элементов в шапке запишем размер и начертание шрифта:

#header .contacts p .green {
    font-size: 14px;
    font-weight: normal;
}

#header .contacts p .gray {
    font-size: 12px;
    font-weight: normal;
}

С шапкой разобрались. Переходим к горизонтальному меню.


Видео к уроку

Введение в HTML — Изучение веб-разработки

По сути, HTML довольно простой язык, состоящий из элементов, которые могут быть применены к частям текста, чтобы придавать им различные значения (Это абзац? Это маркированный список? Это часть таблицы?), разделять документ на логические секции (есть ли у документа шапка? три столбца с контентом? меню навигации?) и добавлять контент на Вашу страницу, такой как фото и видео. Этот модуль расскажет вам о первых двух возможностях HTML и научит фундаментальным концепциям и синтаксису, которые вам нужно знать, чтобы понять HTML.

Чтобы начать изучение этого модуля, вам не нужны никакие знания HTML, но вы должны иметь хотя бы базовые навыки обращения с компьютером и навыки пассивного использования Веба (т.е просто смотря на него, потребляя контент). У вас должна быть базовая рабочая среда, описанная в разделе Установка базового программного обеспечения), а также понимание, как создавать и управлять файлами, что подробно описано в статье Работа с файлами — обе статьи являются частью нашего модуля Начало работы с сетью.

Примечание: если вы работаете на компьютере/планшете/другом устройстве, с отсутствием возможности создания собственных файлов, вы можете испробовать примеры кода (большинство) в онлайн-редакторах кода, таких как JSBin или Thimble.

Этот модуль содержит следующие статьи, которые помогут изучить всю основную теорию HTML и предоставят широкие возможности для проверки некоторых навыков.

Начало работы с HTML
Охватывает базовые основы HTML, чтобы вы начали изучение — мы опишем элементы, атрибуты и все другие важные термины, о которых вы, возможно, уже слышали, а также где и как они располагаются в языке. Мы также покажем, структуру HTML элемента, как устроена типичная страница HTML, и объясним другие важные языковые особенности. По ходу мы будем играть с HTML так, чтобы вам было интересно!
Что такое заголовок? Метаданные в HTML
Заголовок HTML — это часть документа, которая не отображается в браузере при загрузке страницы. Он содержит информацию, такую как: страница <title>, ссылки на CSS (если вы хотите стилизовать свой HTML при помощи CSS), ссылки на пользовательские значки и метаданные (которые представляют собой данные о HTML, например, кто его написал или важные ключевые слова, которые описывают документ).
Основы редактирования текста в HTML
Основной задачей HTML является придание тексту значения (также известно, как семантика), чтобы браузер знал, как его правильно отображать. В этой статье рассматривается то, как использовать HTML, чтобы разбить блок текста на структуру из заголовков и абзацев, добавить акцент/значение слов, создать списки и многое другое.
Создание гиперссылок
Гиперссылки очень важны — ведь именно они делают интернет интернетом. В этой статье описан синтаксис, необходимый для создания ссылок, а также описано их наилучшее применение на практике.
Углублённое форматирование текста
Существует множество других элементов HTML для редактирования текста, про которые мы вам не рассказали в статье Основы редактирования текста в HTML. Описанные здесь элементы менее известны, но о них также полезно знать. Здесь вы узнаете о разметке цитат, списках описания, компьютерном коде и другом сопутствующем тексте, нижнем и верхнем индексах, контактной информации и многом другом.
Структура документа и веб-сайта
Помимо определения отдельных частей страницы (таких как «абзац» или «изображение»), HTML также используется для определения отдельных зон веб-сайта (таких как «шапка», «меню навигации»,  «столбец с основным содержимым».) В этой статье рассматривается, как планировать базовую структуру веб-сайта и писать HTML для представления этой структуры.
Отладка HTML
Писать на HTML хорошо, но что, если что-то идёт не так, и вы не можете найти место ошибки в коде? В этой статье вы познакомитесь с некоторыми инструментами, которые могут вам помочь.

Следующие задания проверят ваше понимание основ HTML, описанных в приведённых выше руководствах.

Разметка письма
Все мы рано или поздно учимся писать письма; также это полезный тест, для проверки ваших навыков форматирования текста! Поэтому, в этом задании вам будет предоставлено письмо для разметки.
Структурируем страницу
Этот тест проверит вашу способность использовать HTML для структурирования простой страницы, которая содержит шапку («хедер») , нижний колонтитул («футер»), меню навигации, основное содержимое и боковую панель.
Основы интернет-грамотности
Отличный фундаментальный курс Mozilla, который даёт множество тестов, проверяющих знания, о которых мы говорили в модуле Введение в HTML. Учащиеся знакомятся с чтением, письмом и использованием сети в модуле из 6 частей. Откройте для себя основы Интернета через производство и сотрудничество.

Адаптивная шапка сайта (float vs flex)

Вы здесь: Главная — CSS — CSS3 — Адаптивная шапка сайта (float vs flex)

Я большой сторонник минимализма при планировании HTML структуры сайта. Любой сайт начинается с шапки и если у вас небольшое меню, то желательно логотип и навигацию, разместить в один ряд. Само собой, наша шапка должна быть адаптивной. Кроме того, сделаем нашу верстку двумя разными способами, используя технологию – float и flex. В конце статьи, сделаем вывод, как быстрее и проще сверстать адаптивную шапку.

Демонстрация шапки на float

Первый способ (float)

HTML разметка

Внутри хедера справа будет логотип, а слева навигационный блок с тремя ссылками меню. Разметка – проще некуда.

<header>
  <a href="#logo">Логотип сайта</a>
  <nav>
    <a href="#home">Главная</a>
    <a href="#contact">Контакты</a>
    <a href="#about">О нас</a>
  </nav>
</header>

CSS код

В потоке документа, ссылки, заняли бы место под логотипом, но мы меняем естественный ход событий и для логотипа прописываем float: left, а для блока nav – float: right. Как бы разводим их по разные стороны хедера.

See the Pen Адаптивная шапка сайта (float) by porsake (@porsake) on CodePen.


Делаем шапку адаптивной

На ширине экрана 500 пикселей и выше, мы отменяем обтекание float, там где оно было. После отмены, ссылки меню повели себя так, как и должны – встали в столбик. Мы получили адаптивную шапку первым способом (float).

@media screen and (max-width: 500px) {
  header a {
    float: none;
    display: block;
     text-align: left;
  }
  nav {
     float: none;
  }
}

Демонстрация шапки на flex

Второй способ (flex)

HTML разметка

Здесь нам пришлось логотип обернуть в блок с классом wrap-logo, иначе не получиться развести логотип и меню по разные стороны, меню будет прилипать к логотипу.

<header>
  <div>
  <a href="#logo">Логотип сайта</a>
  </div>
  <nav>
    <a href="#home">Главная</a>
    <a href="#contact">Контакты</a>
    <a href="#about">О нас</a>
  </nav>
</header>

CSS код

Обратите внимание, что в селекторе header, появилось много дополнительных свойств, по сравнению с флоатами.

display: flex; /* Включаем режим Flexbox. */
flex-direction: row; /* Держим элементы в строке */
justify-content: space-between; /* Распределяем элементы внутри шапки */
flex-wrap: wrap; /* Разрешаем перенос элементов на новую строку */

See the Pen Адаптивная шапка сайта (flex) by porsake (@porsake) on CodePen.

Что у нас с адаптивностью? При уменьшении экрана, блок с ссылками меню, сам переносится на новую строку и встает под логотипом. Отвечает за это свойство flex-wrap: wrap. Иными словами мы получили адаптивную шапку без медиа-запросов.

Вывод

Плюсы флексов:

На экранах смартфонов, шапка на flex-ах почти в 2 раза занимает меньше места по высоте, это огромный плюс. Мы не тратили время на медиа-запросы.

Минусы флексов:

Нам пришлось создать лишний блок, написать больше кода в стилях.

Плюсы флоатов:

Простой и понятный код.

Минусы флоатов:

Необходимость в медиа-запросах и отмены флоатов (clearfix).

Плюсов и минусов примерно одинаково. Но если вы хорошо освоите флексы, то минусов не останется. Так, что я выбираю флексы.

  • Создано 07.12.2018 10:30:00
  • Михаил Русаков
Предыдущая статья Следующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:
    <a href=»https://myrusakov.ru» target=»_blank»><img src=»https://myrusakov.ru/images/button.gif» alt=»Как создать свой сайт» /></a>

    Она выглядит вот так:

  2. Текстовая ссылка:
    <a href=»https://myrusakov.ru» target=»_blank»>Как создать свой сайт</a>

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):
    [URL=»https://myrusakov.ru»]Как создать свой сайт[/URL]

html — Шапка сайта: убрать отступ сверху

html — Шапка сайта: убрать отступ сверху — Stack Overflow на русском

Stack Overflow на русском — это сайт вопросов и ответов для программистов. Присоединяйтесь! Регистрация займёт не больше минуты.

Присоединиться к сообществу

Любой может задать вопрос

Любой может ответить

Лучшие ответы получают голоса и поднимаются наверх

Вопрос задан

Просмотрен 32k раз

Вот css к элементу

#head {
  padding: 0;
  margin: 0;
  display: block;
  height: 100px;
  background-color: #3366CC;
}

Как убрать верхний отступ?

diralik

9,08766 золотых знаков1818 серебряных знаков4949 бронзовых знаков

задан 1 мая ’13 в 20:14

alex91alex91

3,05366 золотых знаков2828 серебряных знаков5252 бронзовых знака

1
* {
  margin: 0;
  padding: 0;
}

Как-то так, я думаю, возможно.

представляет собой контейнер для вводного содержания или набор навигационных ссылок.

Элемент

обычно содержит:

  • один или несколько элементов заголовка (

    )
  • логотип или значок
  • информация об авторстве

Примечание: У вас может быть несколько элементов

в одном HTML-документ.Однако
нельзя поместить в
,
или другой элемент
.


Поддержка браузера

Числа в таблице указывают первую версию браузера, полностью поддерживающую элемент.

Элемент
<заголовок> 5.0 9,0 4,0 5,0 11,1


Глобальные атрибуты

Тег

также поддерживает глобальные атрибуты в HTML.


Атрибуты событий

Тег

также поддерживает атрибуты событий в HTML.


Другие примеры

Пример

Заголовок страницы:


Заголовок главной страницы здесь


Автор: Джон Доу


Попробуй сам »

Связанные страницы

Ссылка на HTML DOM: объект заголовка


Настройки CSS по умолчанию

Большинство браузеров будут отображать элемент

со следующим значением по умолчанию значения:

заголовок {
display: block;
}


HTML-заголовков


Заголовки HTML — это заголовки или субтитры, которые вы хотите отображать на веб-странице.



Заголовки HTML

Заголовки

HTML определяются с помощью тегов

.

определяет наиболее важный заголовок.
определяет наименее важный заголовок.

Пример

Заголовок 1


Заголовок 2


Заголовок 3


Заголовок 4

Заголовок 5

Заголовок 6

Попробуй сам »

Примечание. Браузеры автоматически добавляют пробелы (поля) до и после заголовка.


Заголовки важны

Поисковые системы используют заголовки для индексации структуры и содержания ваших веб-страниц.

Пользователи часто просматривают страницу по ее заголовкам. Важно использовать заголовки, чтобы показать структуру документа.

заголовков следует использовать для основных заголовков, за ними следует

заголовков, затем менее важные

и т. Д.

Примечание: Используйте заголовки HTML только для заголовков.Не используйте заголовки для создания текста BIG или жирный .


Большие заголовки

Каждый заголовок HTML имеет размер по умолчанию. Однако вы можете указать размер для любого заголовка. с атрибутом стиля , используя свойство размера шрифта CSS :



Упражнения HTML


Ссылка на тег HTML

Справочник тегов

W3Schools содержит дополнительную информацию об этих тегах и их атрибутах.

Тег Описание
Определяет корень HTML-документа
Определяет тело документа

до

Определяет заголовки HTML


Элементы заголовка HTML


Элемент HTML является контейнером для следующих элементов: <название> , <стиль> , , ,

Попробуй сам "

Элемент HTML

Элемент определяет базовый URL-адрес и / или цель для всех относительных URL-адресов на странице.

Тег должен иметь либо href или целевой атрибут, или оба.

Может быть только один элемент в документе!

Пример

Укажите URL-адрес по умолчанию и цель по умолчанию для всех ссылок на странице:



Stickman
базовый тег HTML

Попробуй сам "

Краткое содержание главы

  • Элемент - это контейнер для метаданных (data о данных)
  • Элемент помещается между тегом и тегом
  • Требуется элемент </code> и он определяет заголовок документа </li> <li> Элемент <code> <style> </code> используется для определить информацию о стиле для одного документа </li> <li> The <code> <ссылка> </code> тег чаще всего используется для ссылки на внешние таблицы стилей </li> <li> Элемент <code> <meta> </code> обычно используется для указания набора символов, описания страницы, ключевых слов, автора настройки документа и области просмотра </li> <li> Элемент <code> <script> </code> используется для определения клиентских сценариев JavaScripts </li> <li> Элемент <code> <base> </code> определяет базовый URL-адрес и / или цель для всех относительных URL-адресов на странице </li> </ul> <hr/> <h3><span class="ez-toc-section" id="_HTML-15"> Элементы заголовка HTML </span></h3> <table> <tr> <th> Тег </th> <th> Описание </th> </tr> <tr> <td> <head> </td> <td> Определяет информацию о документе </td> </tr> <tr> <td> <название> </td> <td> Определяет заголовок документа </td> </tr> <tr> <td> <база> </td> <td> Определяет адрес по умолчанию или цель по умолчанию для всех ссылок на странице </td> </tr> <tr> <td> <ссылка> </td> <td> Определяет связь между документом и внешним ресурсом </td> </tr> <tr> <td> <meta> </td> <td> Определяет метаданные о документе HTML </td> </tr> <tr> <td> <скрипт> </td> <td> Определяет клиентский сценарий </td> </tr> <tr> <td> <стиль> </td> <td> Определяет информацию о стиле для документа </td> </tr> </table> <br/> <br/> <h2><span class="ez-toc-section" id="_HTML_5_-_GeeksforGeeks"> Тег HTML 5 - GeeksforGeeks </span></h2><div class="advv"> <ins class="adsbygoogle" style="display:inline-block;width:336px;height:280px" data-ad-client="ca-pub-5948177564140711" data-ad-slot="7683656859"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <p> Тег <header> HTML 5 </p> <p> Тег <header> в HTML используется для определения заголовка документа или раздела.<br/> </p> <ul> <li> Тег заголовка содержит информацию, относящуюся к заголовку и заголовку соответствующего содержимого. </li> <li> Элемент <header> обычно предназначен для содержания заголовка раздела (элемент h2-h6 или элемент <hgroup>), но это не обязательно. </li> <li> Элемент <header> также можно использовать для обертывания оглавления раздела, формы поиска или любых соответствующих логотипов. </li> <li> Тег <header> - это новый тег в HTML5, и для него требуется как начальный, так и конечный тег.</li> <li> В одном документе может быть несколько элементов <header>. </li> <li> Тег <header> нельзя разместить внутри <footer>, <address> или другого элемента <header>. </li> </ul> <p> <strong> Синтаксис: </strong> <br/> </p> <pre> <strong> <header> ... </header> </strong> </pre> <p> Примеры ниже иллюстрируют элемент <header> в HTML: </p> <p> <strong> Пример 1: </strong> <br/> </p> <h3><span class="ez-toc-section" id="HTML-4"> HTML </span></h3> <table border="0" cellpadding="0" cellspacing="0"> <tbody> <tr> <td> <p> <code> <! DOCTYPE html> </code> </p> <p> <code> <</code> <code> html </code> <code>> </code> </p> <p> <code> </code> <code> <</code> <code> тело </code> <code>> </code> </p> <p> <code> </code> </p> <br/>3 <code> </code> <code> <</code> <code>> Заголовок </p> <p> <code> </code> <code> <</code> <code> h2 </code> <code>> Это заголовок.</ </code> <code> h2 </code> <code>> </code> </p> <p> <code> </code> <code> <</code> <code> h5 </code> <code>> Это подзаголовок. </ </code> <code> h5 </code> <code>> </code> </p> <p> <code> </code> </p> <p> <code> <</code> <code> p </code> <code> > Это метаданные. </ </code> <code> p </code> <code>> </code> </p> <p> </p> <p> <code> </code> <code> </ </code> <code> header </code> <code>> </code> </p> <p> <code> </code> </p> <p> <code> </code> <code> </ </code> <code> body </code> <code>> </code> </p> <p> <code> </ </code> <code> html </code> <code>> </code> </p> </td> </tr> </tbody> </table> <p> <strong> Выход: </strong> <br/> </p> <br/> <p> </p> <p> <strong> Пример 2: </strong> <br/> </p> <p> <strong> Выход: </strong> </p> <br/> <p> <p> <strong> Поддерживаемые браузеры <ul> <li> Google Chrome 6.0 </li> <li> Internet Explorer 9.0 </li> <li> Firefox 4.0 </li> <li> Opera 11.1 </li> <li> Safari 5.0 </li> </ul> <p> </p> <br/> <h2><span class="ez-toc-section" id="HTML-5"> HTML-тег </span></h2><div class="advv"> <ins class="adsbygoogle" style="display:inline-block;width:336px;height:280px" data-ad-client="ca-pub-5948177564140711" data-ad-slot="7683656859"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> <p> Тег <header> определяет заголовок страницы или раздела. Обычно он содержит логотип, поиск, навигационные ссылки и т. Д. </p> <p> Этот тег не представляет новый раздел в структуре. Элемент <header> обычно содержит заголовок (элемент <h2><span class="ez-toc-section" id="i-47"> - </span></h2><div class="advv"> <ins class="adsbygoogle" style="display:inline-block;width:336px;height:280px" data-ad-client="ca-pub-5948177564140711" data-ad-slot="7683656859"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div><h6><span class="ez-toc-section" id="i-48">) окружающего раздела. Однако этого не требуется.</span></h6></p> <p> Тег <header> является одним из элементов HTML5. В HTML-документе разрешается использовать несколько тегов <header>, которые можно разместить в любой его части. </p> Не разрешается размещать тег <header> внутри элементов <footer> и <address>, а также в другом теге <header>. <h3><span class="ez-toc-section" id="i-49"> Синтаксис¶ </span></h3> <p> Тег <header> используется парами. Контент записывается между открывающим (<header>) и закрывающим (</header>) тегами. </p> <pre content="code snippet"> <code> <! DOCTYPE html> <html> <head> <title> Название документа <стиль> ul { отступ: 0; } ul li { дисплей: встроенный блок; маржа справа: 10 пикселей; цвет: # 778899; } <заголовок>

    Добро пожаловать на нашу страницу


<статья> <заголовок>

Заголовок раздела

Абзац текста.