d3中的图表是使用SVG绘制的,所以图表适应实质还是SVG的自适应大小。

为此,对于图表的父元素比如div.container 元素,自然就是使用类似百分比布局的方式实现放缩:

.container{height:80%;width:80%;
}

那么其中的svg元素就是类似这样的样式:

svg{height:100%;width:100%;
}

绘制SVG时候代码改为如下:

var svg = d3.select(".container").append("svg").attr("preserveAspectRatio", "xMidYMid meet").attr("viewBox", "0 0 400 400")

而不是常规的:

...
.attr("width", "400")
.attr("height", "400")

具体实现原理可自行查询关于preserveAspectRatioviewBox 的详细内容,可以理解为对整体实现了放大缩小,因为我们没有在其它地方修改关于width 和 height 的代码。

效果:

参考链接:
http://stackoverflow.com/questions/16265123/resize-svg-when-window-is-resized-in-d3-js
http://soqr.fr/testsvg/embed-svg-liquid-layout-responsive-web-design.php


此文档的作者:justforuse
Github Pages:justforuse

d3中图表大小自适应区域大小相关推荐

  1. picturebox显示服务器图片大小,WinForm中实现picturebox自适应图片大小的方法

    本文实例讲述了winform中实现picturebox自适应图片大小的方法.分享给大家供大家参考,具体如下: picturebox控件共有两种载入图片方式,分别为: picturebox1.backg ...

  2. QT中在label中插入图片自适应label大小等比缩放

    一.代码如下 QImage *img_mainicon;//主图标显示在右上角lable中img_mainicon =new QImage;//新建一个image对象img_mainicon-> ...

  3. Photoshop - 怎么让画布大小自适应图像大小?

    使用Photoshop设计好图像后,如果想要画布的大小刚好适合图像的大小,该如何去操作呢?下面介绍详细操作步骤. 方法 / 步骤 1.打开Photoshop软件,进入到要调整画布大小的文档中,进入文档 ...

  4. 使用rem,使字体大小自适应屏幕

    rem是CSS3新增的一个相对单位(root em,根em).这个单位与em区别在于使用rem为元素设 定字体大小时,仍然是相对大小,但相对的只是HTML根元素.这个单位可谓集相对大小和绝对大小的优点 ...

  5. html5纯css字体大小自适应设置

    css 字体大小自适应样式设置篇 字体可以设置大小使用css font-size来实现,有时需要对字体大小根据浏览器分辨率来判断后自适应大小. 在CSS 2.0中字体大小自适应是难实现的,一般使用JS ...

  6. echarts 坐标自适应_echarts 同一页面,多个图表 页面大小自适应

    // 路径配置 require.config({ paths: { echarts: './js' } }); // 使用 require( [ 'echarts', 'echarts/chart/l ...

  7. 5 控件固定大小_【聊技术】在Android中实现自适应文本大小显示

    本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...

  8. HTML设置字体大小自适应屏幕与echarts图表颜色根据数据大小实时刷新图表颜色

    设置html文字大小根据页面大小自适应,在使用rem之前是使用的px和百分比,后来发现页面缩放或在小屏幕的电脑显示不尽人意,后改用rem,写法如:font-size: .21rem;或font-siz ...

  9. 【聊技术】在Android中实现自适应文本大小显示

    本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...

最新文章

  1. c linux new使内存耗尽_C/C++的内存泄漏检测工具Valgrind memcheck的使用经历
  2. sql server 2000 删除重复数据
  3. 使用adb命令控制Android
  4. nodejs全局变量第一次没赋值要第二次才有是为什么_【NodeJS】async 和 await 的本质...
  5. [linux] 如果修改用户的密码
  6. Visual Studio 2008 查找耗时函数 C++ Profiler 性能 优化
  7. boost::allocator_destroy的实例
  8. 大数据十三五规划将出台 激活相关行业万亿产值
  9. 打造全键盘操作的PDF阅读器
  10. 软考 信息安全工程师(第二版)笔记-第1章 网络信息安全概述
  11. intel wifi 5100agn linux驱动,intel5100agn驱动
  12. thinkpadt410接口介绍_Thinkpad-T410 T410S笔记本左右接口以及硬件设备详细介绍!
  13. python爬取贴吧网页信息
  14. R语言输出时,中文变成 \u98ce\u901f \u592a\u9633\u8f90\u5c04
  15. 第三周总结(2022.10.31~2022.11.4)
  16. C++使用windows API实现https站点的访问
  17. 手机与座机号码正则表达式/特殊字符
  18. RealFlow在线教程翻译(2)——Foam with SPH Fluids(基于平滑粒子流体动力学算法(SPH)的流体泡沫)
  19. nextcloud php 部署,CentOS7环境部署Nextcloud
  20. 微信小程序催生新的创业机会 阿拉丁为首批乘风破浪者

热门文章

  1. 企业使用加密软件的原因有哪几点?
  2. Dubbo源码解析:基于注解配置原理解析
  3. js控制浏览器放大或者缩小
  4. 应用案例 | 打造智慧港口,广东某集装箱公司积极推进港口转型
  5. 靠谱的app加固分享
  6. python代码图片头像_60行Python代码一键拼出你的微信好友图片墙!
  7. 精诚软件|CRM系统是怎么解决这些问题的?
  8. 服务器补丁信息,服务器补丁管理|如何修补服务器?-ManageEngine补丁管理器升级版...
  9. 三八妇女节送什么礼物最好?妇女节礼物推荐
  10. 揭阳疾控中心实验室装修事项