我有这样的代码:
span {
border-radius: 50%;
background-color: #d8d9dd;
border: 6px solid #262c40;
width: 25px;
height: 25px;
margin: 30px 0 0 40px;
display: block;
}
span:before {
content: attr(data-value);
position: relative;
white-space: pre;
display: inline;
top: -27px;
left: -29px;
width: 200px;
text-align: center;
}
<span data-value="November 2016"></span>
<span data-value="May 2016"></span>
我怎样才能将pseudo元素中的文本居中到span的中间?可以吗?
7条答案
按热度按时间tjrkku2a1#
最好是使用流行的居中技术相对于
span
* 绝对***定位 *before
伪元素:请注意,-25px是为了将文本偏移到圆圈上方(圆圈高度为25 px)-请参见下面的演示:
x一个一个一个一个x一个一个二个x
Source
5ssjco0h2#
从MDN开始:
[the
:before
伪元素]默认为内联给行内元素指定
width
没有任何作用,因此您需要将其样式设置为display: block
(或者inline-block
,如果这样更合适的话),而且您还需要将left
值调整为大约-88px
,以使文本在圆上居中。lnlaulya3#
我建议不要使用负的翻译,如果你不小心的话,它可能会在 windows 之外结束。
此外,你不应该插入带有伪元素的内容。伪元素应该只用于样式的目的。比如:
由于
text-align: center
,范围内的文本居中。由于
margin-left: auto
和margin-right: auto
,伪单元圆居中。3hvapo4f4#
我们应该使用逻辑代码,而不是任何命中和跟踪和玩弄数字!
我在伪元素中使用了flex,使其首先在span元素上居中。
然后我使用transform来逻辑地定位伪元素。
我会要求使用逻辑代码,而不是设计突破命中和跟踪值。写响应代码。快乐编码!
mutmk8jj5#
我被打败了,但这是我的解决方案:
所做的更改是在
:before
样式上使用inline-block
显示,并调整文本的left
和width
。gmol16396#
将
display:inline-block;
相加,然后将margin-left:-87px
相加。其中87px源自100px(整个宽度200px的50%)-13px(跨度宽度25px的50%)
c9qzyr3d7#
在我的例子中,我需要在pseudo的content元素中水平居中一个html符号,所以我使用了line-height属性: