首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SVG的动态之美-搜狗地铁图重构散记

也就是说,地图必须是“矢量的”[注]; 居中某一个点则必须知道此点的坐标信息,然后结合浏览器坐标体系viewport尺寸计算出正确的展示内容; 完整展示某个轮廓则必须知道此轮廓的尺寸以及坐标,然后结合浏览器坐标体系...handler节点负责直接响应手势操作,拖拽、缩放等操作首先会改变handler的transform样式; container节点是svg容器,负责以浏览器窗口为参考将地铁图居中; view节点是所有与地铁图展示相关内容的容器...container节点的尺寸会影响它自身的lefttop,上图中红色标注是container节点居中的偏移量: 1 Offset.x = (container.width - window.innerWidth...THEN 往右拖动的最大距离MaxX = Offset.x - BBox.x 往左拖动的最大距离MinX = ViewBox.width-(Offset.x - BBox.x + Viewport.width...) 往下拖动的最大距离MaxY = Offset.y - BBox.y 往上拖动的最大距离MinY = ViewBox.height-(Offset.y - BBox.y + Viewport.height

2.1K01
您找到你想要的搜索结果了吗?
是的
没有找到

我至今没想到,我也能在 CSS 中实现 SVG 动画了

这个属性取值由四个数字组成,分别是:min-x、min-y、widthheight,中间用空格或逗号分隔。它们一起指定了我们希望浏览器呈现多少 SVG 图形。...首先我们创建一个 svg 元素,用于创建“汉堡”菜单图形: <line x1="0" y1="50%" x2="100%" y2="50%" class...其中,x1 y1 代表直线的起点坐标,而 x2 y2 代表直线的终点坐标。你会发现我使用相对单位 % 来设置位置,这是一种确保图像内容调整大小以适应包含 SVG 元素的简单方法。...因此,为了使这种级别的控制成为可能,我们将使用 viewBox 属性。 在本例中,我将其转换为 100 x 100 像素的 viewBox。 让我们确保图标居中并且大小合适。...我们知道画布的边缘是 0 100,所以很容易计算出线的开始结束位置: <line x1="12" y1="12" x2="88" y2="88" class="mute__strikethrough

58110

解锁SVG新姿势:ChatGPT绘制图标+SVG Symbol自动导入

注意要求图像大小为64*64,图像内容需在viewBox居中。 3.2 绘制一个用于掘金的拟物化“矿石”图标 绘制一个64*64的“矿石”图标,以svg格式输出。...该图标用于表示社区中的金币,图标风格应偏向拟物化风格,整体需符合掘金社区的气质,并确保图像内容需在viewBox居中。...图标风格应偏向拟态化风格,整体需符合掘金社区的气质,并确保图像内容需在viewBox居中。...import "@/images/svg/rough.svg"; 5 总结 本文主要介绍了两个方法,分别是使用ChatGPT自动生成SVG代码使用Webpacksvg-sprite-loader自动导入...综上所述,通过使用ChatGPT自动生成SVG代码使用Webpacksvg-sprite-loader自动导入SVG Symbol,我们可以更加便捷地在代码中使用SVG图标,提高开发效率代码质量。

3.2K10

使用 SVG Vue.Js 构建动态树图

基于 SVG Vue.js 框架的强大功能,我们可以轻松创建基于数据驱动、可交互可配置的图表与信息图。...该图是一个三次贝塞尔曲线的集合,它基于用户提供的数据,从单点出发,并在不同的点结束,且点点之间的距离相同。因此,该图会响应用户输入的内容。...中间的两对坐标是: 贝塞尔控制点 #1 (x1,y1) 贝塞尔控制点 #2 (x2,y2) 基于这些点实现的路径是一条平滑曲线。如果没有这些控制点,这条路径就是一条笔直的线!...viewBox 由四个数字组成,顺序需要保持一致 —— min-x,min-y,width,height。 ......家庭作业 尝试基于本文中介绍的逻辑在垂直模式下创建相同的图表。 如果你认为,它是交换坐标系中的 x y 值一样简单的话,那么你是对的!

6.4K50

svg.js教程及使用手册详解(一)

做毕设的时候,因为要使用到画图自定义动画,所以接触到了SVG。网上关于SVGCanvas的对比很多,具体的辨析这里就不赘言。...SVG(Scalable Vector Graphics,可缩放矢量图形)是基于XML、用于描述二维矢量图形的一种图形格式。SVG由W3C制定,是一个开放标准。 ...draw.viewbox({ x: 0, y: 0, width: 297, height: 210 }) 如果没有任何参数,那么viewbox就直接返回一个空的: var box = draw.viewbox...() viewbox() 方法可以有zoom属性, var box = draw.viewbox() var zoom = box.zoom 如果viewbox中的的大小实际的SVG画布的大小相同...)     ]]>   今天说了svg.js的简介,检测支持度,创建svgviewbox内容,下面将持续更新svg.js的其他方法的用法,敬请关注!

7.8K20

SVG绘制饼状图

一些版本上带来的不同 关于两者 一个是xml一个是html 一个属于操作xml的内容,一个属于操作html的内容。...] [11.png] 此时有一个起始位置,一个终止位置,一个x轴,一个y轴 [12.png] 大弧小弧的问题 是使用较长的弧线,还是较短的弧线。...20% * 2π 即可得出当前的弧度,依次运算出弧度即可 分别计算如下 项目 弧度数 A 0.4π B 0.8π C 0.2π D 0.6π 计算圆弧的xy x使用sin y使用cos 计算分别的x...y,由于已经拥有r需要确认起点 其中r为10,需要加上圆心坐标(20,20) 项目 x y A 20 20-10=10 这里需要注意坐标系的不同 此时 <svg xmlns="http://www.w3...如果以极坐标为准,即x轴正方向为准的,如下[14.png] 接着计算结束坐标 同样的带入计算 项目 x y A 29 16 <svg xmlns="http://www.w3.org/2000/svg

2.6K20

Power BI着色地图自适应画布大小

难点在于Return后的内容,CONCATENATEX串联起了所有地区的图形以及数据标签。这里对viewbox进行了自定义,这是地图可以自适应画布的关键。...viewboxwidth、height是什么关系? viewbox有四个参数 例如 0 0 649 640表示X轴从0开始,Y轴从0开始,宽度649,高度640的图形。...width=649 height=640看上去viewbox定义了相同大小的图形。但是本质有所不同。...前端专家张鑫旭老师有个精彩的比喻: width、height就像整个计算机屏幕,viewBox就是截屏工具选中的那个框框,最终的呈现就是把框框中的截屏内容再次在显示器中全屏显示!...而[X_省份图形][Y_省份图形]替换viewbox的前两个参数,意味着这是”截屏“的起点。 以上是地图自适应画布的完整逻辑。前期比较辛苦的是每个地区的图形需要整理到报表中,但好在只需要整理一次。

1.8K30
领券