搜索

首页  >  问答  >  正文

前端 - 使用rem设置height和line-height相同时文字没有居中?

demo在这里:
http://jsbin.com/fihikoheno/edit?html,css,js,output
http://output.jsbin.com/fihikoheno

在安卓手机上会出现这种情况,pc没有任何问题?(ios没有测试)

不知问题出在哪?

<!DOCTYPE html>
<html style="font-size:14px;">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
<p>哈哈</p>
</body>
</html>

*{padding:0;margin:0;}
p{
  width:30px;
  height:1.2rem;
  line-height:1.2rem;
  background:red;
  font-size:10px;
  color:#fff;
  text-align:center;
}
PHPzPHPz2778 天前972

全部回复(7)我来回复

  • 大家讲道理

    大家讲道理2017-04-17 11:47:14

    12px以下显示问题 可以采用先整体放大,再用css3缩小的方式解决

    回复
    0
  • PHP中文网

    PHP中文网2017-04-17 11:47:14

    这个没办法的,每种浏览器对line-height渲染程度都不一样,不仅仅是line-height,其实平时写垂直居中这种布局的时候,不管用postion还是box布局,都不能且不可能在所有机器上绝对居中

    回复
    0
  • 黄舟

    黄舟2017-04-17 11:47:14

    赞同楼上的答案 你把字体设置成12px以上就能正常居中了我之前也是这样处理

    回复
    0
  • 迷茫

    迷茫2017-04-17 11:47:14

    我们的高度与行高写的一样的,应该是14*1.2 = 16.8; 高度和行高都应该是16.8

    但是 我们在chrome下面看见两者的结果不一样,说明两者的渲染不同。而且浏览器对于小数点的处理方式也不一样,所以我猜想 应该是出现误差。 如果你想实现垂直居中的话,把高度和行高都不要写,直接上下padding值一样,这样就算出现小数,也省略成一样的。

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-17 11:47:14

    pc上模拟器模拟出来的是垂直居中的没错,但是在实际手机中,苹果手机渲染出来是垂直居中的,安卓手机渲染出来就是会偏上一些,兼容的方法就是不要设置height,line-height设置为1,用padding值上下相等来保持垂直居中。

    回复
    0
  • 高洛峰

    高洛峰2017-04-17 11:47:14

    我先问下你是在微信浏览器中打开的吧?微信有这个bug

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-17 11:47:14

    当字号太小时就会这样,我也遇到过,不完全居中

    回复
    0
  • 取消回复