#html #css
#HTML #css
Вопрос:
Запустите фрагмент ниже … две цифры оранжевого цвета не центрированы в своих полях. Они смещаются, когда я добавляю :before
содержимое. Как я могу элегантно вернуть цифру в центр (желательно без использования магических чисел).
.container {
background: #ededed;
height: 4rem;
display: flex;
align-items: center;
justify-content: center;
}
.number {
display: flex;
flex-direction: row;
}
.digit:nth-last-of-type(3n):before {
content: ",";
right: 0.75em;
position: relative;
color: black;
font-weight: bold;
}
.digit:nth-last-of-type(3n) {
background: orange;
}
.digit {
width: 1em;
text-align: center;
padding: 0.25em;
margin: 0.5em;
border-radius: 0.1em;
background: white;
color: black;
}
<div class="container">
<div class="number">
<span class="digit">1</span>
<span class="digit">9</span>
<span class="digit">0</span>
<span class="digit">1</span>
<span class="digit">0</span>
<span class="digit">0</span>
<span class="digit">0</span>
</div>
</div>
Комментарии:
1. Поскольку никто не объяснил, почему вам нужно позиционировать absolute: псевдоэлементы добавляются к началу или концу элемента, чтобы ваш текст с центром действительно работал правильно, если вы не хотите, чтобы псевдоэлемент занимал место, тогда вам нужно позиционировать его абсолютно
2. @Pete Да, я должен был просто прочитать значения позиций: developer.mozilla.org/en-US/docs/Web/CSS/position относительный: «пространство, отведенное для элемента в макете страницы, такое же, как если бы позиция была статической» абсолютный: «для элемента в макете страницы пространство не создается»
Ответ №1:
Для достижения этой цели вы можете сделать :before
абсолютную и цифру относительной.
.container {
background: #ededed;
height: 4rem;
display: flex;
align-items: center;
justify-content: center;
}
.number {
display: flex;
flex-direction: row;
}
.digit:nth-last-of-type(3n):before {
content: ",";
left: -10px;
position: absolute;
color: black;
font-weight: bold;
}
.digit:nth-last-of-type(3n) {
background: orange;
}
.digit {
width: 1em;
text-align: center;
padding: 0.25em;
margin: 0.5em;
border-radius: 0.1em;
background: white;
color: black;
position:relative;
}
<div class="container">
<div class="number">
<span class="digit">1</span>
<span class="digit">9</span>
<span class="digit">0</span>
<span class="digit">1</span>
<span class="digit">0</span>
<span class="digit">0</span>
<span class="digit">0</span>
</div>
</div>