CSS rem单位跟着设备html:font-size改变大小

该博客探讨了如何使用JavaScript和CSS实现响应式布局,特别是在设备尺寸变化时调整html字体大小以实现rem单位的动态适配。代码示例展示了如何监听窗口resize事件和DOMContentLoaded事件,根据设备宽度动态设置根元素的font-size,从而影响页面上使用rem单位的元素尺寸。这种方法确保了在不同屏幕尺寸下页面的视觉一致性。
摘要由CSDN通过智能技术生成
(function (doc, win) {
    var docEl = doc.documentElement,
        resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
        recalc = function () {
            var clientWidth = docEl.clientWidth;
            if (!clientWidth) return;
            if(clientWidth>=640){
                docEl.style.fontSize = '100px';
            }else{
                docEl.style.fontSize = 40 * (clientWidth / 640) + 'px';
            }
        };
    if (!doc.addEventListener) return;
    win.addEventListener(resizeEvt, recalc, false);
    doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);


<!DOCTYPE html>
<html> 
<head> 
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>
rem跟着设备html:font-size变化
</title>
    <style type="text/css">
    section { 
        width: 100%;
        height: 100%;
        background: red;
    } 
    .page{ 
        width: 5rem;
        height: 10rem; 
        background: yellow;
        font-size: 0.3rem;
    } 
    </style>
</head> 
<body>
    <section> 
        <div class="page">rem
字体变化测试
</div>
    </section>
</body> 
<script type="text/javascript"> 
var docEl = document.documentElement, 
    //当设备的⽅向变化(设备横向持或纵向持)此事件被触发。绑定此事件时, 
    //注意现在当浏览器不⽀持orientationChange事件的时候我们绑定了resize 事件。
    //总来的来就是监听当然窗⼝的变化,⼀旦有变化就需要重新设置根字体的值
    resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
    recalc = function() {
        //设置根字体⼤⼩ 
        docEl.style.fontSize = 20 * (docEl.clientWidth / 640) + 'px';
    }; 
//绑定浏览器缩放与加载时间 
window.addEventListener(resizeEvt, recalc, false); 
document.addEventListener('DOMContentLoaded', recalc, false);
</script>
</html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值