svg viewBox和视口比例不匹配-preserveAspectRatio属性详解

1.viewBox属性

svg width和height:最终显示的区域
viewBox:画图的地方
最终就是吧viewBox里面所画的图按照相应的规则拉伸在svg的区域显示

2.preserveAspectRatio属性

preserveAspectRatio="alignment [meet|slice]"

第一个参数alignment(viewBox和视口的对齐方式)取值如下:在这里插入图片描述

第二个参数取值:

  • meet 说明符在图形超出视口时候会对图形适当缩小调整适配可用的空间
  • slice 说明符直接裁剪超出视口的部分

preserveAspectRatio取值示例:

  • preserveAspectRatio=“none”
    在 viewBox和视口宽高比不同时缩放图像,此时图像不会被等比例缩放,会被拉伸、挤压、变形。
  • preserveAspectRatio=“xMidYMid meet” 这是默认取值
  • preserveAspectRatio="xMinYMin slice "

3.简单举例

<svg version="1.1"
     baseProfile="full"
     width="600" height="300"
     xmlns="http://www.w3.org/2000/svg"
     viewBox="0 0 40 30"
     style="border:1px solid #ff0000"
     >
  <rect x="10" y="5" width="20" height="15" fill="#cd0000"/>
</svg>

最后显示结果:
在这里插入图片描述

4.举例详解

viewBox
其实就是先算出宽和高放大比例,这里宽放大了600/40 = 15倍,高放大了300/30 = 10倍,然后如果是meet就宽和高就统一放大较小的倍数(10倍),slice就是统一放大较大的倍数(15倍),之后按照对齐方式放置到svg中,slice超出视口的部分会被裁减。

5.改变preserveAspectRatio="xMinYMin slice"属性看看结果

在这里插入图片描述
分析:
在这里插入图片描述
这是viewBox和视口左上角对齐

6.改变preserveAspectRatio="xMaxYMax slice"属性看看结果

在这里插入图片描述
右下角对齐
在这里插入图片描述
在这里插入图片描述

7.改变preserveAspectRatio="xMidYMid slice"属性看看结果

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
SVG的alignment-baseline属性用于定位SVG元素内部的文本或图形元素的垂直对齐方式。它定义了基线(baseline)相对于元素的垂直位置。 alignment-baseline属性可以应用于所有可定位的SVG元素,包括文本元素(<text>、<tspan>等)和图形元素(<rect>、<circle>等)。 alignment-baseline属性有以下几个可选值: 1. auto:表示使用默认的对齐方式。对于文本元素,默认值是baseline,对于图形元素,默认值是中心对齐。 2. baseline:将元素的基线与父元素的基线对齐。这是默认对齐方式,使得文本元素的基线沿着父元素的底部对齐。 3. before-edge:将元素的顶部与父元素的前沿对齐。前沿是指基线之上的最高点。 4. text-before-edge:将元素的顶部与父元素的文本前沿对齐。文本前沿是指文本行之上的最高点。 5. middle:将元素的中心与父元素的中心对齐。 6. central:将元素的中心与父元素的中心对齐。与middle相同,只是为了保持与CSS的一致性。 7. after-edge:将元素的底部与父元素的后沿对齐。后沿是指基线之下的最低点。 8. text-after-edge:将元素的底部与父元素的文本后沿对齐。文本后沿是指文本行之下的最低点。 9. ideographic:与baseline对齐,但基线的位置略有不同。在某些字体中,ideographic与baseline对齐可以更好地呈现东亚文字。 10. alphabetic:与baseline对齐,但基线的位置略有不同。在某些字体中,alphabetic与baseline对齐可以更好地呈现拉丁文字。 这些值可以通过CSS样式或直接在SVG元素的属性中指定。通过调整alignment-baseline属性的值,可以精确控制SVG元素内部文本或图形元素的垂直对齐方式,以满足具体的设计需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊啊啊~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值