Ответ 1
Эта скрипта показывает три элемента div
, иллюстрирующие "проблему" и оба следующих "решения".
Одно возможное "решение"
Я не уверен в ваших потребностях, но до сих пор единственным реальным решением, которое я нашел, является установка display: table
в текстовый контейнер. Но это позволит контейнеру растягиваться до необходимой ширины, чтобы содержать самое длинное слово, что может быть нежелательно для вас. Если все в порядке, это лучшее решение.
Другое возможное "поддельное" решение
Если вы должны хотя бы сохранить видимый размер элемента, то вы можете подделать внешний вид некоторым использованием псевдоэлементов:
.fakeIt {
text-align: center; /* what you wanted all along */
display: table; /* key to get centered */
position: relative; /* allow reference for absolute element */
z-index: 2; /* set up for a background to be pushed below */
width: 40px; /* what you want, but table resizes larger if needed*/
border: none; /* transferring border to the "fake" */
background-color: transparent; /* transferring background to the "fake" */
}
.fakeIt:after {
content: ''; /* before or after need it, even if empty */
width: 40px; /* the original width you wanted for the container */
position: absolute; /* need this to position it */
z-index: -1; /* push it behind the foreground */
left: 50%; /* push it to center */
top:0; /* give it height */
bottom: 0; /* give it height */
margin-left: -20px; /* half the width to finish centering */
border: 1px solid red; /* the border you wanted on the container */
background-color: yellow; /* the background you wanted on the container */
}
Однако, в зависимости от вашего конкретного приложения, "фальшивое" решение может не работать. Кроме того, исходный элемент по-прежнему будет занимать более широкое "пространство" в документе, он просто не будет выглядеть так, как есть. Это может вызвать проблемы. Отрицательный margin
в контейнере может решить это, но вы не знаете, какое значение нужно установить, так как оно будет отличаться от ширины текста.
Вы отмечаете в комментарии, что вы не знакомы с псевдоэлементами в css, поэтому вы можете иметь быстрый ввод.