这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

这篇具有很好参考价值的文章主要介绍了这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

前段时间做了一个自适应的小工具(autofit.js)

经过一段时间的试用,同学们发现了工具存在的一些问题,我自己也发现了一些,这篇文章是针对这些问题撰写的。

autofit.js

autofit.js是一款可以让你的项目一键自适应的工具。

autofit.js npm 主页

autofit.js github 主页

安装

npm i autofit.js

使用

import autofit from 'autofit.js'
autofit.init({
    designHeight: 929,
    designWidth: 1920,
    renderDom:"#app",
    resize: true
})

一般按照1080的设计稿开发时,直接调用autofit.init() 即可。插件会自动计算缩放后撑满浏览器窗口所需的宽高。

解决问题

使用了autofit.js依然出现了白边

因为autofit.js使用的是scale方案,transform: scale() 缩放时,dom元素在文档中的实际占位是不变的

这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

这样下方就出现了白边,右侧还出现了滚动条

解决此问题将body设置超出隐藏即可:

body{
    overflow: hidden;
}

这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

在设置超出隐藏后,滚动条和白边都不见了。

#app充满了全屏,里面的元素却不能自适应位置。

这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

出现这种问题的原因很明显,你需要将内容元素做一个简单的适配定位,因为autofit.js只做了缩放和填充部分。如果你的页面元素没有做均匀分布的位置,也是会出现这种情况的。

以上图为例

如果出现了这个问题,推荐使用flex进行布局即可。

display:flex;
justify-content: space-between;

或者直接使用定位,将三块内容定位到左上、中间、右上。

.left, .right {
    position: fixed;
    width: 25%;
    height: 100%;
    top: 0;
    padding-top: 70px;
    z-index: 9999;
}

手动缩放浏览器窗口时,echarts图表被拉伸了

这个问题按说不会是因为autofit.js引起的(前提是你没有使用百分比),但是既然有人提到了,这里说一下解决办法。

echarts图表拉伸,说明你的echarts外层容器变大或者变小的,导致canvas元素拉伸了,解决办法为:

window.addEventListener('resize', this.redraw, false);    
redraw() {
      this.myChart.clear();
      this.myChart.resize();
      this.draw();
},

像我这样,监听resize事件,并重绘echarts即可。

手动缩放浏览器可以正常适应,点击最大化(或F11全屏)时却失效了

这个问题属于autofit.js的一个bug,目前在最新版本已经修复了。

造成Bug的代码

  if (clientWidth / clientHeight < designWidth / designHeight) {
    scale = (clientWidth / designWidth)
    document.querySelector(renderDom).style.height = `${clientHeight / scale}px`;
  } else {
    scale = (clientHeight / designHeight)
    document.querySelector(renderDom).style.width = `${clientWidth / scale}px`;
  }

造成这个bug的原因是,全屏时的宽高比不小于(因为是等于)设计图宽高比,导致高度没有被重新设置。

所以在曾经设置过高度(即基于宽度px不变的缩放),再最大化的情况,高度不会变。在这种逻辑下,宽度有时也会失效。

修改后的代码(1.0.8):

let scale = (clientWidth / clientHeight < designWidth / designHeight) ? (clientWidth / designWidth) : (clientHeight / designHeight)
dom.style.height = `${clientHeight / scale}px`;
dom.style.width = `${clientWidth / scale}px`;
dom.style.transform = `scale(${scale})`;

这样无论是怎样的宽高比,它都会同时设置宽度和高度。

使用autofit.js后,在小屏幕上字体(或元素)变得过小

造成这种问题的原因大概率是你同时使用了其他自适应工具,或者使用了相对单位,导致你的网站进行了双重适配。

解决方式也很简单,autofit.js不需要任何其他辅助工具,如果想体验autofit.js一行搞定,关闭其他插件,且不要使用任何相对单位即可!

autofit.js仅推荐使用px进行开发。

使用autofit.js后,地图事件热区偏移了

不要手动设置:transform-origin,因为autofit.js将它设置成了 0 0,即以左上角为基准点缩放,这可以保证dom元素不会偏移。

如果你使用的地图是基于canvas绘制的,那么有可能会出现偏移现象(往往伴随着拉伸),那么和上面的echarts的解决方式一样,只需要重绘就可以了。

如果是基于svg绘制的,那么不应该会出现这个问题,如果你的svg绘制的地图也出现了热区偏移现象,欢迎来私信捶我。

案例

我的使用案例

这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

正常状态 :1920*929

这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

笔记本缩放150%:1280*569

这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!

笔记本缩放175%:1098*460

可以看到,这些缩放基本上影响不到我们,看起来甚至没有任何区别😄(越看越牛逼啊铁子们)

QA

Q:autofit.js可以做局部自适应吗?

A:不可以

Q:除了大屏项目外,autofit.js可以适配其他项目吗?

A:可以,autofit.js适用于任何PC项目

Q:autofit.js可以向上兼容吗

A:可以是可以,但是你看看哪个大傻子这么干?向上兼容可能会出现模糊的现象,如果你希望能在更高分辨率的屏幕上展示,还是建议按照高分辨率的设计稿开发。

Q:autofit.js会影响性能吗?

A:会,但是微乎其微,如果你不希望autofit.js过多的干预dom,可以把resize设置为false,这样它只会在启动时运行一次。

Q:autofit.js相对于其他自适应工具有什么区别?

A:没有什么本质区别,autofit.js和所有使用scale方案的工具都是一个原理,只不过autofit.js多了一个自动充满全屏的功能,且调用比较简单。

Q:你为什么又要重复造轮子?

A:看不惯那么多复杂繁多的工具,我只需要二十行代码。

Q:使用autofit.js需要学习其他知识吗?

A:需要个屁。文章来源地址https://www.toymoban.com/news/detail-447787.html

到了这里,关于这款全自动自适应工具你用过了吗?autofit.js请求加入你的战场!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 全自动网页生成系统网站源码重构版

    所有模板经过精心审核与修改,完美兼容小屏手机大屏手机,以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使用方便考虑,全自动网页制作系统无需繁琐的注册与登入,直接选择喜欢的模板输入网页信息即可制作,并且所以模板

    2024年01月22日
    浏览(42)
  • 一个开源的全自动视频生成软件MoneyPrinterTurbo

    只需提供一个视频 主题 或 ,就可以全自动生成视频文案、视频素材、视频字幕、视频背景音乐,然后合成一个高清的短视频。 一:功能特性 完整的 MVC架构,代码 结构清晰,易于维护,支持 API 和 Web界面 支持视频文案 AI自动生成,也可以自定义文案 支持多种 高清

    2024年04月17日
    浏览(46)
  • 12吋全自动划片机有哪些功能?

    1、大面积工作盘:可容纳多个工件,并自动对位。 2、轴光/环光:采用合适的光源照射,显示影像更能呈现工作物表面特征。 3、双倍率显微镜头:视野更大,精准快速进行对准校正工作。 4、非接触测高:消除刀具因测高而损伤的可能性,实时补偿下刀高度误差,提升切削

    2024年02月07日
    浏览(49)
  • 新版百度答题手机脚本,半自动脚本(全自动辅助抢题,手动答题)

    标题:《探秘半自动百度答题手机脚本:提升答题效率的辅助利器》 篇文: 引言: 在现代社会,知识获取和学习已成为人们追求进步和提高自我的重要途径。而移动互联网时代的到来,使得移动答题应用如百度答题成为了广大用户在碎片化时间中获取知识的首选方式。本文

    2024年01月19日
    浏览(81)
  • CASAIM与大疆达成全自动化测量技术合作,CASAIM IS全自动化蓝光测量仪实现无人机叶片全尺寸检测及质量控制

    近期,CASAIM与大疆达成全自动化测量技术合作,CASAIM IS全自动化蓝光测量仪实现无人机叶片全尺寸检测及质量控制。 无人机行业在过去几年里取得了迅猛发展, 大疆是全球领先的无人飞行器控制系统及无人机解决方案的研发商和生产商, 客户遍布全球100多个国家。随着技术

    2024年02月16日
    浏览(42)
  • 自定义WEB框架结合Jenkins实现全自动测试

    1.allure–纯命令运行 -固定的–稍微记住对应的单词即可。 2 安装,2个步骤: 1.下载allure包,然后配置环境变量。 https://github.com/allure-framework/allure2/releases/tag/2.22.4 2.在你的终端去安装一个插件 pip install allure-pytest 具体的命令 第一步:生成对应的allure的数据 pytest.main([“-vs”,“

    2024年02月12日
    浏览(39)
  • Jmeter +Maven+jenkins 接口性能全自动化测试

    背景: 首先用jmeter录制或者书写性能测试的脚本,用maven添加相关依赖,把性能测试的代码提交到github,在jenkins配置git下载性能测试的代码,配置运行脚本和测试报告,配置运行失败自动发邮件通知,这样一来性能测试的job配置完成。接着,把性能测试的job配置成开发job的下

    2024年02月06日
    浏览(84)
  • Python爬虫使用selenium爬取qq群的成员信息(全自动实现自动登陆)(1)

    browser.find_element_by_xpath(‘.//ul[@id=“headerNav”]/li[4]’).click() 8.点击群管理之后,进入群管理界面,我们需要的是成员管理 WebDriverWait(browser, 1000).until( EC.presence_of_all_elements_located( (By.CLASS_NAME, ‘color-tit’) ) ) browser.find_element_by_class_name(‘color-tit’).click() 9.点击成员管理之后会重新

    2024年04月28日
    浏览(45)
  • STM32状态机编程实例——全自动洗衣机(上)

    前面几篇文章,以按键功能,介绍了状态机的原理与按键状态机实例,实现按键单击、双击、长按等状态的检测。 本篇,继续使用状态机编程,来实现一个更有趣的功能——全自动洗衣机。 下面是一个全自动洗衣机的控制面板: 面板上有4个按键: 电源:控制洗衣机通电与

    2024年02月09日
    浏览(41)
  • 0088-基于单片机的全自动洗衣机仿真设计

    1、采用51/52单片机作为主控芯片; 2、支持四种洗衣(流程)模式:      标准模式:进水-洗涤-排水--进水-漂洗1-排水--进水-漂洗2-排水--脱水;      经济模式:进水-洗涤-排水--进水-漂洗-排水--脱水;      单独洗涤:进水-洗涤-排水;      单独脱水:排水-脱水; 3、支持两

    2024年01月21日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包