前言:

chrome

谷歌浏览器默认的字体大小为16px;可以通过设置font-size来设置字体大小但是当设置到12px以下的时候字体大小不再改变;对于想设置其他大小的字体就很头疼,本文参考网上的方法,并对该方法以及原理介绍;并对该方法的弊端进行阐述并提出一种合适的解决办法
 
1.适用对象:
 
block 或者inline-block类型;
 
2.方法(该方法先以p标签举例):
 
方法:通过设置transform:scale();
局限性:标签会发生移动(可以参考下面的代码和图片);
解决办法:设置transform-origin;
   <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
*{
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<p>
我是p
</p>
</body>
</html>

可以发现默认的是16px;

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
*{
margin: 0;
padding: 0;
}
p{
-webkit-transform:scale(0.8);
}
</style>
</head>
<body>
<p>
我是p
</p>
</body>
</html>

可以发现当设置0.8的缩放比例的时候;得到的字体大小:16pxX 0.8 = 12.8px

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
*{
margin: 0;
padding: 0;
}
p{
font-size: 10px;
-webkit-transform:scale(0.8);
}
</style>
</head>
<body>
<p>
我是p
</p>
</body>
</html>

当在p中设置font-size:10px的时候比例缩放就以10px进行缩放;
(可以看到设置缩放之后标签发生移动,这个在下面会说到解决办法)
p中所有的元素都按照p的缩放比例进行缩放;
3.原理:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
*{
margin: 0;
padding: 0;
}
p{
width: 300px;
height: 300px;
-webkit-transform:scale(0.8);
border: 1px solid red;
} .a{
width: 300px;
height: 300px;
border: 1px solid red;
margin-top: 10px;
margin-left: 10px;
}
</style>
</head>
<body>
<div class="a">
<p>
我是p
</p>
</div>
</body>
</html>

当对p加父容器和对p本身设置宽高以及边框;设置scale0.8,p标签自动上下居中(自身原来的宽高-缩放后的宽高得到的宽高平均分配到上下左右);

用chrome自带的盒模型发现,p标签内容占据宽度依旧是300px X 300px;

当在p后面(div中)加入span元素发现span出了div的范围,说明等比缩放只是改变的原来标签形式上的大小;其原来所在文档流占据的空间位置并未因缩放而腾出来;

发现改变p的位置之后span仍然被挤出来。

该方法原理及总结:
1.设置scale时时对整个p标签进行缩放(包含p本身及其内容的所有元素),而不单单是对字体的缩放;
2.进行缩放之后会将缩放之前的宽高-缩放之后的宽高的值自动分配到p标签的上下左右;但缩放并不会改变该标签原来在文档流中所占据的位置大小;不会因为缩放而腾出空间;
3.缩放后,缩放对象的位置会发生变化;
4.也是scale不适用于inline类型元素的原因(不能设置宽高;虽然自己的宽高靠内容撑起来;但是在设置css的时候无法获取宽高的准确信息(我是这么理解));所以如果想要设置inline类型的font-size需要先设置display:block或者inline-block。
4.解决办法(解决偏移问题):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
*{
margin: 0;
padding: 0;
}
p{
width: 300px;
height: 300px;
-webkit-transform:scale(0.8);
-webkit-transform-origin: 0 0;
border: 1px solid red;
} .a{
width: 300px;
height: 300px;
border: 1px solid red;
margin-top: 10px;
margin-left: 10px;
}
</style>
</head>
<body>
<div class="a">
<p>
我是p
</p>
</div>
</body>
</html>

在缩放对象上加入:
 -webkit-transform-origin: 0 0;
或者 
 -webkit-transform-origin-x: 0;
 -webkit-transform-origin-y: 0;
 
 

字体属性设置(一):谷歌浏览器12px以下字体的显示;方法和原理的更多相关文章

  1. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  2. 【xshell属性设置】如何修改xshell字体大小

    1.周末在家,想搞一下学习,于是远程公司的电脑(我的移动硬盘在公司,里面有虚拟机及测试环境) 发现xshell界面字体太小,不方便看,于是研究了一下如何来设置xshell 的字体大小 2.点击左上角的 ...

  3. easyUI-datagrid属性设置display:none,表头不显示

    <div class="box1"> <div class="dg1Box" style="margin-top:15px; mar ...

  4. CSS样式----CSS属性:字体属性和文本属性(图文详解)

    本文最初于2015-10-04发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 以下是正文. 本文重要内容 CSS的单位 字体属性 文本属性 定 ...

  5. HTML字体的设置

    CSS字体设置 box-sizing:border #content-box   box-shadow:设置盒子边框的阴影.     字体动作:   font-family:设置字体.比如:‘微软雅黑 ...

  6. wps中新罗马字体如何设置Times New Roman

    word wps中新罗马字体如何设置Times New Roman  ###   WPS字体自带 Times New Roman  ###

  7. 设置文字小于12px

    问题:有时候会需要设置一些小于12px的字或是icon: 方法:使用css3的transform的scale,来放大和缩小,但是相应的容器也会缩小 transform: scale(0.6);

  8. 解决谷歌浏览器设置font-family属性不起作用,(css中设置了font-family:没有用)css字体属性没用

    嗯,这个问题百思不得解.其他的浏览器器都没问题,在谷歌上就不行,网上找了很多,都没效果,后才发现,当然同样的问题可能错不一样的地方,我的解决方案: 感觉主要原因是自己也没查到,乱改一堆,就OK啦: 1 ...

  9. {03--CSS布局设置} 盒模型 二 padding bode margin 标准文档流 块级元素和行内元素 浮动 margin的用法 文本属性和字体属性 超链接导航栏 background 定位 z-index

    03--CSS布局设置 本节目录 一 盒模型 二 padding(内边距) 三 boder(边框) 四 简单认识一下margin(外边距) 五 标准文档流 六 块级元素和行内元素 七 浮动 八 mar ...

随机推荐

  1. [转]深入理解JavaScript的变量作用域

    1.JavaScript的作用域链 2.函数体内部,局部变量的优先级比同名的全局变量高. 3.JavaScript没有块级作用域. 4.函数中声明的变量在整个函数中都有定义. 5.未使用var关键字定 ...

  2. Utility3:Understand Dashboard Report

    To see data in the SQL Server Utility dashboard, select the top node in the Utility Explorer tree - ...

  3. LINQ系列:LINQ to DataSet的DataView操作

    1. 创建DataView EnumerableRowCollection<DataRow> expr = from p in products.AsEnumerable() orderb ...

  4. 前端学PHP之运算符

    × 目录 [1]总括 [2]算术运算符 [3]赋值运算符[4]位运算符[5]比较运算符[6]错误控制[7]逻辑运算符[8]字符串连接[9]数组运算符 前面的话 运算符是可以通过给出的一或多个表达式来产 ...

  5. js学习内容的整理

    1.jquery动态添加Table中的一行 function addTableRow(tableId){var html = '<tr>\ ......\ </tr>" ...

  6. (第九天)DOM事件

    addEventListener 使用addEventListner()方法可以为事件目标注册事件处理程序.addEventListner()接受三个参数.第一个是要注册处理程序的事件类型,这个事件类 ...

  7. Notes:DOM的事件模拟

    首先使用document对象的createEvent方法创建一个事件对象,然后初始化该事件对象,接着使用支持事件DOM节点的dispatchEvent方法触发事件. DOM2级事件和DOM3级事件有些 ...

  8. iOS开发之SQLite-C语言接口规范(一)——Ready And Open Your SQLite

    为什么要搞一搞SQLite的C语言接口规范呢? 因为在做iOS开发中难免会遇到操作数据库的情况,你可以使用第三方的FMDB等,或者使用CoreData.但我们还是有必要去搞清楚如何去使用SQLite的 ...

  9. C# Excel 为图表添加模拟运算表

    Excel中的图表能够将数据可视化,方便我们比较分析数据.但也有一定的局限,例如:不能够直接从图表中读出原来数据的准确值.Excel提供的解决方案是,在图表下方添加一个模拟运算表,即在坐标轴下方添加包 ...

  10. (五)WebGIS中通过行列号来换算出多种瓦片的URL 之在线地图

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 这篇文章里,我主要针对OGC标准中的WMS.WMTS以及Ar ...