Css firefox在伪元素周围添加了奇怪的空格

Css firefox在伪元素周围添加了奇怪的空格,css,firefox,pseudo-element,Css,Firefox,Pseudo Element,看看这些照片 JSFiddle底部链接 firefox: 铬: 它们都是来自chrome和firefox的相同元素,正如你所看到的,firefox的元素在顶部和左侧有一些空间,但chrome的元素没有 现在,没有空白或任何原因导致这种情况,它在除firefox之外的任何其他浏览器中都可以正常工作。 主要元素的重要样式是 float: left; height: 30px; line-height: 30px; margin: 12.5px 0; 对于伪元素::before floa

看看这些照片
JSFiddle底部链接

firefox:

铬:

它们都是来自chrome和firefox的相同元素,正如你所看到的,firefox的元素在顶部和左侧有一些空间,但chrome的元素没有 现在,没有空白或任何原因导致这种情况,它在除firefox之外的任何其他浏览器中都可以正常工作。 主要元素的重要样式是

float: left; 
height: 30px; 
line-height: 30px; 
margin: 12.5px 0; 
对于伪元素::before

float: left; 
display: block;
content: '\F011'; 
height: 30px;
line-height: 30px;
margin: 0 10px 0 0; 
padding: 0 10px;
以及元素的HTML

<button class="like" onclick="item_like()">500</button>
500
这是JSFIDLE的链接 在chrome和firefox中运行它,并查看差异


我做错了什么?

也许可以尝试使用CSS定位类似的内容

.like{
float: left; 
height: 30px; 
margin: 12.5px 0; 
background-color: #FAFAFA; 
border-radius: 4px; 
position:relative;
padding: 0 10px 0 40px; 
margin: 12.5px 10px; 
background-color: #000; 
font: 16px/30px arial; 
color: #FFF; 
border:none;}

.like::before{
position:absolute; top:0; left:0; 
width:30px; 
content: 'like'; 
margin: 0 10px 0 0; 
padding: 0 5px;
background-color: #FF7373; 
color: #FFF; 
border-right: 1px solid #CCC; display:block; border:0;
}

我建议您指定top:0;左:0;到您的::before伪元素。有时,厚脸皮的浏览器会向上移动一些像素,然后将其保留到实际位置。CSS:

.like:before {
    float: none;
    width: 30px;
    content: "like";
    margin: 0px 10px 0px 0px;
    padding: 0px 5px;
    background-color: #FF7373;
    color: #FFF;
    border-right: 1px solid #CCC;
    position: absolute;
    top: 0;
    left: 0;
    border-radius: 4px 0 0 4px;
}
.like {
    float: none;
    height: 30px;
    border-radius: 4px;
    box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.5);
    padding: 0px 10px 0px 0px;
    margin: 12.5px 10px;
    background-color: #000;
    font: 16px/30px arial;
    color: #FFF;
    border: medium none;
    position: relative;
    width: 88px;
    text-align: right;
}

Fiddle:

我为您创建了此解决方案,它将按钮放置在相对位置,并将
:置于绝对位置之前。然后您可以使用
顶部
底部
左侧
位置,这将是相对于父项的位置

请注意,我在按钮中添加了一个
溢出:隐藏
,因此圆角边框仍然可见

这是经过修改的CSS:

.like {
    float: left;
    height: 30px;
    margin: 12.5px 0;
    background-color: #FAFAFA;
    border-radius: 4px;
    box-shadow: 0 0 1px rgba(0, 0, 0, 0.5);
    padding: 0 10px 0 40px;
    overflow:hidden;
    margin: 12.5px 10px;
    background-color: #000;
    font: 16px/30px arial;
    color: #FFF;
    border:none;
    position: relative;
}
.like::before {
    float: left;
    width:30px;
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    content:'\F011';
    background-color: #FF7373;
    color: #FFF;
    border-right: 1px solid #CCC;
}

此外,请参见。

这将需要再次添加顶部和底部边框半径,例如
边框左上半径:4px是的,这将工作,但它需要编辑我所有的css,我懒得这样做。但是normalize.css确实适用于meFirefox,它似乎在按钮内的内容周围添加了一点默认空间。您是否尝试过包含normalize.css?这是一个特殊的css文件,试图使浏览器样式一致。如前所述,一种简单的方法是使用normalize.css necolas.github.io/normalize.css/工作正常:)非常感谢