扫一扫分享
autofit.js 迄今为止最易用的自适应工具
autofit.js 是一个轻量级的JavaScript库,它的核心思想非常直接:自动缩放。
它不会去改动你原有的css布局(比如Flexbox或Grid),而是将你的整个网页内容视为一个“整体”,然后通过CSS的 transform: scale() 属性,对这个整体进行缩放,使其完美适应目标屏幕。
你可以把它想象成浏览器内置的“缩放”功能(Ctrl+加号/减号),但它是自动的、精确的,并且是针对你的容器元素进行的。
你可以通过多种方式获取 autofit.js。
方式一:直接CDN引入(最简单)
在你的html文件 </body> 标签前引入:
<script src="https://unpkg.com/autofit.js"></script>方式二:使用npm安装
如果你的项目使用了模块化构建(如vue、react),可以通过npm安装:
npm i autofit.js然后在你的主入口文件(如 main.js, App.vue)中引入并使用:
import autofit from ‘autofit.js‘
// 或者 const autofit = require(‘autofit.js‘)假设我们有一个标准的大屏页面,其设计稿尺寸为 1920px * 1080px。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>数据可视化大屏</title>
<style>
/* 重置样式,确保容器能撑满页面 */
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { width: 100%; height: 100%; overflow: hidden; }
/* 这是我们的设计稿容器,固定为设计稿尺寸 */
#app {
width: 1920px;
height: 1080px;
position: relative;
background: linear-gradient(to bottom, #0a1a3b, #0c0d2a);
color: white;
}
/* 内部的一些示例元素,按照设计稿的绝对位置布局 */
.header { position: absolute; top: 20px; left: 40px; font-size: 36px; }
.chart-box {
position: absolute;
width: 400px;
height: 300px;
background-color: rgba(255, 255, 255, 0.1);
border-radius: 8px;
padding: 20px;
}
#chart1 { top: 100px; left: 40px; }
#chart2 { top: 100px; left: 500px; }
</style>
</head>
<body>
<!-- 这个div就是我们需要适配的容器 -->
<div id="app">
<div>数据可视化监控大屏</div>
<div id="chart1">图表区域1</div>
<div id="chart2">图表区域2</div>
<!-- ... 其他更多图表和组件 -->
</div>
<script src="https://unpkg.com/autofit.js"></script>
<script>
// 初始化代码将写在这里
</script>
</body>
</html>现在,如果你直接在浏览器中打开这个页面,并且你的屏幕宽度不是1920px,就会出现横向滚动条。因为 #app 容器的宽度是固定的1920px。
在刚才的 <script> 标签里,添加初始化代码:
// 最简用法:传入设计稿宽高和容器选择器
autofit.init({
designWidth: 1920,
designHeight: 1080,
renderdom: ‘#app‘, // 要缩放的容器
resize: true // 是否监听窗口变化,默认为 true
});刷新页面!神奇的事情发生了。无论你怎么调整浏览器窗口大小,整个 #app 容器里的内容都会等比例缩放,始终完整地显示在可视区域内,没有滚动条,布局比例也完全正确。
autofit.init() 接受一个配置对象,常用的配置如下:
| designWidth | 必填 | ||
| designHeight | 必填 | ||
| renderDom | ‘#app‘ | ||
| resize | true | ||
| ignore | [] | ||
| transition | 0 | ||
| delay | 0 | ||
| limit | 0 |
仅供个人学习参考/导航指引使用,具体请以第三方网站说明为准,本站不提供任何专业建议。如果地址失效或描述有误,请联系站长反馈~感谢您的理解与支持!
手机扫一扫预览