Как сделать карточку в html
Перейти к содержимому

Как сделать карточку в html

  • автор:

Как сделать карточку товара на CSS

Как сделать карточку товара на CSS

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

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

Демонстрация

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

HTML код

Тег section здесь нужен только для выравнивания карточки относительно окна браузера. Сама карточка – это тег div с классом card. Разумеется, что в данном примере мы могли бы и не присваивать класс тегу div, ведь он у нас один на странице. Только вот на полноценной странице сайта, будет много тегов div, поэтому привыкаем присваивать классы.

Куртка джинсовая

Куртка джинсовая

3 450 руб.

Выполнена из денима и декорирована искусственным мехом.

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

Как сделать карточку товара на CSS.

А теперь будем наводить красоту, а поскольку восприятие красоты очень индивидуально, то сделаем хотя бы аккуратно и опрятно.

CSS стили

Всегда следует обнулять марджины и паддинги, так мы берем их под контроль.

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

section position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
>

Создание тени (box-shadow) вокруг карточки, хороший способ обрамить карточку, выделить её из остального контента. Первые четыре цифры задают ширину тени, начиная сверху и двигаясь по часовой стрелке. Цвет тени, мы здесь задаем в формате rgba, ради значения 0.2 у альфа канала, чтобы тень была полупрозрачная, едва заметная и мягкая.

.card box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
max-width: 200px; /* Ограничение ширины */
margin: auto;
text-align: center;
font-family: sans-serif;
>

Фотография на 100% по ширине заполняет свой родитель – карточный блок.

Зададим названию карточки товара фиолетовый цвет.

В параграфе стилизуем описание: создаем поля вокруг текста по 4 пикселя, чтобы не прилипал к краям карточки, размер и цвет шрифта.

p padding: 4px;
font-size: 14px;
color: #757575;
>

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

.price color: #d32f2f;
font-size: 18px;
>

Кнопку «В корзину», делаем самой заметной, но без фанатизма, убираем внешнюю и внутреннюю рамки (border, outline), выравниваем текст по центру (text-align) и растягиваем кнопку на всю ширину карточки (width: 100%). Так, чтобы кнопка была единым целым с карточкой товара, так смотрится гармоничнее, чем целая куча маленьких кнопочек на странице. Ведь карточка товара, обычно не в одном экземпляре находится на сайте.

.card button border: none;
outline: 0;
padding: 10px;
color: #fff;
background-color: #f44336;
text-align: center;
cursor: pointer;
width: 100%;
font-size: 18px;
>

Наш шедевр готов.

Как сделать карточку товара на CSS.

Создано 26.11.2018 10:18:00

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

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

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

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

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

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

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 0 ):

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

    Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.

    Карточки

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

    Базовая карточка

    Чтобы создать базовую карточку, примените классы .card и .card-body к элементу, который определяет внешний контейнер карточки. Также добавьте .card-title к любым элементам заголовка и .card-text к текстовым элементам.

    Дальше

    Шапка и подвал

    Вы можете добавить шапку и подвал, вставив с .card-header или .card-footer .

    Заголовки HTML

    Вы также можете применить класс .card-header к любому элементу заголовка HTML (т. е. к элементам — ).

    Навигация в заголовке

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

    Вкладки

    Добавьте класс .card-header-tabs к элементу .

    Пилюли

    Добавьте класс .card-header-pills к элементу .

    Содержимое заподлицо (убираем padding)

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

    Солнце исчезает!

    Фото заката

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

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

    Верх и низ

    Содержимое, такое как изображения, может располагаться заподлицо с верхней частью карточки (чтобы верхние углы изображения совпадали со скруглёнными углами карточки). Для этого примените к элементу класс .card-img-top или .card-img-bottom .

    Фото заката

    Группа списков

    Вы можете добавить группы списков в карточки. Используйте класс .list-group-flush , чтобы поместить группы заподлицо с границей карточки.

    Ссылки

    Выравнивание текста

    Вы можете использовать любой из классов выравнивания текста Bootstrap для выравнивания текста внутри карточки. Это .text-left , .text-right , .text-center , .text-justify и .text-nowrap .

    Солнце исчезает!

    Фото заката

    Весь доклад

    Контекстные цвета

    Вы можете использовать текстовые и фоновые утилиты Bootstrap для изменения цвета карточки.

    Цвет границы

    Вы также можете использовать утилиты границ Bootstrap.

    Наложение текста

    Вы можете применить к карточке изображение, поверх которого появится текст. Для этого добавьте класс .card-img-overlay к текстовому содержимому.

    Фото заката

    Ширина карточки

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

    CSS

    Ширину можно задать явно с помощью CSS. Например, вы можете использовать такие свойства, как width или max-width. Некоторые из приведённых выше примеров используют CSS для ограничения ширины карточек.

    Сетка

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

    Скачать

    Группа карточек

    Группа карточек позволяет представить несколько карточек в виде одного связанного элемента с карточками одинаковой ширины и высоты. Для этого вложите все карточки в элемент .card-group .

    Карточный стол

    Карточный стол похож на группу карточек, за исключением того, что карточки на столе не связаны друг с другом. Для этого вложите все карточки в элемент .card-deck , который в свою очередь вложен в .card-deck-wrapper .

    Колонки карточек

    Bootstrap позволяет отобразить несколько карточек внутри каждой колонки, причём каждая карточка располагается ниже другой. Для этого вложите все карточки в элемент .card-columns .

    Новое в Bootstrap 4

    Карточки являются новыми в Bootstrap 4. Они заменяют функциональность, которая ранее предоставлялась панелями и миниатюрами.

    Автор: Йен Диксон
    Последнее изменение: 12.03.2020

    Простая семантичная карточка-ссылка

    Представим себе элемент дизайна — карточку. Карточку товара, или карточку поста в блоге. Суть в том, что по клику в любое место карточки нужно переходить на страницу этого товара или поста.

    Первая реализация

    Логично предположить, что этот элемент должен быть сделан тегом a . Как-то так:

     

    Item header

    Item looong description

    Проблема

    Во-первых это не семантично. Ссылка предполагает наличие внутри себя текста, который описывает, куда она ведет. Помещать туда что-то кроме него — значит путать пользователей со скринридерами и поисковых роботов.

    Во-вторых внутри карточки могут предполагаться другие ссылки. Например, на автора статьи или категорию товара:

     

    Item header

    Item looong description

    Ivan Ivanovich

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

     

    Item header

    Item looong description

    Ivan Ivanovich

    Реализация получше

    Все же стоит сделать карточку подходящим для нее тегом, в данном случае article , а главную ссылку положить в заголовок:

     

    Item header

    Item looong description

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

    Как же сделать переход по ссылке по клику в любое место (кроме ссылки на автора), а не только в заголовок? Существует неочевидное решение на CSS для таких случаев.

     

    Item header

    Item looong description

    article < position: relative; >h3 > a::before

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

    «Вложенные» ссылки

    Чтобы сделать внутри этой карточки ссылку на автора или категорию товара, положим нужные элементы поверх псевдо-элемента ссылки. Или же опустим псевдо под другие элементы. Значит нужно свойство z-index для управления контекстом наложения и pointer-events для управления событием клика.

     

    Item header

    Item looong description

    Ivan Ivanovich
    article < position: relative; z-index: 0; >h3 > a::before < position: absolute; content: ''; inset: 0; z-index: -1; >p, img

    Более сложные ховер-эффекты

    В примере выше по наведению мыши мы только меняем цвет текста для заголовка-ссылки. Это сделано с помощью псевдокласса :hover на теге a . Что делать, если по ховеру нам нужно менять цвет фона карточки?

    Первая мысль: сделать селектор article:hover и в нем прописать новый цвет фона.

    Почему это плохо? Bo-первых, потому что этот псевдокласс предназначен для интерактивных элементов. article не интерактивный. Во-вторых, этот эффект будет срабатывать, когда пользователь наводит мышку на «вложенные» ссылки. А должен только при наведении на «главную» ссылку.

    Правильнее будет использовать функциональный псевдокласс :has() и написать так:

    article:has(h3 > a:hover)

    От такого решение нас пока останавливает только поддержка :has() в браузерах ��

    Поэтому используем article:hover , но помним, что это не очень правильное решение.

    Нерешенные проблемы

    Это решение не идеальное с точки зрения UX. Например, нельзя выделить текст в карточке, не зажав кнопку Alt (option на MacOS). Эта проблема осталась нерешенной.

    Цитирования

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

    Мотивировать меня чаще писать о CSS можно на patreon.

    Мои каналы о CSS css_mind и csswg_weekly в телеграм.

    Нашли опечатку? Сообщите мне о ней.

    Как сделать карточки в ряд?

    Я с помощью php циклом вывожу карточки товаров. Их количество зависит от количества записей в mysql.
    Не знаю почему но карточки выводятся в столбик, а хотелось бы в ряд. Помогите кто нибудь пожалуйста)
    Вопрос наверное больше относится к верстке.

    R::close(); $link = mysqli_connect("localhost", "root", "", "redbeen"); $result = mysqli_query($link, "SELECT * FROM tblproduct"); $num_rows = mysqli_num_rows($result); while ($x <$num_rows) < $x++; // Увеличение счетчика $tblproduct = R::load('tblproduct', $x); echo '

    '.$tblproduct->name.'

    '; >

    7 комментариев

    Простой 7 комментариев

    Brad9aga

    код нормально выложить не судьба ?
    dpopov29033 @dpopov29033 Автор вопроса
    Brad9aga, а что тут не нормально?
    dpopov29033 @dpopov29033 Автор вопроса
    Brad9aga, это весь код

    SkiperX

    Алекс Глебов @SkiperX Куратор тега CSS
    клади карточки внутрь колонок
    https://getbootstrap.com/docs/4.0/layout/grid/

    Brad9aga

    dpopov29033, то есть ты хочешь сказать что у тебя нет ни подключение бутстрапа ни стилией, один голый php с куском html ?

    dpopov29033 @dpopov29033 Автор вопроса
    Brad9aga, а зачем тебе видеть подключения?
    dpopov29033 @dpopov29033 Автор вопроса
    Brad9aga, для людей, которые разбираются и этого будет достаточно
    Решения вопроса 3
    Konstantin Zhikhor @shevchenko__k
    Помогаю новорожденным web программистам
    попробуй этот шаблон если у тебя bootstrap

     
    Card image cap
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.

    Last updated 3 mins ago

    Card image cap
    Card title

    This card has supporting text below as a natural lead-in to additional content.

    Last updated 3 mins ago

    Card image cap
    Card title

    This is a wider card with supporting text below as a natural lead-in to additional content. This card has even longer content than the first to show that equal height action.

    Last updated 3 mins ago

    Ответ написан более трёх лет назад
    Нравится 1 5 комментариев
    dpopov29033 @dpopov29033 Автор вопроса
    спасибо тебе огромное, у меня получилось.

    Brad9aga

    dpopov29033, да неужели
    dpopov29033 @dpopov29033 Автор вопроса
    Brad9aga, ну не ты же ответ написал

    Brad9aga

    dpopov29033, делать мне больше нечего, нормально делай, нормально будет
    dpopov29033 @dpopov29033 Автор вопроса

    Brad9aga, если тебе делать нечего, зачем ты тогда вообще начал писать в эту тему?
    если все равно толкового ничего не сказал, это же пустословие

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *