Android 浏览器文本垂直居中问题

问题描述

在开发中,我们常使用 line-height 属性来实现文本的垂直居中,但是在安卓浏览器渲染中有一个常见的问题,就是对于小于12px的字体使用 line-height 属性进行垂直居中的时候,渲染出来的效果并不是文字垂直居中,而是会偏上一些。举两个代码示例如下:

1. 大于12px

html

<span>testtesttest</span>

css

span {
    display: inline-block;
    height: 16px;
    background-color: gray;
    line-height: 16px;
    font-size: 12px;
}

<!-- more -->

2. 小于12px html

<span>testtesttest</span>

css

span {
    display: inline-block;
    height: 16px;
    background-color: gray;
    line-height: 16px;
    font-size: 10px;
}

可以看到当 font-size 小于 12px 的时候,利用 line-height 属性进行垂直居中布局明显是偏上的,这里为了避免由于 font-size 是奇数带来的偏差,特意把 font-size 都设置成了偶数

问题原因

起初对这个问题有过两种推测,一是认为是字体的问题,或者是浏览器渲染的问题。但后面发现即使换了字体只要 font-size 还是小于 12px 一样会出现这个问题。

解决办法

看起来问题的根源在于字体大小小于 12px,所以解决问题可以从这个方向入手,要么改变字体大小,要么换个方式让它垂直居中。

1. 改变字体大小 最直接的方法就是改变字体大小让它大于 12px 能够正常居中,如果页面对字体大小要求比较严格的话,可以先将原来包括 font-size 在内的属性放大两倍,再用 scale 缩小一倍,这样测试之后也是可行的:

<span class="content">testtesttesttesttest</span>
.content {
    display: inline-block;
    height: 40px;
    background-color: gray;
    line-height: 40px;
    font-size: 20px;
    transform: scale(0.5);
    transform-origin: 0% 0%;
}

但不知道为什么,用这种方法之后我总是感觉文字没有绝对地居中,好像是有一点细微的偏下,

<div class="container">
    <span class="content">testtesttesttesttest</span>
</div>
.container {
    display: table;
}
.content {
    background-color: gray;
    font-size: 10px;
    display: table-cell;
    vertical-align: middle;
}

利用 table 布局能够比较好地实现文本垂直居中,缺点是要在外面多包一层容器。

原文地址:https://www.cnblogs.com/yalong/p/9015629.html

时间: 2024-10-25 19:14:08

Android 浏览器文本垂直居中问题的相关文章

android 浏览器开发实例

android app需要通过手机显示网页信息还是比较常用的,比如我最近业余开发的 抢商铺游戏,需要对游戏规则做说明,规则会比较多,而且要经常变动,就想到用网页来展示,更新起来方便,不像应用,一旦发布出去,就很难更改. 言归正传,下面介绍下我对系统webview的使用,做的一个简单浏览器,无图无真像,先看看图(博客园不能传图片,等图片功能恢复了再传): 首先是布局文件的编辑activity_browser.xml 采用RelativeLayout布局,不知道为什么采用LinearLayout布局

使用c#开发的第一款APP的Android浏览器(创世纪篇)

闲来无事,利用c#编程语言开发Android浏览器. 首先,安装 VS2010.安装 Android SDK.配置 AVD(android) 模拟器. 调试的时候打开 ADV(android 模拟器) 在里面你自己添加一个机器的型号,设置好分辨率,内存大小,SD卡,启动之后,就可以调试了! 调试生成的代码是不能发布到真实的机器上的,因为 android 实际程序在真实机器中运行的时候会进行验证,这个在 netbeans 或 eclipse 里面叫 key.store 所以发布的时候,要用 net

为什么只设置line-height就可以实现文本垂直居中效果

为什么只设置line-height就可以实现文本垂直居中效果:在实际应用中,如果让单行文本在元素中垂直居中,可以将元素的高度和行高值设置为相同即可.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> &l

如何设置块级元素的单行文本垂直居中

这里有两个条件: ①文本要求是单行的 ②它的外部容器是一个块级元素 满足这两个条件之后,只需要设置文本的line-height等于外部块级元素的高度即可. 参照如下代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>单行文本垂直居中</title> <style> h2{ width: 3

在 Chrome 中调试 Android 浏览器

最近需要使用 Chrome Developer Tools 调试 Android 浏览器,但是官方指南并不是很好使,经过一番折腾,终于调试成功了,在此把经验分享给需要的朋友. Chrome Developer Tools 是前端工程师必不可少的工具,它极大的提高了我们的开发调试效率.在移动开发的时代,我们也必须掌握手机浏览器在 Chrome 中调试的方法.本篇仅介绍 Android. 环境 不同的环境可能存在一些差异,我的环境是: Windows 10 电脑 Chrome 50.0.2661.7

Android浏览器:httpclient发送请求时TCP发送带有多个Segments

Android浏览器在发送HTTP(get/post)请求时,将请求首部切成多个segment.抓包如下: iPhone5没有发现此现象. ...待完善...

Android——分享文本给微博、微信、qq、邮箱、我的电脑等等手机上所安装的能够通信的软件

我们有时候需要将文本.图片等分享到微博.微信.qq好友等,网上有好多代码,实现复杂,对于初学者来说,读起来很困难,其实,分享这一功能是很容易实现的.实现代码如下(经过了测试): 1.分享文本: Intent intent = new Intent(Intent.ACTION_SEND); //启动分享发送的属性     intent.setType("text/plain");//分享发送的数据类型为文本   intent.putExtra(Intent.EXTRA_SUBJECT,

(转)完美解决 Android WebView 文本框获取焦点后自动放大有关问题

完美解决 Android WebView 文本框获取焦点后自动放大问题 前几天在写一个项目时,要求在项目中嵌入一个WebView 本来很快就完成了,测试也没有问题.但发给新加坡时,他们测试都会出现文本框聚焦时,网页面会放大(他们用三星手机测试的) 网上查了好久参考他的方法加上去测试 http://www.cppblog.com/guojingjia2006/archive/2012/12/18/196429.html 下面我将原文copy过来 **************************

PHP判断当前访问的是 微信、iphone、android 浏览器

var ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i)=="micromessenger" && ua.indexOf('iphone') > 0) { alert("iPhone 微信浏览器"); }else if (ua.match(/MicroMessenger/i)=="micromessenger" &&