Попытка получить 1 элемент для расширения при наведении курсора в контейнере flexbox. Вместо этого все элементы в контейнере расширяются

Мой желаемый эффект - иметь элемент (ссылку) в контейнере flexbox, который немного увеличивался или расширялся при наведении, но вместо этого весь ряд элементов увеличивался, когда я наводил курсор на один элемент. Я пытался сделать это, увеличив отступ, как вы увидите ниже.

В моем HTML-шаблоне используется синтаксис Angular 2+, но его нетрудно понять. Просто динамическое получение списка ссылок из цикла for.

Мы будем благодарны за любую помощь, предложения или полезные ссылки!

Мой CSS выглядит следующим образом ~

.page-flex-link {
display: flex;
flex-flow: row wrap;
bottom: 1rem;
left: 10%;
position: absolute;
}

.page-flex-link > div {
background-color: #28a745;
border-radius: 50%;
padding: .5rem;
margin-left: .2rem;
margin-right: .2rem;
cursor: pointer;
box-shadow: .2rem .2rem .2rem grey;
}

.page-flex-link > div:hover {
background-color: #0f82db;
padding: .6rem;
box-shadow: .3rem .3rem .3rem grey;
}

.pli-text {
color: white;
text-decoration: none;
}

Мой HTML-шаблон angular 7 выглядит следующим образом ~

<div class = "page-flex-link">
  <div *ngFor = "let page of lesson.pages"
    (click) = "goToPage(page.pageNum)">
    <a class = "pli-text" routerLink = "/lessons/{{lesson.id}}/pages/{{page.pageNum}}">{{page.pageNum}}</a>
  </div>

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
0
1 243
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Контейнер .page-flex-link вычисляет свои размеры на основе своих дочерних элементов. Когда вы увеличиваете padding для дочернего элемента, это также увеличивает общие размеры контейнера.

Простым решением было бы использовать CSS transform: scale() вместо увеличения заполнения. scale() увеличит визуализированный размер элемента, но не увеличит его расчетные размеры:

.page-flex-link {
  display: flex;
  flex-flow: row wrap;
  bottom: 1rem;
  left: 10%;
  position: absolute;
  align-items: center;
}

.page-flex-link > div {
  background-color: #28a745;
  border-radius: 50%;
  padding: 0.5rem;
  margin-left: 0.2rem;
  margin-right: 0.2rem;
  cursor: pointer;
  box-shadow: 0.2rem 0.2rem 0.2rem grey;
}

.page-flex-link > div:hover {
  background-color: #0f82db;
  /*padding: 0.6rem;*/
  transform: scale(1.2);
  box-shadow: 0.3rem 0.3rem 0.3rem grey;
}

.pli-text {
  color: white;
  text-decoration: none;
}
<div class = "page-flex-link">
  <div>
    <a class = "pli-text">1</a>
  </div>
  <div>
    <a class = "pli-text">2</a>
  </div>
  <div>
    <a class = "pli-text">3</a>
  </div>
  <div>
    <a class = "pli-text">4</a>
  </div>
  <div>
    <a class = "pli-text">5</a>
  </div>
  <div>
    <a class = "pli-text">6</a>
  </div>
  <div>
    <a class = "pli-text">7</a>
  </div>
  <div>
    <a class = "pli-text">8</a>
  </div>
  
</div>

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