位置: IT常识 - 正文

前端设置页面字体尺寸跟随屏幕大小而进行变化(前端页面默认字体)

发布时间:2024-01-04
前端设置页面字体尺寸跟随屏幕大小而进行变化

推荐整理分享前端设置页面字体尺寸跟随屏幕大小而进行变化(前端页面默认字体),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端设置页面字体大小,前端设置字体大小,前端设置字体,前端字体怎么设置?,web前端页面设置字体大小,前端设置页面字体大小,前端设置页面字体大小,前端页面默认字体,内容如对您有帮助,希望把文章链接给更多的朋友!

越来越多的前端项目现在需要这个操作,其操作的原因很简单,你的项目可能跑在小尺寸分辨率的电脑上,也有可能在大尺寸的会议平板上,更有甚者是在LED上。那么如何让你的项目根据屏幕分辨率的大小而自动变化,修改页面展示字体以及调整尺寸呢?

按照我们所需功能,我们还是先来对一下流程及需求。

第一:我们要求页面一打开就获取屏幕大小,通过计算设置尺寸及字体大小。

第二:我们当页面分辨率修改后(拖动、或者分辨率转换)我们也需要设置其尺寸和大小。

鉴于以上两种需求。我们可以提炼出。

1. 我们需要一个监测屏幕分辨率的方法。

2. 我们的页面尺寸需要使用rem来进行编写。

3. 我们需要根据屏幕情况来动态设置font-size

下来我们来编写代码:

我们新建一个文件index.js  并将这个文件引入到 index.html 中

在这个index.js中我们先放置一个空的自执行函数

// 项目根目录新建文件 util.js放置一个自执行函数(() => { // 内容})()

然后在这个自执行函数里我们再写一个函数方法,这个方法来动态设置字体大小

(() => { // 设置字体大小 function calcFontSize() { const zoom = window.screen.width / 1920; const size = zoom * 16; document.documentElement.style.fontSize = size + 'px'; console.log('设置字体大小', size); }})()

上述代码中,我们首先获取屏幕的大小,以1920 为主。1920分辨率下默认font-size设置为16px。至于为什么要设置 font-size。那是因为rem的缘故,此处不了解的可以自行百度。

设置完设置字体代码后,我们完成了上述需求的第三个,则还需要第一个跟第二个。

前端设置页面字体尺寸跟随屏幕大小而进行变化(前端页面默认字体)

那下来我们再写一个方法用来监测电脑分辨率。window.onload

(() => { // 设置字体大小 function calcFontSize() { const zoom = window.screen.width / 1920; const size = zoom * 16; document.documentElement.style.fontSize = size + 'px'; console.log('设置字体大小', size); } window.onload = () => { }})()

上述中window.onload 方法的意思是用于在网页加载完毕后立刻执行的操作,即当 HTML 文档加载完毕后,立刻执行某个方法。也就是页面初始化的时候去加载。在这里面我们需要昨个操作,也就是页面一加载完的时候,我们需要去给window的 onresize 绑定一个方法。

window.onload = () => { console.log("页面加载完成") let resize_timer = null; const resize = () => { } window.onresize = resize; }

window.onresize的意思是,当监测到屏幕分辨率变的时候,所以我们需要一个操作就是,页面一加载完成,我们给window.onresize 绑定一个方法。这个方法只绑定一次,而不需要每次都去绑定。这样的话,当每次屏幕分辨率改变的时候,都会去执行 resize 这个方法。

那么这个方法里我们应该些什么呢?那就是调用我们第一步做的 calcFontSize 这个方法,修改整个document的font-size 属性。

window.onload = () => { console.log("页面加载完成") let resize_timer = null; const resize = () => { calcFontSize(); } window.onresize = resize; }

目前的完整代码如下:

(() => { // 设置字体大小 function calcFontSize() { const zoom = window.screen.width / 1920; const size = zoom * 16; document.documentElement.style.fontSize = size + 'px'; console.log('设置字体大小', size); } calcFontSize(); window.onload = () => { console.log("页面加载完成") const resize = () => { calcFontSize(); } window.onresize = resize; }})()

我们去页面上查看,会发现当我们拖动文档流的时候,字体并不会重新设置。如下我拖了两次都没有触发修改。同样是12.8.

只有当我们改完电脑屏幕分辨率后,它才会重新设置。就比如,我从笔记本的屏幕拖动项目到外接显示器上。它就会响应重新设置 font-size。如下:

 当我拖到外接显示器后,它自动的出发了 calcFontSize 方法重新配置了字体大小。

 到这里我们的主功能就设置结束了。

但是我们发现每次触发resize后。

我们的resize被执行了两次?这是怎么回事呢?

这是因为,每次window.onresize  都会去执行 resize,而在屏幕分辨率发生变化的时候,window.onresize 和浏览器的自身实现有关系.不同的浏览器和操作系统实现可能不一样,目前谷歌是执行了两次,有是时候是一次。所以导致页面变化有点闪动。那怎么办呢?

那就是去增加settimeout 来达到短时间只触发一次的效果。

(() => { // 设置字体大小 function calcFontSize() { const zoom = window.screen.width / 1920; const size = zoom * 16; document.documentElement.style.fontSize = size + 'px'; console.log('设置字体大小', size); } window.onload = () => { console.log("页面加载完成") let resize_timer = null; const resize = () => { if (resize_timer) { clearTimeout(resize_timer); } resize_timer = setTimeout(() => { resize_timer = null; calcFontSize(); }, 500); } window.onresize = resize; }})()

上述代码中,我们利用防抖的方式来使用setTimeout 达到了让 resize 在短时间内只执行一次的效果。再次尝试后发现,页面功能一切正常。

页面组件样式大小也达到了我们的要求。

本文链接地址:https://www.jiuchutong.com/zhishi/285064.html 转载请保留说明!

上一篇:SU-03T语音模块的使用(小智语音控制LED灯)(语音模块作用)

下一篇:迷迭香怎么养,阳台如何养殖迷迭香(图文)(迷迭香怎么养殖方法)

  • 机械租赁适用税率
  • 领用库存商品用于固定资产
  • 酒店收入是以当月入账时间为准吗
  • 生产型企业直接进口产品是否可直接出口
  • 个税年度累计计算器
  • 残保金申报在哪申报
  • 长期待摊费用摊销年限规定
  • 免税即征即退先征后退
  • 债权如何变现
  • 没残值的固定资产有哪些
  • 现金支付业务
  • 增值税普通发票怎么开
  • 上个月有留抵税这个月怎么结转税金
  • 营改增后受托代销手续费税率是多少?
  • 房屋修缮费交增值税吗
  • 免征增值税项目销售额含税吗
  • 仲裁委判决还能上诉吗
  • 发票两边的孔怎么做
  • 财务报表教育费附加包含地方教育费附加吗
  • 结转固定资产净收益8万元
  • 企业风险报酬转移怎么理解
  • 保险公司赔偿的存货自然灾害损失
  • 工商年报人数是12月人数吗
  • 雪茄烟在什么环节交消费税
  • php 文件操作
  • php实现的链式队列是什么
  • 城建税教育费附加和地方教育费附加税率
  • ubuntu20.04安装make
  • 事业单位以固定薪资为准
  • 编制记账凭证出现错误
  • python进行傅立叶变换
  • 为什么要划分等价类
  • .net tpl
  • js怎么制作
  • php密码加密技术phpass
  • 自营与代理
  • phpcms api
  • 应收应付款项
  • 买固定资产没有发票
  • 金税盘的服务费
  • 维修费开专票怎么做账
  • 通过创建SQLServer 2005到 Oracle10g 的链接服务器实现异构数据库数据转换方案
  • 收据不能入账如何处理
  • 工程结算属于哪类账户
  • 企业资金如何运动
  • 工地上报销项目有哪些
  • 计提待摊费用分录
  • 临时设施属于什么科目
  • 支付平台费率
  • 哪些发票可以提供发票
  • 城市生活垃圾处理方式有哪几种
  • 新会计准则会计科目明细表
  • 对于资产负债表日后的非调整事项
  • 收到现金支票没有盖章
  • 企业的财务战略
  • 商品流通企业有哪些企业
  • 职工福利费的好处
  • mysql通过文档读取并执行命令之快速为mysql添加多用户和数据库技巧
  • mysql和mysql数据库的区别
  • windows预览版计划
  • windows端口占用怎么关闭
  • win10系统电脑开机黑屏
  • linux ssh默认端口
  • ie6浏览器兼容模式怎么设置在哪里
  • opengl es3.0metal
  • mvp功能
  • 安卓作业仿银行
  • ftp自动上传脚本怎么用
  • python的遍历
  • 事件绑定js
  • node.js和ajax的顺序
  • 如何解决android兼容问题
  • python读取图片属性
  • adb查看ip地址
  • javascript面向对象编程
  • 宁夏电子税务局登录入口
  • 个税更正申报如何导出大厅申报表
  • 2021年江苏城镇医保网上缴费
  • 计征土地增值税时需要以评估价格来确定
  • 国家税务总局56号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号