圆形按钮中的文本完美居中?

时间:2017-10-13 08:32:32

标签: html css

我正在尝试创建一个在悬停时旋转的圆形按钮。正如您从动画中看到的那样,文本似乎没有完美居中,导致+的奇怪旋转。

这是我的代码:



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;
&#13;
&#13;

5 个答案:

答案 0 :(得分:2)

准确地将文本居中对齐似乎有点困难。但是更容易将中心对齐形状。因此,作为替代选项,我创建了&#34; +&#34;与伪元素之后和之前它旋转得很好。你可以查看下面的代码。

&#13;
&#13;
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;
&#13;
&#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的填充推高它,或者使用内联块伪和垂直对齐。

以下示例

&#13;
&#13;
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;
&#13;
&#13;

答案 3 :(得分:0)

添加了text-align: centerline-height: 50pxbox-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>