Как сделать хлебные крошки на сайте с помощью CSS
· HTML & CSS и Блог · 4 мин чтения
За последнее время CSS и CSS3 сильно продвинулись вперед и поэтому старые стили, которые используют картинки на заднем фоне для получения нужной фигуры — больше не требуются.
В этой статье я расскажу как сделать хлебные крошки на сайте с помощь HTML и CSS в стиле flat. Так же можете посмотреть интересные flat шаблоны сайтов, может что-нибудь пригодиться. Я недавно делал подборку.
В конце мы получим вот такой результат:
Ранее, для того чтобы сделать прозрачную стрелки между двумя блоками использовалась прозрачная картинка на заднем фоне. Теперь данная проблема может быть решена используя только CSS.
<div> <ul> <li><a href="#">Breadcrumb</a></li> </ul> </div>
Для начала создадим маркированный список — <ul>, в котором будут <li> элементы. Хлебная крошка будет добавляться с помощью добавления нового <li>.
Теперь напишем CSS, чтобы выглядело как тут:
#crumbs ul li a { display: block; float: left; height: 50px; background: #3498db; text-align: center; padding: 30px 40px 0 40px; position: relative; margin: 0 10px 0 0; font-size: 20px; text-decoration: none; color: #fff; }
Данные стили добавляют:
- вид для ссылки в виде блока и синий цвет
- центрируют текст и делаем его белым
- ровный padding , чтобы блок отображался корректно по вертикали
- сбрасывает иные стили для ссылок с text-decoration: none
Внимание: position: relative добавлен для того, чтобы позже сдерживать все внутренние блоки с position: absolute.
#crumbs ul li a:after { content: ""; border-top: 40px solid red; border-bottom: 40px solid red; border-left: 40px solid blue; position: absolute; right: -40px; top: 0; }
Для создания стрелок мы будем использовать свойство :after, которое позволяет создавать дополнительный элемент после родителя. Добавляем ему position: absolute — для этого мы и делали positive: relative для ссылок <a>, чтобы удержать absolute свойство внутри ссылки и манипулировать им как нам хочется.
Вид стрелки будет сделан с помощью использования border’ов. В примере специально использован красный цвет, но чтобы придать вид треугольника будет использоваться transparent. Далее border будет пододвинут на месте с использование
Меняем red в border на transparent, чтобы создать эффект прозрачности.
border-top: 40px solid transparent; border-bottom: 40px solid transparent; border-left: 40px solid #3498db;
#crumbs ul li a:before { content: ""; border-top: 40px solid transparent; border-bottom: 40px solid transparent; border-left: 40px solid #d4f2ff; position: absolute; left: 0; top: 0; }
Используя тот же принцип как и в третьем этапе — можно создать прозрачный треугольник позади блока. Цвет border должен быть поставлен как и задний цвет сайта, чтобы создавался эффект прозрачности.
padding: 30px 40px 0 80px;
Добавляя новые <li> увеличивают глубину хлебной крошки.
<div> <ul> <li><a href="#1">Один</a></li> <li><a href="#2">Два</a></li> <li><a href="#3">Три</a></li> <li><a href="#4">Четыре</a></li> <li><a href="#5">Пять</a></li> </ul> </div>
Чтобы создать эффект закругления для первого и последнего элемента в хлебной крошки мы будем использовать :first-child и :last-child.
#crumbs ul li:first-child a { border-top-left-radius: 10px; border-bottom-left-radius: 10px; } #crumbs ul li:first-child a:before { display: none; } #crumbs ul li:last-child a { padding-right: 80px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; } #crumbs ul li:last-child a:after { display: none; }
После чего нужно сделать выделения ссылки при наведении на нее. Цвет выделения можно выбрать по вашему вкусы — как пожелаете.
#crumbs ul li a:hover { background: #fa5ba5; } #crumbs ul li a:hover:after { border-left-color: #fa5ba5; }
Так же не забудьте добавить border-radius при наведении на первый и последний элемент в хлебной крошке.
Вот что у нас получилось: https://jsfiddle.net/AlexanderT/bmuwLfqr/
На этом все. Если у вас есть какие-то вопросы — пишите комментарии и поделитесь статьей, если вам понравилось!
Как сделать хлебные крошки на сайте с помощью CSS от bologer
-
Лучше ::after через JS не менять, там совсем темный лес. Сделайте доп. класс для li и по нему через CSS меняйте значение ::after 🙂
org/Comment» itemscope=»»> -
Да, это тоже как вариант 🙂
1
Павел Королёв
Спасибо за ответ …
Уже решил фильтром по атрибуту css для выделения
#crumbs ul li a[name=s]:after {
…
}
org/Comment» itemscope=»»> 1
Павел Королёв
А как сделать чтобы был выбранный пункт?
1
Павел Королёв
там со стороны js не просто сменить стиль у элемента after …в этом ж беда)
Можете у активного пункта <li> написать дополнительный класс, например .active и для него сделать специальные стили (например, другой задний фон), чтобы обозначить активным.
17.5.1 Слои и прозрачность таблицы
Для поиска фона каждой ячейки таблицы можно считать, что различные элементы таблицы состоят из шести слоев. Фон элемента, установленный в одном из слоев, будет видим, только если у расположенных выше слоев фон прозрачный.
[D]
Схема слоев таблицы.
Самый нижний слой представляет собой одну плоскость, представляющую сам блок таблицы. Как и все блоки, он может быть прозрачным.
Следующий слой содержит группы столбцов. Группы столбцов по высоте равны самой таблице, но не обязательно занимают всю ее ширину.
В верхней части групп столбцов находятся области, представляющие блоки столбцов. Как и группы столбцов, столбцы по высоте равны самой таблице, но не всегда занимают всю ширину таблицы.
Далее следует слой, содержащий группы строк. Каждая группа строк имеет ширину, равную ширине таблицы. Вместе взятые, группы полностью занимают таблицу сверху вниз.
Предпоследний слой содержит строки. Строки также занимают всю таблицу.
Самый верхний слой содержит собственно ячейки. Как показано на рисунке, хотя все строки и содержат одинаковое количество ячеек, не в каждой ячейке имеется содержимое. «Пустые» ячейки считаются прозрачными, поэтому через них будут видны нижние слои.
В следующем примере первая строка содержит четыре ячейки, вторая — ни одной, поэтому через нее виден фон таблицы, за исключением тех случаев, когда ячейка первой строки занимает и вторую строку. Следующий код HTML и правила стиля
<!DOCTYPE HTML PUBLIC «-//W3C//DTD HTML 4.0//EN»>
<HTML>
<HEAD>
<STYLE type=»text/css»>
TABLE { фон: #ff0; border-collapse: collapse }
TD { фон: red; border: double black }
</STYLE>
</HEAD>
<BODY>
<P>
<TABLE>
<TR>
<TD> 1
<TD rowspan=»2″> 2
<TD> 3
<TD> 4
</TR>
<TR><TD></TD></TR>
</TABLE>
</BODY>
</HTML>
может форматироваться так:
[D]
Таблица с тремя пустыми ячейками в нижней строке.
В CSS не определяется «оптимальное» компоновка таблиц, так как в большинстве случаев оптимальное является делом вкуса. В CSS не определяются ограничения, которые агенты пользователей должны учитывать при построении таблицы. Агенты пользователей могут использовать любой алгоритм и выбирать скорость представления, если не указан «алгоритм фиксированного положения».
‘table-layout’
Значение:
auto | fixed | inherit
Начальное значение:
auto
Область применения: элементы
‘table’ и ‘inline-table’
Наследование:
нет
Процентное значение:
не применяется
Устройства:
визуальные
Свойство ‘table-layout’ управляет алгоритмом, используемым для размещения ячеек, строк и столбцов таблицы. Значения имеют следующий смысл:
fixed
Используется алгоритм фиксированного положения таблицы
auto
Используется любой алгоритм автоматического размещения таблицы
Ниже представлены описания обоих алгоритмов.
Непрозрачность границы — Tailwind CSS
Домашняя страница Tailwind CSS Версия Tailwind CSS v3v2.2.16v1.9.6v0.7.4Tailwind CSS на GitHubУтилиты для управления непрозрачностью цвета границы элемента.
Ссылка на класс по умолчанию
Использование
Управление непрозрачностью цвета границы элемента с помощью утилит border-opacity-{количество}
.
<дел>дел> <дел>дел> <дел>дел> <дел>дел> <дел>дел>
Responsive
Чтобы контролировать непрозрачность цвета границы элемента в определенной точке останова, добавьте префикс {экран}:
к любой существующей утилите непрозрачности цвета границы. Например, используйте md:border-opacity-50
, чтобы применить утилиту border-opacity-50
только к экранам среднего размера и выше.
<дел>
Дополнительные сведения о функциях адаптивного дизайна Tailwind см. в документации по адаптивному дизайну.
Настройка
Чтобы одновременно настроить значения непрозрачности для всех связанных с непрозрачностью утилит, используйте раздел opacity
конфигурации темы tailwind.config.js
:
// tailwind.config.js модуль.экспорт = { тема: { продлевать: { непрозрачность: { + «10»: «0,1», + «20»: «0,2», + '95': '0,95', } } } }
Если вы хотите настроить только утилиты прозрачности границ, используйте borderOpacity
раздел:
// tailwind.config.js модуль.экспорт = { тема: { продлевать: { границаНепрозрачность: { + «10»: «0,1», + «20»: «0,2», + '95': '0,95', } } } }
Дополнительные сведения о настройке темы по умолчанию см. в документации по настройке темы.
Варианты
По умолчанию для утилит непрозрачности границ генерируются только адаптивные, темный режим (если включен) , групповое наведение, фокус внутри, наведение и фокус.
Вы можете контролировать, какие варианты создаются для утилит прозрачности границы, изменив свойство borderOpacity
в разделе вариантов
файла tailwind.config.js
.
Например, эта конфигурация также будет генерировать активные варианты:
// tailwind.config.js модуль.экспорт = { варианты: { продлевать: { // ... + borderOpacity: ['активный'], } } }
Отключение
Если вы не планируете использовать утилиты непрозрачности границ в своем проекте, вы можете полностью отключить их, установив параметр свойство borderOpacity
на false
в разделе corePlugins
вашего файла конфигурации:
// tailwind.config.js модуль.экспорт = { основные Плагины: { // ... + borderOpacity: ложь, } }
←Border ColorBorder Style→
Редактировать эту страницу на GitHub
На этой странице
- Ссылка на класс по умолчанию
- Использование
- Адаптивный 9008 4 Настройка
- Варианты
- Отключение
Transparent — Класс CSS Tailwind
← Список классов CSS TailwindPreview
Check
. border-transparent в реальном проекте 900 02 Щелкните один из приведенных ниже примеров, чтобы откройте визуальный редактор Shuffle с библиотекой пользовательского интерфейса, в которой используется выбранный компонент. Открыть в визуальном редакторе → Открыть в визуальном редакторе → Открыть в визуальном редакторе → Открыть в визуальном редакторе → Открыть в визуальном редакторе → Открыть в визуальном редакторе → Открыть в визуальном редакторе → Открыть в визуальном редакторе → Открыть в визуальном редакторе → Открыть в визуальном редакторе →Источник CSS
. border-transparent { цвет границы: прозрачный; }
Подробнее в Tailwind CSS Цвет границы
- .border-current
- .бордюр-черный
- .бордюр-белый
- .граница-серый-100
- .граница-серый-200
- .граница-серый-300
- .граница-серый-400
- .граница-серый-500
- .граница-серый-600
- . граница-серый-700
- .граница-серый-800
- .граница-серый-900
- .border-red-100
- .border-red-200
- .border-red-300
- .border-red-400
- .border-red-500
- .border-red-600
- .border-red-700
- . border-red-800
- .border-red-900
- .border-orange-100
- .border-orange-200
- .border-orange-300
- .border-orange-400
- .border-orange-500
- .border-orange-600
- .border-orange-700
- .border-orange-800
- . border-orange-900
- .бордюр-желтый-100
- .border-yellow-200
- .бордюр-желтый-300
- .бордюр-желтый-400
- .бордюр-желтый-500
- .бордюр-желтый-600
- .бордюр-желтый-700
- .border-yellow-800
- .бордюр-желтый-900
- . border-green-100
- .border-green-200
- .border-green-300
- .border-green-400
- .border-green-500
- .border-green-600
- .border-green-700
- .border-green-800
- .border-green-900
- .border-teal-100
- . border-teal-200
- .border-teal-300
- .border-teal-400
- .border-teal-500
- .border-teal-600
- .border-teal-700
- .border-teal-800
- .border-teal-900
- .border-blue-100
- .border-blue-200
- . border-blue-300
- .border-blue-400
- .border-blue-500
- .border-blue-600
- .border-blue-700
- .border-blue-800
- .border-blue-900
- .border-indigo-100
- .border-indigo-200
- .border-indigo-300
- . граница-индиго-400
- .граница-индиго-500
- .border-indigo-600
- .граница-индиго-700
- .border-indigo-800
- .граница-индиго-900
- .border-purple-100
- .border-purple-200
- .border-purple-300
- .border-purple-400
- . border-purple-500
- .border-purple-600
- .border-purple-700
- .border-purple-800
- .border-purple-900
- .border-pink-100
- .border-pink-200
- .border-pink-300
- .border-pink-400
- .border-pink-500
- .