字体随页面大小变化

    <div class=“testDiv”>测试字测试字测试字测试字测试字</div>

1、css方法:

    .testDiv{
        display:flex;
        justify-content:space-around;
        background: royalblue;
        color: #fff;
        width: 400px;
        padding: 20px;
        font-size: 20px;
        /*最大显示字体,可以不设置*/
    }

注意:当meta标签content里面设置了“user-scalable=no”缩放会失效。

2、js方法:

    setFontSize();
    window.onresize = setFontSize; //实时监听
    function setFontSize(){
        var width = document.body.offsetWidth;
        var newSize = width/375*20;  
        //不知道为什么是375和2倍的可以去看看“逻辑像素和物理像素”的相关内容
        var setHtml=document.getElementsByTagName('html')[0]; //通过根元素设置
        setHtml.style.fontSize = newSize+"px";
    }

还有一种通过元素的视窗位置集合getBoundingClientRect()来更更改的:

   function setFontSize(){
        var view_width = document.getElementsByTagName('html')[0].getBoundingClientRect().width;
        var setHtml=document.getElementsByTagName('html')[0]; 
        view_width > 640 ? setHtml.style.fontSize = 640/16 +"px":setHtml.style.fontSize = view_width/16+"px";
    }

注意:js方法可能造成宽屏,字体太大。所以最好对元素单独再设置字体大小,限制最大:

    .testDiv{
        font-size: 20px;
    }

3、media方法:

    html {
        font: bold 12px/1.5 Helvetica,sans-serif;
    }

    @media (min-width: 480px) {
       html {
         font: bold 13px/1.5 Helvetica,sans-serif;
       }
    }
    
    @media (min-width: 768px) {
       html {
         font: bold 16px/1.5 Helvetica,sans-serif;
       }
    }
    
    @media (min-width: 992px) {
       html {
         font: bold 30px/1.5 Helvetica,sans-serif;
       }
    }

    @media (min-width:1200px) {
       html {
         font: bold 40px/1.5 Helvetica,sans-serif;
       }
    }

注意:如果需要兼容很多设备,这样写比较繁琐,拉动窗口变化大小时,字体大小跳动也比较大显得不够流畅。不能直接写 fontSize: 16px/1.5,这种是错误的。16px是字体大小,1.5是1.5em的行高。

4、插件方法:
比如阿里淘宝使用的flexible.js【指路:GitHub amfe-flexible】

HTML 页面开发中,为了实现字体大小的自适应,通常会采用 `rem` 单位来替代传统的 `px` 或百分比单位,这样可以更好地控制字体在不同屏幕尺寸下的显示效果。`rem` 是相对于 HTML 根元素的字体大小进行计算的单位,因此可以通过动态调整根元素的字体大小来实现全局的自适应效果[^1]。 ### 实现方法 #### 1. 使用 `rem` 进行字体设置 在 CSS 中,可以使用 `rem` 单位来定义字体大小,例如: ```css body { font-size: 1.2rem; } ``` 这样,字体大小将基于 HTML 根元素的字体大小进行计算。如果 HTML 元素的字体大小发生变化,所有使用 `rem` 单位的字体大小也将随之变化[^1]。 #### 2. 动态调整 HTML 根元素字体大小 为了实现字体大小的自适应,可以使用 JavaScript 根据视口宽度动态调整 HTML 根元素的字体大小: ```javascript (function() { var docEl = document.documentElement; function setRemUnit() { // 假设设计稿宽度为 1920px,1rem = 100px var rem = docEl.clientWidth / 19.2; docEl.style.fontSize = rem + 'px'; } setRemUnit(); window.addEventListener('resize', setRemUnit); window.addEventListener('pageshow', function(e) { if (e.persisted) { setRemUnit(); } }); })(); ``` 上述代码会根据视口宽度动态调整 HTML 根元素的字体大小,从而实现字体大小的自适应。通常,可以根据设计稿的宽度来决定 `rem` 的基准值,例如设计稿为 1920px,则 1rem = 100px,此时 `docEl.clientWidth / 19.2` 即可得到合适的 `rem` 值[^4]。 #### 3. 使用媒体查询(Media Queries) 除了使用 `rem`,还可以结合 CSS 的媒体查询功能来实现不同分辨率下的字体大小调整: ```css @media (max-width: 768px) { body { font-size: 1rem; } } @media (min-width: 769px) and (max-width: 1024px) { body { font-size: 1.2rem; } } @media (min-width: 1025px) { body { font-size: 1.5rem; } } ``` 这种方式适用于需要对特定分辨率区间进行精细控制的场景[^3]。 ### 注意事项 - 在使用 `rem` 时,应确保 HTML 根元素的字体大小是动态计算的,以便实现全局自适应。 - 结合 JavaScript 和 `rem` 可以实现更加灵活的响应式布局。 - 媒体查询适用于简单的响应式需求,但在复杂项目中推荐使用 `rem` 配合 JavaScript 进行动态控制。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值