как сделать так, чтобы span занимал всю высоту div

Вопрос или проблема

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

*
{
    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;  /* Задаем цвет фона при наведении */
}

Объяснение стилей:

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

  2. Контейнер .link:

    • Fixed Height: Задаем фиксированную высоту, чтобы все элементы могли быть визуально согласованы.
    • Flexbox: Устанавливаем свойство display: flex;, чтобы управлять расположением дочерних элементов.
    • Vertical Alignment: Используем align-items: center; для вертикального центрирования элементов внутри контейнера.
  3. Элементы .selector:

    • 100% Height: Устанавливаем height: 100%;, чтобы каждый переключатель занимал всю высоту родительского блока.
    • Flexbox для Центрирования: Превращаем каждый спан в флекс-контейнер, чтобы содержимое (текст) было по центру.

Применение стилей

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

Заключение

Следуя указанным выше шагам, вы сможете добиться того, чтобы ваши <span> элементы занимали всю высоту родительского контейнера при наведении курсора. Не стесняйтесь варьировать высоту .link, а также внутренние и внешние отступы для достижения желаемого дизайна.

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

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

Капча загружается...