Цвет фона растягивается на всю ширину ul

У меня есть простой список, который я использую для горизонтального меню:

<ul>
    <h1>Menu</h1>
    <li>
      <a href = "/" class = "selected">Home</a>
    </li>
    <li>
      <a href = "/Home">Forum</a>
    </li>
</ul>

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

Надеюсь, это имеет смысл.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
3
0
10 027
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

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

В качестве альтернативы вы можете добавить это в CSS выбранного класса:

display: block;

В результате элемент a будет отображаться как блочный.

Хотелось бы, чтобы это работало?

.selected {
    display: block;
    width: 100%;
    background: #BEBEBE;
}

Поместите выбранный класс на <li>, а не на <a>

Элементы <a> по умолчанию встроены. Это означает, что они не устанавливают свой собственный блок, они просто часть текста. Вы хотите, чтобы они установили свой собственный блок, поэтому вам следует использовать a { display: block; } с соответствующим контекстом. Это также позволяет добавлять отступы к элементам <a>, а не к элементам <li>, увеличивая их интерактивную область и, таким образом, упрощая использование.

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

Другие вопросы по теме