Как сделать адаптивные табы (вкладки) на css без использования скриптов

Добрый вечер! Сегодня я вам расскажу, каким образом можно сделать табы (вкладки) на чистом css3 без какого-либо использования jquery или других скриптов. Как вы уже знаете, чем меньше вы будете использовать скриптов, тем лучше для вашего сайта, и тем быстрее он будет работать. А скорость сайта сегодня один из самых важных показателей его ранжирования в поисковых системах.

Итак, начнем

Сегодня табы есть практически на любом сайте. Они необходимы для того, чтобы отображать несколько областей контента без перехода пользователя на другие страницы. Например, на одном из моих проектов по разработке интернет-магазина на Joomla было добавление двух табов, которые будут отображать по 3 товара двух типов: «хиты продаж» и «последние». Принято решение делать их на чистом css без перезагрузки сайта ненужными скриптами.

Итак, приступим.

HTML код для табов с использованием css3 по пунктам

1. В первую очередь нам необходимо создать div с классом «tabs».

2. Добавляем непосредственно кнопки-переключали с именем «tabs», при нажатии на которые они будут включать содержимое наших табов.

<input type=«radio» name=«tabs» id=«tab-first» checked >

3. Добавляем их название через label

<label for=«tab-first»>

4. Под кнопками, которые мы с Вами сделали в пунктах 1-3, мы добавляем уже непосредственно контент, который нам нужно выводить. В моем случае это три последних товара и три лучших товара.

Каждый блок у нас имеет класс tab-content и идентификаторы tab-content-1 и tab-content-2.

Итоговый HTML наших будущих табов

<div>
    <!-- Кнопка-переключатель и название первого таба -->
    <input type="radio" name="tabs" checked >
    <label for="tab-first">
        <p>Хиты продаж</p>
    </label>
    <!-- Кнопка-переключатель и название второго таба -->
    <input type="radio" name="tabs">
    <label for="tab-second">
        <p>Последнее</p>
    </label>
    <!-- Вывод контента наших табов -->
    <div>
        <p>
         <!-- Тут вы размещаете контент под таб№1 -->
        </p>
    </div> <!-- #tab-content-1 -->
    <div>
    <p><!-- Тут вы размещаете контент под таб№2 --></p>
    </div> <!-- #tab-content-2 -->
</div>

На этом мы закончили с написанием нашего html. Согласитесь, ничего сложного тут не было. Итак, идем дальше.

CSS стили для табов с использованием css3 по пунктам

Теперь самое интересное и сложное. Нам нужно наши табы сделать табами, которые будут переключаться при клике 🙂

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

Также, обратите внимание, что по умолчанию, мы делаем наши кнопки-переключатели невидимыми

.tabs {
    max-width: 90%;
    float: none;
    list-style: none;
    padding: 0;
    margin: 75px auto;
    border-bottom: 4px solid #ccc;
}
.tabs:after {
    content: '';
    display: table;
    clear: both;
}
.tabs input[type=radio] {
    display:none;
}
.tabs label p {
    padding: 5px;
    margin-right: 0;
}
.
="tab"]:checked + label { background: #FFF; box-shadow: inset 0 4px #3498db; border-bottom: 4px solid #3498db; color: #3498db; } #tab-first:checked ~ #tab-content-1, #tab-second:checked ~ #tab-content-2 { display: block; }

Строками выше мы добавляем особы стиль для активного таба используя :checked + label

Далее мы уже проверяем, какой наш переключатель имеет статус

checked и отображаем содержимое, которое у нас прикреплено за ним, используя его id.

#tab-first:checked ~ #tab-content-1 — данная строка говорит о том, что нам нужно отобразить контент, который имеет id=»tab-content-1″, если tab-first имеет статус checked.

Делаем наши табы адаптивными

@media (min-width: 768px) {
    .tabs p {
        padding: 5px;
        margin-right: 10px;
    }
    . tabs {
    max-width: 750px;
    margin: 50px auto;
    }
}

Ну вот по сути и все. Наши табы готовы :). Вы их можете менять как угодно, добавлять-удалять. Спасибо за внимание 🙂

Как сделать вкладки на чистом CSS

Основы PHP 8

Пройдя курс, Вы узнаете:

— Как установить и настроить OpenServer

— Всю необходимую базу по PHP 8

— Как писать самые различные скрипты на PHP

Общая продолжительность курса 7 часов, плюс более 100 упражнений и поддержка!

Чтобы получить Видеокурс,
заполните форму

E-mail:
Имя:

Другие курсы

Как создать профессиональный Интернет-магазин

После семинара:

— Вы будете знать, как создать Интернет-магазин.

— Вы получите бесплатный подарок с подробным описанием каждого шага.

— Вы сможете уже приступить к созданию Интернет-магазина.

Записаться

Другие курсы

В древности люди учились для того, чтобы совершенствовать себя. Ныне учатся для того, чтобы удивить других.

Конфуций

На этом уроке мы научимся делать простые вкладки на чистом CSS и никакого JavaScript. В ряде случаев этого решения вполне достаточно, ограничиваясь возможностями только

CSS стилей.

HTML код

Сначала создадим обертку для вкладок с классом wrap. Затем блок для вкладок tabs, навигацию для переключения вкладок tabs__items, вкладки-ссылки tabs__item. В адресах ссылок пропишем названия-якоря и точно такие же названия укажем в идентификаторах у текстовых блоков, таким образом связав их между собой. Далее создадим три блока с содержимым табов tab__box.

<div>
  <div>
    <nav>
      <a href="#tablink_01"><span>Вкладка #1</span></a>
      <a href="#tablink_02"><span>Вкладка #2</span></a>
      <a href="#tablink_03"><span>Вкладка #3</span></a>
    </nav>
    <div>
      <div>
        рыба-текст
      </div>
      <div>
        рыба-текст
      </div>
      <div>
        рыба-текст
      </div>
    </div>
  </div>
</div>

CSS код

Сделаем для обертки отступ сверху, ограничим ее по ширине и расположим по середине.

.wrap {
    padding: 40px 0;
    max-width: 900px;
    margin: 0 auto;
}

Сделаем оболочку для табов флекс-контейнером, для построения табов в один ряд.

.tabs__items {
    display: flex;
}

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

.tabs__item {
    flex: 0 1 33.333%; // управление размерами вкладок
    height: 50px; // высота вкладок
    display: flex;
    justify-content: center; // центрирование по горизонтали
    align-items: center; // центрирование по вертикали
    text-transform: uppercase; // перевод в верхний регистр
    color: #fff; // цвет ссылок
    text-decoration: none; // убираем подчеркивание ссылок
}

Изначально все вкладки нужно спрятать.

.tab__box {
    position: relative; // относительное позиционирование
    padding: 20px; // внутренние отступы
    font-size: 18px;
    line-height: 24px;
    display: none; // вкладки скрыты
}

Как добиться, чтобы при нажатии на вкладку, показалось ее содержимое? Поможет нам псевдо-класс :target, который при клике по цели, применит заданный стиль к элементу с якорем.

.tab__box:target {
    display: block; // покажет содержимое при клике
}

Мы хотим, чтобы при клике, сам таб и бокс с контентом меняли цвет фона и здесь без псевдоэлемента никак не обойтись. Создадим для вкладок с контентом пустые блоки при помощи псевдоэлемент :before.

.tab__box:before {
    content: "";
    height: 50px;
    width: 33.333%;
    position: absolute;
    top: -50px;
}

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

:nth-child.

.tab__box:nth-child(1) {
    background-color: #3fc1c9;
}
.tab__box:nth-child(1):before {
    background-color: #3fc1c9;
    left: 0;
}
.tab__box:nth-child(2) {
    background-color: #fc5185;
}
. tab__box:nth-child(2):before {
    background-color: #fc5185;
    left: 33.333%;
}
.tab__box:nth-child(3) {
    background-color: #3fc1c9;
}
.tab__box:nth-child(3):before {
    background-color: #3fc1c9;
    right: 0;
}

Цветной фон перекрывает меню навигации, поэтому переместим надпись на слой выше.

.tabs__item span {
    position: relative;
    z-index: 2;
}

Демонстрация переключения вкладок

  • Создано 27.03.2020 10:32:20
  • Михаил Русаков

Предыдущая статьяСледующая статья

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (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]

вкладок CSS | HTML Собака

Навигация с вкладками, созданная из элементов списка и кусочков CSS

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

Мы собираемся попробовать разные вещи с CSS, но мы будем придерживаться следующей базовой структуры HTML:

<заголовок>
 

Вкладки

<навигация> <ул>
  • Это
  • Это
  • Другое
  • Банан
  • <раздел>

    <раздел>

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

    Реклама здесь! На давно известном, хорошо читаемом и уважаемом ресурсе веб-разработки.

    Прежде всего, мы можем удалить маркеры элементов списка и обнулить поля и отступы элемента ul :

    нав ул {
        стиль списка: нет;
        заполнение: 0;
        маржа: 0;
    }
     

    Теперь перейдем к делу…

    Встроенные элементы списка

    Наиболее очевидное первое, что мы можем сделать, это сделать список горизонтальным. Самое простое решение для этого — установить для свойства display блоков, созданных элементами li , значение inline :

    .
    нав ли {
        дисплей: встроенный;
        граница: сплошная;
        ширина границы: 1px 1px 0 1px;
        поля: 0 5px 0 0;
    }
     

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

    Теперь мы можем сделать вещи немного аккуратнее, дополнив поля элементов и .

    нав ли а {
        отступ: 0 10 пикселей;
    }
     

    Преимущество настройки отступов блока элементов a , а не блоков элементов li , заключается в том, что вся ширина вкладки становится доступной для щелчка.

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

    #содержание {
        граница: сплошная 1px;
    }
     

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

    Поскольку вертикальные отступы во встроенных блоках на самом деле ничего не выталкивают вокруг себя, мы можем просто сделать это:

    #выбрано {
        отступ снизу: 1px;
        фон: белый;
    }
     

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

    Простые вкладки с использованием дисплея : встроенные

    Плавающие элементы списка

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

    Итак, если мы хотим сделать что-то более необычное с вкладками, нам нужно горизонтально расположить элементы списка по-другому:

    #заголовок ли {
        плыть налево;
        граница: сплошная 1px;
        ширина нижней границы: 0;
        поля: 0 5px 0 0;
    }
     

    Это то же самое, что и раньше, за исключением того, что вместо того, чтобы отображать li блоков элементов в строке, мы перемещаем их слева.

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

    #содержание {
        граница: сплошная 1px;
        ясно: оба;
    }
    ч2 {
        маржа: 0;
        отступ: 0 0 10px 0;
    }
     

    С этим методом мы почти закончили, но вместо того, чтобы применять отступы к выбранному элементу списка, как мы это делали со встроенным подходом к элементу списка (который здесь просто дополняет элементы, потому что плавающий блок имеет тип отображения «блок»), мы собираемся поднять все это и сбить на один пиксель:

    #выбрано {
        положение: родственник;
        верх: 1 пиксель;
        фон: белый;
    }
     

    Итак, теперь все выглядит почти так же, как и со встроенным методом. Одно небольшое отличие состоит в том, что выбранная вкладка находится на один пиксель ниже, чем другие, потому что она была сдвинута вниз, чтобы закрыть нижнюю строку. Чтобы избежать этого, вы можете применить последний блок объявлений с позиционированием и цветом фона к ссылке внутри элемента списка ( #выбрано ) вместо самого элемента списка ( #выбрано ), что позволяет достичь более желаемого эффекта.

    Другой подход к борьбе с контролем размера вкладок заключается в использовании display: inline-block .

    Сделать вещи лучше…

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

    Игра с

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

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

    Узкие вкладки

    И вкладки не обязательно должны быть прямоугольными 9Углы 0 градусов тоже. Применение border-radius к верхнему левому и верхнему правому углам каждой вкладки сделает их еще более похожими на те разделительные карты, которым мы так хотим подражать.

    Вкладки CSS: полное руководство

    Назад Вкладки CSS: полное руководство

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

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

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

    Основы вкладок CSS и HTML

    Создание страницы вкладок Essential HTML

    Навигация с вкладками использует кнопки навигации (вкладки), расположенные вместе с выделенной вкладкой, чтобы узнать, на какую веб-страницу вы попали на веб-сайте. .

    Давайте начнем нашу HTML-страницу и добавим базовую основу для вкладок навигации.

     
    
    <голова>
    
    <тело>
    <заголовок>
     

    Вкладки навигации

    <навигация> <ул>
  • Биография
  • Фотография
  • Публикации
  • Магазин
  • <раздел>

    <раздел>

    Затем добавьте немного CSS, чтобы определить

      и
    • в области вкладки навигации.




       

      Вкладки навигации



          



      Добавление в CSS теперь дополнительно определяет нашу встроенную (горизонтальную) область вкладок.

      Добавить отступы вкладок CSS

      Теперь пришло время добавить отступы к вкладкам, добавив немного CSS в область стилей.

       навигация {
          отступ: 0 10 пикселей;
      }
       

      Обратите внимание на разницу в том, что добавление отступов CSS влияет на макет.

      Обратите внимание, что регулировка отступов блока элементов a , а не блоков элементов li , дает возможность сделать кликабельной всю ширину вкладки.

      Теперь добавьте основу для этих выступов. Это дает лучшее визуальное представление самих вкладок.

      Определение выбранной вкладки

      Как вы помните, в вашем CSS есть активная вкладка (

    • ), которая представляет собой вкладку страницы, на которой вы сейчас находитесь. Как пользователь узнает, где он находится, если вкладка не отображается по-другому. Сделаем активную вкладку.

      Поскольку вертикальные отступы во встроенных блоках на самом деле ничего не выталкивают вокруг себя, вы можете просто добавить это:

       #selected {
          отступ снизу: 2px;
          фон: желтый;
      }
       

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

      Добавление закругленных краев на вкладку

      Теперь, чтобы добавить закругленные края на вкладки, просто определите радиус границы.

      Вернитесь в область стилей nav li CSS и добавьте определение верхнего левого и верхнего правого радиуса границы.

       нав ли {
          дисплей: встроенный;
          граница: сплошная;
          ширина границы: 1px 1px 0 1px;
          поля: 0 5px 0 0;
          граница-верхний-левый-радиус: 15px;
          граница-верхний-правый-радиус: 15px;
      }
       

      Результат ожидаемый.

      Заключительное примечание

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

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

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

      Куда дальше?

      Это введение в вкладок CSS должно стать отправной точкой для дальнейшего изучения дизайна веб-сайта, макета и практических приложений с HTML и CSS.

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

      HTML — отличный способ начать изучение кода, но профессиональный мир требует все больше и больше. Почему бы не улучшить свои навыки и возможности, продвинувшись еще дальше. Запишитесь на нашу программу «Введение в программирование Nanodegree» уже сегодня!