解决页面使用zoom导致echarts位置偏移问题

这篇具有很好参考价值的文章主要介绍了解决页面使用zoom导致echarts位置偏移问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文仅作为记录

由于页面使用zoom来适配pc页面

/**
 * @description: 等比例放大
 * @return {*}
 */
function bodyScale() {
 

    var devicewidth = document.documentElement.clientWidth;
    var scale = devicewidth / 1920; // 分母——设计稿的尺寸宽度
    // document.body.style.zoom = scale-0.07113;
    //页面尺寸放大
    document.body.style.zoom = scale;

}

 



window.onload = window.onresize = function () {
    bodyScale();
};

但是会导致页面上echarts位置偏移

当时找到两个方法是弃用zoom改用transform scale放大缩小配合其它属性解决具体的忘了

采用了另一个方法继续使用zoom给echarts的canvas加上其它属性来解决这个问题

刚开始使用的是这个

/**
 * @description: 等比例放大
 * @return {*}
 */
function bodyScale() {

    

    var devicewidth = document.documentElement.clientWidth;
    var scale = devicewidth / 1920; // 分母——设计稿的尺寸宽度
    // document.body.style.zoom = scale-0.07113;
    //页面尺寸放大
    document.body.style.zoom = scale;
    //解决zoom放大缩小导致echarts位置偏移问题
     document.styleSheets[document.styleSheets.length - 1].insertRule('canvas {zoom: ' + 1 / scale + '}');
     document.styleSheets[document.styleSheets.length - 1].insertRule('canvas {transform: scale(' + scale + ')}');
     document.styleSheets[document.styleSheets.length - 1].insertRule('canvas {transform-origin: 0 0}')
    

}
 



window.onload = window.onresize = function () {
    bodyScale();
};

刚开始还有效果但是后面开始报错

echarts zoom,echarts,前端,javascript

 所以查了一下大概就是chrome浏览器出于安全考虑对这个方法做了一些限制所以我又查了一下使用上去

/**
 * @description: 等比例放大
 * @return {*}
 */
function bodyScale() {



    var devicewidth = document.documentElement.clientWidth;
    var scale = devicewidth / 1920; // 分母——设计稿的尺寸宽度
    // document.body.style.zoom = scale-0.07113;
    //页面尺寸放大
    document.body.style.zoom = scale;
    //解决zoom放大缩小导致echarts位置偏移问题
    let strScale = `scale(${scale})`
    var obj = {
        zoom: 1 / scale,
        transform: strScale,
        transformOrigin: "0 0",

    }

    insertCss("canvas", obj);


}

function insertCss(select, styles) {
    console.log(styles);
    if (document.styleSheets.length === 0) { //如果没有style标签,则创建一个style标签
        var style = document.createElement("style");
        document.head.appendChild(style);
    }
    var styleSheet = document.styleSheets[document.styleSheets.length - 1]; //如果有style 标签.则插入到最后一个style标签中
    var str = select + " {"; //插入的内容必须是字符串,所以得把obj转化为字符串
    for (var prop in styles) {
        str += prop.replace(/([A-Z])/g, function (item) { //使用正则把大写字母替换成 '-小写字母'
            return "-" + item.toLowerCase();
        }) + ":" + styles[prop] + ";"
    }
    str += "}";
    styleSheet.insertRule(str, styleSheet.cssRules.length); //插入样式到最后一个style标签中的最后面
}



window.onload = window.onresize = function () {
    bodyScale();
};

这样就避免了Uncaught DOMException: Failed to execute 'insertRule' on 'CSSStyleSheet': Cannot access StyleSheet to insertRule报错问题文章来源地址https://www.toymoban.com/news/detail-755920.html

到了这里,关于解决页面使用zoom导致echarts位置偏移问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 解决windows由于分辨率调整导致的桌面图标位置乱序

    https://www.zhihu.com/question/328534753 https://baijiahao.baidu.com/s?id=1724804313296173730wfr=spiderfor=pc windows电脑由于连接(扩展)外接显示器、全屏游戏、远程桌面连接等会导致分辨率调整,从而导致桌面上排列好的图片会变乱,这里有两种方式解决: 通过修改注册表项来解决 通过桌面图标

    2024年01月23日
    浏览(81)
  • uniapp 如何使用echarts 以及解决tooltip自定义不生效问题

    使用的是echarts-for-wx插件; 正常写法案例:给tooltip数值加个% 这样的写法formatter自定义是不会生效的; 想要自定义生效的正确写法 顺带提一嘴在开发工具上看会有echarts层级太高遮挡显示层问题;这个问题不必理会,真机上显示是正常的 再使用dataZoom组件的时候会报错e.prev

    2024年01月15日
    浏览(82)
  • 解决Arduino LVGL TFT_eSPI 屏幕偏移问题

    本教程适用于使用 TFT-eSPI 驱动屏幕(横屏!横屏!(竖屏测试没问题))显示不全的问题 基于合宙esp32c3 arduinoLVGL框架,屏幕为中景园 1.47(172x320) 1.14(135x240) 先贴两张显示不全的图片 User-Setup.h配置 在TFT-eSPI初始化函数后面 添加 按住Ctrl再点击setRotation进入(再点击右边高亮)

    2024年02月10日
    浏览(37)
  • 【用友】关于近日微软吊销证书导致用友/金蝶软件无法使用问题及解决办法

    问题现象: 2023年8月23日,用友/金蝶用户大批量出现无法正常使用的情况,用友T3/T6服务无法启动,有的是在使用中频繁报错,如下图: 金蝶部分版本提示如下:  经过开发排查,发现是微软吊销了win10和win11上的verisign证书,导致程序证书签名失效无法正常使用。   受影响的

    2024年02月01日
    浏览(62)
  • echarts柱状图坐标轴的内容太长导致显示不全的两种解决办法

     情况一:坐标上的内容是文字时 如上图这样一个横向的柱状图,y坐标轴的内容太长后会导致显示不全。 因为数据是由后端传过来的,有些会很长有些会比较短,如果只是一味的调整grid会导致短数据前的留白过于多,布局不合理。这个时候就需要用一些别的属性。 解决办法

    2024年02月06日
    浏览(42)
  • android 获取手机当前时区,解决时间偏移量和夏令时差问题

     //获取当前时区     public static int getTimeZone() {         Date date=new Date();         //取得本地时间         Calendar cal = Calendar.getInstance();         //取得时间偏移量         int offset = cal.get(Calendar.ZONE_OFFSET)/(1000*60*60);         //取得夏令时差         int dstOffset=cal.get(Calenda

    2024年02月08日
    浏览(48)
  • 前端适配笔记本缩放125%,150%导致页面错乱问题

    由于前端在开发时使用的都是标准ui设计图,基本都是按照所以1920*1080, 而小屏幕笔记本由于分辨率高,所以导致的显示元素变小,因此很多笔记本的默认显示都是放大125%或者150%。 如果页面比较简单就让多余的空白单边扩展,这样可以不受影响,但是如果页面遍布了引入的

    2024年02月11日
    浏览(43)
  • 【Echart多场景示例应用】Echarts柱状图、折线图、饼图、雷达图等完整示例。 echarts主标题和副标题的位置、样式等设置(已解决附源码)

    **【写在前面】**前端时间做一个echarts的页面调整,临时客户要求加一个参数(总容量)显示,当时我就想用个默认的副标题吧,哪知客户和我说得紧跟在主标题后面,于是乎我就根据设置做了一个调整,我也是在网上看了一下,好些答案都是复制粘贴,文章各种抄袭的,遇

    2024年02月08日
    浏览(50)
  • python中使用selenium进行爬虫时,导致(内存已缓存)备用内存占用过大导致崩溃问题,3个解决方案

    在使用python进行爬虫的时候,使用selenium进行爬取的时候经常会出现已缓存过大的情况,如果缓存出现过大之后再次执行的话就会计算机拒绝,但是这个时候我们的内存又有很多空间可以使用,一开始我以为是占用文件过多然后点360的那个进行文件整理和清理垃圾,结果效果

    2023年04月08日
    浏览(53)
  • 解决在使用 Elasticsearch(ES)多线程批量操作时导致并发一致性的问题!!

    先说一下什么是数据库数据库中 并发一致性 问题! 1、在并发环境下,事务的隔离性很难保证,因此会出现很多并发一致性问题。 数据丢失 T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 读脏数据 T1 修改一个数据,T2 随后读取

    2024年02月04日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包