Вопрос или проблема
У меня есть группа спанов, которые должны служить в качестве селекторов, поэтому я хочу, чтобы они занимали всё пространство вокруг себя, когда пользователь наводит на них курсор, однако я не знаю как это сделать и не нашёл ответа на этот вопрос. Пожалуйста, помогите, вот мой код
*
{
margin:0;
padding:0;
}
.selector {
cursor: pointer;
padding-right: 40px;
padding-left: 20px;
display:inline-block;
}
.link {
background-color:LightGray;
color:black;
padding: 5px;
font-size: 25px;
overflow:hidden;
}
<div class="link"><b>
<span onmouseover="style="background-color:white;"" onmouseout="style="background-color:LightGray;"" style="color:black;" class="selector">Prehrana</span>
<span onmouseover="style="background-color:white;"" onmouseout="style="background-color:LightGray;"" style="color:black;" class="selector">Pica</span>
<span onmouseover="style="background-color:white;"" onmouseout="style="background-color:LightGray;"" style="color:black;" class="selector">Ciscenje </span>
<span onmouseover="style="background-color:white;"" onmouseout="style="background-color:LightGray;"" style="color:black;" class="selector">Drugo</span>
<span onmouseover="style="background-color:white;"" onmouseout="style="background-color:LightGray;"" style="color:black;" class="selector">Akcija</span>
</b></div>
Текст внутри спанов на хорватском. Это также мой первый веб-сайт, который я создаю без помощи, так что не смейтесь надо мной, пожалуйста.
Сильный>.link является контейнером для всех .selectors, поэтому задайте ему известную высоту и сделайте его гибким контейнером, установив для него display: flex
Затем сделайте отображение спанов либо block, либо inline-block, потому что по умолчанию они inline – с этим вы можете задать их ширину, высоту и всё.
Вы можете затем установить высоту всех спанов на (100%) от высоты родителя
Вот так
<style>
.selector {
cursor: pointer;
padding-right: 40px;
padding-left: 20px;
display: inline-block;
height: 100%;
box-sizing: border-box;
}
.link {
background-color: LightGray;
color: black;
padding: 5px;
font-size: 25px;
overflow: hidden;
height: 50px;
display: flex;
align-items: center;
}
.selector:hover {
background-color: white;
}
</style>
<div class="link">
<b>
<span class="selector">Prehrana</span>
<span class="selector">Pica</span>
<span class="selector">Ciscenje</span>
<span class="selector">Drugo</span>
<span class="selector">Akcija</span>
</b>
</div>
Я решил эту проблему, добавив
padding-top: 10px
padding-bottom: 10px
margin: -10;
в класс селектора
Установите для link фиксированный размер.
Удалите указанный отступ в link.
Установите для selector:hover высоту 100%.
Я также переместил ваши стили из html в css файл.
*
{
margin:0;
padding:0;
}
.selector {
cursor: pointer;
padding-right: 40px;
padding-left: 20px;
display:inline-block;
/* РЕДАКТИРОВКА Перемещено сюда из html */
color: black;
}
/* РЕДАКТИРОВКА Управление наведением (заменяет ваш mouseover и mouseout) */
.selector:hover {
background-color: white;
height: 100%;
}
.link {
background-color:LightGray;
color:black;
/* РЕДАКТИРОВКА Удалите отступы здесь, чтобы мы могли контролировать пробел с помощью margin в .selector */
/* padding: 5px; */
font-size: 25px;
overflow:hidden;
/* РЕДАКТИРОВКА Необходимо иметь фиксированный размер */
height: 3rem;
}
<div class="link"><b>
<!-- РЕДАКТИРОВКА Перемещены ваши стили в .css файл -->
<span class="selector">Prehrana</span>
<span class="selector">Pica</span>
<span class="selector">Ciscenje </span>
<span class="selector">Drugo</span>
<span class="selector">Akcija</span>
</b></div>
</div><div class="s-prose js-post-body" itemprop="text">
Попробуйте это
*
{
margin:0;
padding:0;
}
.selector {
padding:20px;
cursor: pointer;
display: inline-block;
height: 100%;
box-sizing: border-box;
}
.link {
background-color: LightGray;
color: black;
font-size: 25px;
overflow: hidden;
height: 50px;
display: flex;
align-items: center;
}
.selector:hover {
background-color: white;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="https://stackoverflow.com/questions/79090486/style.css">
</head>
<body>
<div class="link">
<b>
<span class="selector">Prehrana</span>
<span class="selector">Pica</span>
<span class="selector">Ciscenje</span>
<span class="selector">Drugo</span>
<span class="selector">Akcija</span>
</b>
</div>
</body>
</html>
.
Ответ или решение
Чтобы сделать <span>
элементами, которые занимают всю высоту родительского блока <div class="link">
, существует несколько способов. Основная задача состоит в том, чтобы правильно установить свойства стилей для каждого из элементов и их контейнера. Вот детальное руководство, которое поможет вам реализовать это.
Шаг 1: Установка структуры HTML
Первым делом ваш HTML-код выглядит таким образом:
<div class="link">
<b>
<span class="selector">Prehrana</span>
<span class="selector">Pica</span>
<span class="selector">Ciscenje</span>
<span class="selector">Drugo</span>
<span class="selector">Akcija</span>
</b>
</div>
Шаг 2: Описание стилей CSS
Теперь перейдем к стилям. Мы будем использовать Flexbox для управления расположением наших <span>
элементов внутри родительского контейнера.
Полное описание стилей CSS:
* {
margin: 0;
padding: 0;
}
.link {
background-color: LightGray;
color: black;
font-size: 25px;
height: 50px; /* Задаем фиксированную высоту */
display: flex; /* Превращаем контейнер в флекс-контейнер */
align-items: center; /* Центрируем элементы по вертикали */
}
.selector {
cursor: pointer;
padding: 0 20px; /* Задаем внутренние отступы слева и справа */
height: 100%; /* Задаем высоту в 100% от высоты родителя */
display: flex; /* Превращаем элемент в флекс-контейнер */
align-items: center; /* Центрируем текст по вертикали внутри селектора */
}
.selector:hover {
background-color: white; /* Задаем цвет фона при наведении */
}
Объяснение стилей:
-
Сброс стилей: Используем универсальный селектор
*
для сброса отступов и границ, чтобы избежать непредвиденных эффектов. -
Контейнер
.link
:- Fixed Height: Задаем фиксированную высоту, чтобы все элементы могли быть визуально согласованы.
- Flexbox: Устанавливаем свойство
display: flex;
, чтобы управлять расположением дочерних элементов. - Vertical Alignment: Используем
align-items: center;
для вертикального центрирования элементов внутри контейнера.
-
Элементы
.selector
:- 100% Height: Устанавливаем
height: 100%;
, чтобы каждый переключатель занимал всю высоту родительского блока. - Flexbox для Центрирования: Превращаем каждый спан в флекс-контейнер, чтобы содержимое (текст) было по центру.
- 100% Height: Устанавливаем
Применение стилей
Убедитесь, что ваши стили находятся во внешнем или внутреннем CSS файле, который подключен к вашему HTML документу. Это поможет избежать путаницы и улучшит читабельность кода.
Заключение
Следуя указанным выше шагам, вы сможете добиться того, чтобы ваши <span>
элементы занимали всю высоту родительского контейнера при наведении курсора. Не стесняйтесь варьировать высоту .link
, а также внутренние и внешние отступы для достижения желаемого дизайна.
Этот подход действительно производительный и гарантирует, что ваш интерфейс будет четким и удобным для пользователя. Если у вас возникнут дополнительные вопросы или понадобится помощь, не стесняйтесь обращаться за поддержкой!