浏览器默认改变字体大小解决方案

时间:2024-03-12 10:49:13

前言

  遇到个小坑,踩了一个多小时,真鸡儿难受。

  是这样的,在移动端字体大小设置了16px,结果到 iphone5 上显示的有大有小,很奇怪。开始的时候还以为是P标签的原因,查了半天文档...最后才发现是浏览器的默认行为。

正文

  在CSS中有  text-size-adjust  这样一个属性,这个属性允许我们控制将文本溢出算法应用到一些手机设备上。这个属性还没有写进标准,使用时必须加上前缀。如下:

        -webkit-text-size-adjust: ;  
        text-size-adjust: ;  
        -moz-text-size-adjust: ;  

  因为缩放适配小屏幕而导致文字会变得很小,许多手机浏览器会使用文本溢出算法让文本变大而更易读。当一个包含文本的元素宽度用了100%,他的文本大小会增加直到达到一个易读的大小,但是不会修改布局。 text-size-adjust   这个属性允许开发者去除或者修改这个浏览器默认行为,因为当网页设计已经处理小屏幕的宽度问题时不需要他。

  语法如下:

/* 文本不会放大 */
text-size-adjust: none;

/* 文本可能会被放大 */
text-size-adjust: auto;

/* 文本会被放大80% */
text-size-adjust: 80%;

/* 全局的值 */
text-size-adjust: inherit;
text-size-adjust: initial;
text-size-adjust: unset;

 text-size-adjust   属性的值为 auto , none , 百分比。

  - none

   禁用浏览器的文本溢出算法。在老的基于webkit内核的桌面端浏览器,这将阻止用户将网页放大或缩小。

  -    auto

   启用 浏览器的文本溢出算法。该值用于取消先前使用CSS设置的none。

  - <percentage>

   启用 浏览器的文本溢出算法,具体用一个百分数来确定文本放大范围。 

 

我的解决办法:

   body   {  
        text-size-adjust: 100% !important;  
        -webkit-text-size-adjust: 100% !important;  
        -moz-text-size-adjust: 100% !important;  
    } 
  //必须加上对应的前缀

需要注意的是这个属性并未写进标准,使用时 必须添加上对应的前缀,然后  这个属性只有在一些智能手机和平板电脑上使用,当然,这种情况多出在小屏幕的手机上,桌面浏览器和一些平板电脑浏览器并没有一些溢出算法。 

更详细的内容请参考 MDN 文档。