Основная причина проблемы — использование в CSS свойства `float: left` для выравнивания элементов в одну строку.
Это метод не предназначался для использования в таком виде и применялся из-за отсутствия других способов.
Из-за этого свойства элемент `.container` схлопывается по высоте и при повторении абсолютно позиционированный "кружок" накладывается на такой же кружок предыдущего контейнера.
Решение:
1. Отказаться от использования CSS-свойства
float: left
для элементов
.column
2. Вместо него использовать современный способ выравнивания элементов в строку — свойство
display: flex
для родительского элемента
.container
.container {
display: flex;
}
3. Для него же следует задать относительное позиционирование, чтобы "кружок" ориентировался именно на этот элемент
.container {
position: relative;
display: flex;
}
Результат в Codepen:
Ссылка