文字不在div中居中

时间:2018-06-27 09:38:06

标签: css html5

* {margin: 0;}
			
div {
  background-color:#bad455;
  width: 200px;
  height: 200px;
  top:50%;
  left:50%;
  position:fixed;
  transform: translate(-50%, -50%);
  text-align:center;
}

div:hover {
  box-shadow: 3px 5px 50px 5px;
  display:inline-block;
  border-radius:10%;
  transform:skewX(50deg);
}
div p {
  top:50%;
  position:relative;
}
<div>
  <p>oooo</p>
</div>

当我做top:50%并设置position:relative时,我希望这段文字会出现在中间。但是现在我可以看到它并不完全在其中。如果有人能解释我将不胜感激!

2 个答案:

答案 0 :(得分:2)

使用transform: translateY(-50%);将其正确居中

* {
  margin: 0;
}

div {
  background-color: #bad455;
  width: 200px;
  height: 200px;
  top: 50%;
  left: 50%;
  position: fixed;
  transform: translate(-50%, -50%);
  text-align: center;
}

div:hover {
  box-shadow: 3px 5px 50px 5px;
  display: inline-block;
  border-radius: 10%;
  transform: skewX(50deg);
}

div p {
  top: 50%;
  transform: translateY(-50%);
  position: relative;
}
<div>
  <p>oooo</p>
</div>

答案 1 :(得分:0)

另一种方法是使用flexbox(CSS3)。因此添加

display: flex;
align-items: center;
justify-content: center;

div的文本居中。

* {margin: 0;}
			
div {
  background-color:#bad455;
  width: 200px;
  height: 200px;
  top:50%;
  left:50%;
  position:fixed;
  transform: translate(-50%, -50%);
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
}

div:hover {
  box-shadow: 3px 5px 50px 5px;
  display:inline-block;
  border-radius:10%;
  transform:skewX(50deg);
}
<div>
  <p>oooo</p>
</div>

See this discussion for comparison