关于SVG的preserveAspectRatio问题,如图,不知x轴怎么算的

代码是x=10,图片我给量了是110.不知道怎么算的。
图片描述

阅读 2.6k
1 个回答

SVG元素 中和viewBox搭配的属性为preserveAspectRatio
svg下的图形元素都是在viewBox里绘制的
svg的大小及preserveAspectRatio属性的设置,决定了图形最终显示的位置及大小
关于viewBox和preserveAspectRatio参数的值及相互之间的详细关系,这里不做描述,可参考相关的资料
链接描述

这里说明下问什么红色矩形距离SVG元素块左边的距离是110
问题中,svg标签中没有提供preserveAspectRatio的值,在计算过程中就会使用系统默认的xMidYMid meet
xMidYMid 要求 viewBox的中心点和viewPort的中心点对齐
meet要求svg下的图形元素按比例缩放,要求整个viewbox在viewport能够完整地显示。同时要求竟可能大的放大
红色的矩形元素的大小及长宽比都符合要求

viewBox的中心点和viewPort的中心点对齐的结果是,viewBox距离左边为(400-200)/2=100,距离顶部为0,因为2者高度相同
meet的结果是svg图像没必要缩放,因为高度相同,并且已经完整地显示在viewport中了
那么结合红色矩形属性的x=10,y=10,width=150,height=150

可以计算出红色矩形的距离左边的距离为100+10,顶部的距离为0+10

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进