Vue rem回顾

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue rem回顾(初学者简单笔记)

 

目录

rem回顾

移动端适配

等比例缩放

下载插件

总结


rem回顾

实现自适应的rem布局。

通过把屏幕划分成几个等份,作为html字体的大小,当设备变化的时候,就除去这个份数,得出当前html的字体大小,然后转换为rem单位。

移动端适配

移动端适配 根据clientWidth

等比例缩放

适配第一种方案

设置body是为了盒子不被字体撑开,如下:

在越大的设备上 就越大 (750为设计稿宽度)

动态设定fontSize 可适配所有屏幕

 

适配第二种方案

750px/16 = 46.875rem

200px/16 = 12.5rem

页面元素的rem值 = 页面元素值(px)/ html font-size 字体大小

下载插件

可以通过vscode安装插件,进行px和rem的换算。

 

可以通过settings.json修改插件默认的fontsize计算值,根据项目进行设置

总结

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue rem回顾(初学者简单笔记)

<think>好的,我现在需要解决用户的问题:如何在ECharts中使用REM单位进行配置,或者提供相应的解决方案示例。首先,我需要回顾ECharts的文档和相关资料,看看是否支持REM单位,或者有没有变通的方法。 首先,我记得ECharts的配置项中,很多尺寸设置,比如字体大小、图例大小、边距等,通常接受数值类型的值,单位是像素(px)。例如,用户提到的引用[2]中提到,echarts的字体大小只支持具体数值(像素),不能用百分比或vw等。这说明直接使用REM可能不被支持,但可能需要通过其他方式间接实现。 接下来,我需要思考REM单位的特性。REM是相对于根元素(html)的字体大小的单位。通常,在响应式设计中,会通过调整根元素的字体大小来适配不同屏幕尺寸。例如,设置html的font-size为某个vw或百分比值,这样REM单位会根据这个基准值动态变化。 既然ECharts本身不支持REM,但用户希望使用REM,可能的解决方案是在初始化ECharts实例时,将REM转换为像素值,并动态调整配置项中的尺寸值。例如,在JavaScript中计算当前REM对应的像素值,然后将这些值应用到ECharts的配置项中。同时,可能需要在窗口大小变化时,重新计算这些值并更新图表。 另外,用户可能需要使用resize事件来确保图表在窗口变化时自适应。结合REM的话,可能需要在根字体大小变化时(比如通过媒体查询或JavaScript监听),重新计算并更新图表配置。 然后,我需要考虑如何具体实施。例如,定义一个函数将REM转换为像素,比如使用getComputedStyle获取根元素的字体大小,然后乘以所需的REM数值。接着,在ECharts的配置项中使用这些计算后的像素值。此外,可能需要使用v-chart-resize这样的自定义指令(如引用[3]中提到的)来处理容器的尺寸变化,确保图表正确适配。 还需要注意,如果用户使用Vue等框架,可能需要将REM的计算逻辑封装成响应式的,确保当根字体大小变化时,图表能够自动更新。或者在CSS中使用REM设置容器尺寸,让ECharts的容器自适应,但内部的字体和元素尺寸仍需通过JavaScript动态计算。 最后,整合这些思路,给出一个示例代码,展示如何在配置中使用转换后的REM值,并处理窗口变化时的更新。同时,提醒用户注意可能的限制,如性能问题或某些配置项可能无法完全适配REM。</think>关于在ECharts中使用REM单位的解决方案,可通过以下步骤实现: ### 1. REM单位动态计算 ECharts配置项中的尺寸数值需转换为像素值,通过JavaScript动态计算REM对应的实际像素: ```javascript // 获取根元素字体大小(基准值) const rootFontSize = parseFloat(getComputedStyle(document.documentElement).fontSize); // REM转像素函数 const remToPx = (rem) => rem * rootFontSize; // 示例配置项 const option = { title: { text: '示例图表', textStyle: { fontSize: remToPx(1.2) // 将1.2rem转为像素 } }, xAxis: { axisLabel: { fontSize: remToPx(0.9) } }, grid: { top: remToPx(2), right: remToPx(1) } }; ``` ### 2. 响应式适配 结合窗口缩放事件和CSS媒体查询实现动态调整: ```javascript // 初始化图表后绑定resize事件 const chartDom = document.getElementById('chart'); const myChart = echarts.init(chartDom); myChart.setOption(option); // 监听窗口变化 window.addEventListener('resize', () => { myChart.resize(); // 自动调整图表尺寸 // 若根字体动态变化,需重新计算REM并更新配置 }); ``` ### 3. CSS容器适配(Vue示例) 通过REM设置容器尺寸实现自适应布局: ```html <template> <div class="chart-container" ref="chart" style="width: 20rem; height: 15rem"></div> </template> <style> .chart-container { font-size: 1rem; /* 继承根元素字体大小 */ } </style> ``` ### 4. 限制说明 - **非数值属性限制**:如图例符号类型(`symbol: 'circle'`)等非数值属性无需转换[^2] - **性能权衡**:频繁计算REM可能影响性能,建议配合`debounce`函数优化resize事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值