我正在尝试创建一个在悬停时旋转的圆形按钮。正如您从动画中看到的那样,文本似乎没有完美居中,导致+
的奇怪旋转。
这是我的代码:
button {
margin: 0;
padding: 0;
font-size: 15px;
border: none;
border-radius: 50%;
background: black;
color: white;
width: 50px;
height: 50px;
transition: transform 2s;
}
button:hover {
transform: rotate(360deg);
}

<button>+</button>
&#13;
答案 0 :(得分:2)
准确地将文本居中对齐似乎有点困难。但是更容易将中心对齐形状。因此,作为替代选项,我创建了&#34; +&#34;与伪元素之后和之前它旋转得很好。你可以查看下面的代码。
button {
margin: 0;
padding: 0;
font-size: 15px;
border: none;
border-radius: 50%;
background: black;
color: white;
width: 50px;
height: 50px;
transition: transform 2s;
position: relative;
}
button:after,
button:before{
background: red;
position: absolute;
content: "";
display: block;
z-index: 1;
}
button:after{
top: 20px;
bottom: 20px;
left: 24px;
right: 24px;
}
button:before{
top: 24px;
bottom: 24px;
left: 20px;
right: 20px;
}
button:hover {
transform: rotate(360deg);
}
&#13;
<button></button>
&#13;
答案 1 :(得分:1)
检查
button {
margin: 0;
padding: 0;
font-size: 15px;
border: none;
border-radius: 50%;
background: black;
color: white;
width: 50px;
height: 50px;
transition: transform 2s;
font-family: arial;
line-height: 50px;
}
button:hover {
transform: rotate(360deg);
}
button:before{
content:"";
}
<button>+</button>
答案 2 :(得分:1)
您的文字位于基线上。你可以通过等于平均0.2em的填充推高它,或者使用内联块伪和垂直对齐。
以下示例
button {
margin: 0;
padding: 0;
font-size: 15px;
border: none;
border-radius: 50%;
background: black;
color: white;
width: 50px;
height: 50px;
transition: transform 2s;
}
button:hover {
transform: rotate(360deg);
}
button.ib:before {
content:'';
display:inline-block;
height:50px;
vertical-align:middle;
width:0;
margin:0 -0.05em;
}
.pad {
box-sizing:border-box;
padding-bottom:0.175em;
}
p {
text-align:center;
background:yellow;
}
p:after {
content:'';
display:inline-block;
width:120vw;
margin-left:-50vw;
border-bottom:red solid 1px;
}
&#13;
<button class="ib">+</button>
<button class="pad">+</button>
<p> where is baseline ? </p>
&#13;
答案 3 :(得分:0)
添加了text-align: center
,line-height: 50px
,box-sizing: border-box
并增加了加号的大小,使其易于查看。
button {
box-sizing: border-box;
margin: 0;
padding: 0;
font-size: 34px;
border: none;
border-radius: 50%;
background: black;
color: white;
width: 50px;
height: 50px;
transition: transform 2s;
text-align: center;
line-height: 50px;
}
button:hover {
transform: rotate(360deg);
}
<button>+</button>
答案 4 :(得分:0)
使用display: flex
并将按钮文本水平和垂直对齐
display:flex;
justify-content:center;
align-items:center;
button {
font-size: 15px;
border: none;
border-radius: 50%;
background: black;
color: white;
width: 50px;
height: 50px;
transition: transform 2s;
display:flex;
justify-content:center;
align-items:center;
box-sizing:border-box;
}
button:hover {
transform: rotate(360deg);
}
<button>+</button>