首页 > 其他分享 >使用rem更好的去适配页面元素

使用rem更好的去适配页面元素

时间:2024-10-22 09:43:17浏览次数:1  
标签:字体大小 recalc 适配 width doc let rem docEl 页面

需要一段JS:

      (function (doc) {
        let docEl = doc.documentElement; // 获取根节点的html
        doc.addEventListener("DOMContentLoaded", recalc);
        function recalc() {
          let width = docEl.clientWidth;
          docEl.style.fontSize = 20 * (width / 320) + "px";
        }
      })(document);

 

解释:
  • 使用IIFE(立即执行函数表达式)来封装整个功能,确保变量不会污染全局作用域。

  • 获取文档的<html>元素,存储在docEl变量中。

  • 添加一个事件监听器,监听DOMContentLoaded事件,当DOM加载完成时调用recalc函数。

  • recalc函数中:

  • 获取<html>元素的可视宽度(不包括滚动条),存储在width变量中。
  • 根据width计算新的字体大小。这里使用了一个公式20 * (width / 320),意味着当宽度为320px时,根元素的字体大小为20px;宽度增加时,字体大小按比例增加。
  • 将计算出的字体大小设置为<html>元素的style.fontSize属性,单位为px
  • 最后,将document对象作为参数传入IIFE,使内部函数可以访问到文档对象。

完整例子:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .app{
        width: 10rem;
        height: 10rem;
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div class="app">app</div>
    <script>
      (function (doc) {
        let docEl = doc.documentElement; // 获取根节点的html
        doc.addEventListener("DOMContentLoaded", recalc);
        function recalc() {
          let width = docEl.clientWidth;
          docEl.style.fontSize = 20 * (width / 320) + "px";
        }
      })(document);
    </script>
  </body>
</html>

 

标签:字体大小,recalc,适配,width,doc,let,rem,docEl,页面
From: https://www.cnblogs.com/llcdbk/p/18491900

相关文章

  • 移动端页面字体在微信被放大,导致排版错乱
    微信在iOS和Android平台上对网页字体大小的调整机制不同,需要分别处理。以下是如何在PBootCMS中实现这一功能的详细步骤:1.阻止iOS平台上的字体放大在PBootCMS的模板文件中,找到header.html文件(通常位于/template/你的模板名称/目录下),并在<head>标签内添加以下CSS样式:<style>......
  • selenium执行页面滚动无效
    起因:​ 今天有个测试活动,需要记录一界面的状态,计划每10分钟截图记录。由于网页有失效时间,便考虑使用selenium定时登录,去目标页面,目标位置执行截图。问题:​ 在进入页面后,需滚动页面到最低部才能看到需要的数据图表。但是进入页面后,执行模拟滚动时,时常会无效。网上各种方法都尝......
  • GD-WLAN登录页面抓包及curl模拟方法
    摘要:校园网Web认证界面点击登录时会发送一个Post请求,密码使用时间戳作为密钥进行RC4加密(后经验证,时间戳可为任意值),服务器根据密钥解密并验证账户与密码,验证通过便可以正常上网。因而可以采用curl等工具模拟Post请求,完成登录。实现路由器、服务器、手机、平板等快捷联网。......
  • ArkWeb页面跳转与跨应用导航 - 高级应用
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。简介页面跳转是Web应用中常见......
  • django admin 后台中添加自定义的 html 页面
    实现效果配置简历模板html文件{%extends"admin/base_site.html"%}{%blockcontent%}<h1>自定义HTML页面</h1><p>{{your_variable}}</p>{%endblock%}admin中添加代码,主要是get_urls以及对应的的视图fromdjango.urlsimportpathfromdjango......
  • PbootCMS登录页面无法正常加载,显示为空白页或错误信息怎么办
    问题描述:登录页面无法正常加载,显示为空白页或错误信息。解决方案:检查Web服务器配置:确保Web服务器(如Apache、Nginx)配置正确,特别是虚拟主机配置。检查PHP配置:确保PHP配置正确,特别是php.ini文件中的设置。检查文件权限:确保PBootCMS相关目录和文件的权限设置正确。检查PHP错误......
  • [AGC010D] Decrementing
    首先考虑最简单的情况,如果有一个数是\(1\),那么第二步没有作用,胜负是固定的,先判掉。然后发现题目给了一个很奇怪的条件:所有数的最大公约数为\(1\),也就是至少有一个奇数,这提示我们从奇偶数下手。发现第二步中的最大公约数的奇数因子是毫无意义的,因为无论是奇数还是偶数除以一个......
  • pbootcms访问页面出现PHP Fatal error: Allowed memory size of 13421
    问题描述客户在使用PbootCMS时,访问首页出现以下错误:PHPFatalerror:Allowedmemorysizeof134217728bytesexhausted(triedtoallocate262144bytes)inxxx\core\database\Sqlite.phponline173PHPFatalerror:Allowedmemorysizeof134217728bytesexh......
  • HTML静态网页成品作业(HTML+CSS)——中华传统美德介绍网页(2个页面)
    ......
  • 插件发布新特性,让运动适配更简单。
    为了让广大开发者更好的适配各AI运动场景,我们的AI运动识别插件已经迭代了23个版本,最近又迎来了我们的1.5.5小版本更新,本次更新了2个新特性,新特性有助于大家更好的适配新运动,更轻松的开发健身、体育、体测、AR互动等AI运动场景场景;下面我们就来看看这两个新特性。一、相对位置检......