font-size (小于12px)设置字体不生效解决方案

发布时间:2023-10-21 23:37 最后更新:2023-10-21 23:46 浏览量:共 34 次浏览

字体不变小的原因?
使用 font-size 设置小于 12px 的字体时,发现并不生效(字体不会再缩小了)。
原因是 Chrome 以及 Chromium 内核的浏览器在中文语言下最小字体只能是 12px,大部分浏览器都是如此。所以,小于12px字体不会在变小,而是保持12px的大小。

font-size 设置字体不生效解决方案(小于12px)_font-size无效-CSDN博客

在实际开发中,我们往往会遇到需要设置字体小于12px的情况,但是现实情况是有些浏览器默认最小字体就是12px,有些浏览器默认最小字体是10px,因此如果开发中需要设置字体小于12px,我们该这样做:

1、设置字体为12px;

2、缩放元素,比如设置10px就将元素缩放至0.8

{
font-size:12px;
transform:scale(0.8)
}

本文参考以下文章的解决方案:设置浏览器显示小于12px以下字体的三种方法 – 模型库 (sucaidaohang.com)

使用场景:

以往设计图给的字号一般最小就是12px, 开发人员一般是使用谷歌浏览器来进行调试运行。
谷歌浏览器上显示字体最小为12px,css设置font-size:10px,运行代码显示结果仍然是12px大小,但是挡不住甲方有时就是强调使用的字号,必须是特别小的字号,就比如说某些网站设计的噱头–“买房送老婆”,但其实你不知道的是,在“老婆”两个字之后,还有一个小到你需要用放大镜去看的“饼”字,就问你惊不惊喜,意不意外?

解决方案二:

使用缩放transform:scale(),使用较为广泛。

====================================

【我是使用本解决方案:

p.site-description{
font-size: 12px;
margin: 0;
color: #020202;
transform: scale(0.7);
transform-origin: 0 0;
white-space: nowrap;

默认是12*0.7=8.4px,如果嫌小,可以填写12以上的数字。强行拉成一行,实用】

====================================

优点:单行、多行文本都可使用
缺点:只是视觉效果变小,并不会改变盒子的实际占位,在对齐其他盒子时不太友好

步骤:

<div>文本</div>
文本嵌套块标签,这是因为缩放只对有宽高的标签有效,缩放的时候也是将标签一起缩放,而不仅仅是缩放文本,所以如果使用span等行内标签时,还需要将行内标签进行元素转换为块元素(display:block;)
font-size:12px;
给文本设置字体12px,并设置缩放值为10/12=0.83333,也就是transform:scale(0.83);如果要设置8px,那就是8/12=0.66666
transform-origin:0 0;
默认缩放中心点是在盒子的正中心,所以如果我们需要文本左对齐,就需要改变中心点,也就是transform-origin:0 0;该值有两个参数值,第一个是水平方位值,第二个是垂直方位值,对应的如果需要右对齐、或者是有缩进,那就改变对应的参数值即可。
white-space: nowrap;
文本进行缩放后,并不会改变其原来盒子的大小,只是视觉上改变了大小,也就是说如果文本有换行的时候,它进行缩放后仍然是折行显示,这显然不符合我们要求,所以我们还需要强制文本在一行显示,也就是 white-space: nowrap;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
            width: 300px;
            height: 30px;
            margin-bottom: 5px;
            background: rgb(206, 151, 151);
        }
        .box1 {
            font-size: 12px;
        }
        .box2 {
            font-size: 10px;
            transform: scale(0.83333);
            transform-origin: 0 0;
            white-space: nowrap;
        }
    </style>
</head>
<body>
    <div class="box1">我是正常的12px的文字大小 Hello world!</div>
    <div class="box1">我是正常的12px的文字大小 Hello world!</div>
    <div class="box2">我是正常的10px的文字大小 Hello world!</div>
    <div class="box2">我是正常的10px的文字大小 Hello world!</div>
</body>
</html>

图片说明:font-size (小于12px)设置字体不生效解决方案-1

解决方案三:

使用SVG 矢量图设置text
优点: 1px-12px任意字号均可设置,可对设计界面进行对齐调整
缺点:不支持多行文本

步骤:

在svg包含text标签,给svg设置宽高,文本内容写在text标签中;
因为svg是矢量图的概念,也就是说svg其实是一个图片,给图片内容进行缩放。实际的文本字号大小由text标签设置生效,但内容显示多少要看svg设置的宽高是多少,超出区域外的内容不会显示。

text标签的x y值这里必须用到的;
text的x和y值默认为0,x值表示文字左下角开始的x坐标;y值表示文字左下角开始的y坐标,一般文本显示都是左对齐,所以x值为0,y值为字号大小。当然,如果是右对齐或者居中对齐的x y的值则需要另外设置对应的值。注意:x y的值是写在标签后面,并且无单位!

text文本设置样式的方法和普通标签设置的方法不一样,例如文本颜色填充是用fill设置,并不是color;如果需要文本缩进,或者是距离顶部有多宽的间隙,需要使用dx和dy;
dx:文本在水平方向上移动的像素大小
dy:文本在垂直方向上移动的像素大小

该方法是可以设置任意字号大小,还能根据设计图的需要进行对齐调整,但svg没有换行符!!!所以文本并不支持换行显示,即使你设置的svg的宽高足够大,即使设置文本可以换行white-space: pre;也没有任何效果。 也就是说,svg默认所有单个或连续多个空格、换行符等转为一个空格来显示。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div{font-size: 12px;}
    svg{width: 100px;height: 100px;background-color: chocolate;}
    svg text {font-size: 8px;}
  </style>
</head>
<body>
  <div>我是最小12px字体大小 hello world!</div>
  <svg>
    <!-- svg是矢量图的概念方法,这里的文本并不支持换行显示,即使你设置的svg的宽高足够大 -->
    <!-- text文本设置样式的方法和普通标签设置的方法不一样,例如文本颜色填充是用fill设置,并不是color -->
    <text x="0" y="8" >我是10px字体大小 hello world!</text>>
  </svg>
</body>
</html>

图片说明:font-size (小于12px)设置字体不生效解决方案-2

 

相关文章

调所有前端VUE,标题四个字,超过自动调行,字和框竖向自动居中
【Simply Static生成静态失败】宝塔防火墙拦截了服务器本机访问自身域名 / IP 的环回请求
zhong zhuan
宝塔面板中如何修改网站顺序
Ubuntun和debian 系统升级
【教程】Simply Static配置详情