Bootstrap开发中Tab标签页切换图表显示问题的解决方法

您所在的位置:网站首页 把几个数据用一个柱状图显示 Bootstrap开发中Tab标签页切换图表显示问题的解决方法

Bootstrap开发中Tab标签页切换图表显示问题的解决方法

2023-03-11 16:08| 来源: 网络整理| 查看: 265

前言

在做响应式页面的时候,往往需要考虑更多尺寸设备的界面兼容性,一般不能写死像素,以便能够使得界面元素能够根据设备的不同进行动态调整,但往往有时候还是碰到一些问题,如Tab标签第一页面正常显示,但是切换其他页面的时候显示内容没有发生动态的调整,本篇随笔介绍解决Tab标签页切换图表显示问题,以及图表控件可以实现窗口动态变化进行调整尺寸。

1)常规的图表处理

例如下面界面有两个Tab标签页,如下所示,第一个标签页显示正常。

部分界面代码如下所示

如果我们在基于IPhone的模拟设备尺寸查看的时候,会发现图片并未能进行有效的缩放以正确的方式显示,也就是在Tab标签页切换的时候,第二个标签页的图表的尺寸无法正确的缩放。

那么我们如果要实现在标签页切换的时候,我们能够获得正确的效果的时候,那么需要跟踪标签页的切换事件进行处理。

 在网上搜索了一下解决方案,其中有一篇《解决Bootstrap 标签页(Tab)插件切换echarts不显示问题》随笔介绍的思路也挺好的。

不过我进行了一些合并改造,其实也是实现了他说的几个要点,不过更加简化而已:

 1. bootstrap实现响应式布局

 2. highcharts实现自适应

 3. 标签页切换、缩放正常显示

我这里利用的是HighChart图表控件,不过原理是一样的,我们需要对图表集合进行一个遍历处理,只不过遍历的处理可以使用更加方便的JQuery文档查找方式。

2、解决Tab标签页切换图表显示问题

例如我的图表声明,以及动态获取图表数据的代码如下所示:

//初始化对象 $(function () { var chart1 = new Highcharts.Chart({ chart: { renderTo: "container1", plotBackgroundColor: null, plotBorderWidth: null, plotShadow: false, }, title: { text: '集团分子公司人员组成' }, tooltip: { pointFormat: '{series.name}: {point.y}' }, plotOptions: { pie: { allowPointSelect: true, cursor: 'pointer', dataLabels: { enabled: true, format: '{point.name}: {point.percentage:.1f} %', style: { color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black' } }, //showInLegend: true } }, series: [{ type: 'pie', name: '人员数量', data: [] }] }); //通过Ajax获取图表1数据 $.ajaxSettings.async = false; var data1 = []; $.getJSON("/User/GetCompanyUserCountJson", function (dict) { for (var key in dict) { if (dict.hasOwnProperty(key)) { data1.push([key, dict[key]]); } }; chart1.series[0].setData(data1); });

这部分做参考了解即可,真正起作用的不是这些代码。

真正起作用的是,我们利用Boostrap的Tab变化的事件进行处理,如下所示。

//TAB页面变化的时候,调整图表宽度 $('.grid_tab').on('shown.bs.tab', function () { var target = $(this).attr('href'); var cOntrols= $(target).find('.tab-char'); for(var i=0;i

上面的那段JS,是利用了JQuery动态遍历出相应的highcharts对象,然后调用它的.reflow() 函数进行更新即可。

参考下图表的Tab标签页的HTML代码,我们注意到 class="tab-pane”  和  class="tab-char"的两个DIV层,这些就是我们利用JQuery来动态查找图表控件并进行处理的关键。

图表1 3D图表2

如果我们在处理jS的时候,无法确定是否正确运行了,我们可以跟踪函数,并可以跟踪获得对应的对象情况,如下我是在Chrome里面进行跟踪获得的结果,并可以跟踪进去每一步。

或者可以看看窗口变化的时候,我们捕获的对象。

 

获得对象后,我们转换为对应的控件,然后调用它的接口进行更新即可。

$(controls[i]).highcharts().reflow();

以上就是我们实现的思路和跟踪处理办法,最后上图说明问题解决。

 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

iphone bootstrap jquery ajax json html chrome 写下你的评论吧 ! 推荐阅读 iframe chrome扩展中的隐形标签 如何解决《chrome扩展中的隐形标签》经验,为你挑选了1个好方法。 ... [详细] 蜡笔小新   2023-03-11 16:04:36 javascript 如何将我的HTML链接到我的jQuery? 如何解决《如何将我的HTML链接到我的jQuery?》经验,为你挑选了1个好方法。 ... [详细] 蜡笔小新   2023-03-11 15:41:39 hover 引导日期选择 为什么以下代码在https:angrytool ... [详细] 蜡笔小新   2023-03-11 15:11:27 view Django中的Ajax详解 Django中的Ajax详解 AJAX(AsynchronousJavascriptAndXML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当 ... [详细] 蜡笔小新   2023-03-11 15:07:06 javascript 找不到Angular.js,但链接没有错误 如何解决《找不到Angular.js,但链接没有错误》经验,为你挑选了1个好方法。 ... [详细] 蜡笔小新   2023-03-11 14:46:06 hover 绘制图表时Chart.js数据集控制器为'null' 如何解决《绘制图表时Chart.js数据集控制器为'null'》经验,请问有没有懂的朋友? ... [详细] 蜡笔小新   2023-03-11 16:06:49 dom 编译时没有错误的简单程序会产生白页 如何解决《编译时没有错误的简单程序会产生白页》经验,为你挑选了1个好方法。 ... [详细] 蜡笔小新   2023-03-11 16:06:13 上传 关于serialize() FormData serializeArray()表单序列化 关于serialize() FormData serializeArray()表单序列化 serialize()FormDataserializeArray()都是序列化表单,实现表单的异步提交但是serialize()和serializeArray()都是只能序列化表 ... [详细] 蜡笔小新   2023-03-11 15:59:08 firefox Laravel 5和奇怪的虫子:背上的花括号 如何解决《Laravel5和奇怪的虫子:背上的花括号》经验,请问有什么解决方案? ... [详细] 蜡笔小新   2023-03-11 15:41:15 jquery select 联动 JSON jquery                     & ... [详细] 蜡笔小新   2023-03-11 15:39:58 javascript 检测组合按键(Control,Alt,Shift)? 如何解决《检测组合按键(Control,Alt,Shift)?》经验,为你挑选了1个好方法。 ... [详细] 蜡笔小新   2023-03-11 15:33:59 jquery IE 7/8 AJAX缓存怪异 - IE 7/8 AJAX Cache Weirdness Alright,heresagoodpuzzleforyouguys.ImworkingonthisfunctionthatfetchesJSONfromaPH ... [详细] 蜡笔小新   2023-03-11 15:16:45 javascript 跨浏览器兼容的CustomEvent 如何解决《跨浏览器兼容的CustomEvent》经验,为你挑选了1个好方法。 ... [详细] 蜡笔小新   2023-03-11 14:57:36 javascript jQuery - 不使用输入类型搜索 如何解决《jQuery-不使用输入类型搜索》经验,为你挑选了2个好方法。 ... [详细] 蜡笔小新   2023-03-11 14:48:51 javascript 我可以使用而不是转到#location吗? 如何解决《我可以使用而不是转到#location吗?》经验,为你挑选了2个好方法。 ... [详细] 蜡笔小新   2023-03-11 14:46:44 author-avatar ABC张大脾气 这个家伙很懒,什么也没留下! Tags | 热门标签 postman react json chrome console firebug layout bootstrap base64 dialog css html5 v8 jquery 微信开发 firefox hybrid label js dom javascript build chart.js 上传 cookies hover checkbox iframe focus view RankList | 热门文章 1JavaWeb 简易留言系统 2两个日期之间计算月份和天数 3如何在Twilio中禁用自动SMS响应? 4百度飞桨领航团零基础Python速成营 课程总结2 5使用Struts2实现数据校验 6从redux中的reducer中获取ID 7php中如何将字符串转化成字符数组 8selenium webdriver常用方法 9在Pandas DataFrame上选择条件列 10CSS中的position:relative理解 11如何计算小数点前后的位数? 12Python 学习(七)数据库操作 13DSP之TMS320F28335学习总结与笔记(二)————ADC模块 14os.FindProcess(pid)之后的os.Process.Wait()适用于不在linux上的Windows 15dedecms后台编辑器图片上传框乱码解决方法 PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具 Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有      


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3