返回顶部
首页 > 资讯 > 前端开发 > VUE >HTML5中SVG如何绘制自适应的菱形
  • 623
分享到

HTML5中SVG如何绘制自适应的菱形

2024-04-02 19:04:59 623人浏览 安东尼
摘要

这篇文章主要介绍HTML5中SVG如何绘制自适应的菱形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问题:需要绘制一个自适应尺寸的菱形,并且还有边框,一般在流程图中很常见,效果如下如

这篇文章主要介绍HTML5中SVG如何绘制自适应的菱形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

问题:需要绘制一个自适应尺寸的菱形,并且还有边框,一般在流程图中很常见,效果如下

HTML5中SVG如何绘制自适应的菱形

如果没有边框的话,用 CSS clip-path 也能很方便的裁剪出一个菱形,但是边框不太好处理(通常用嵌套一层的方式或者投影来模拟,但是效果不太好),这里介绍一个 SVG 方式,充分利用缩放特性来实现这样一个效果

一、SVG 从何而来

SVG 通常都不需要手写代码(除少量基本形状以外),一般都可以用设计软件生成(SVG 在设计之初就是给机器看的,非常不利于人工阅读)。比如,我这里是用 Figma 绘制的(一个多边形就搞定),随便什么尺寸都行

HTML5中SVG如何绘制自适应的菱形

然后就得到了这样一段 SVG

<svg width="167" height="90" viewBox="0 0 167 90" fill="none" xmlns="Http://www.w3.org/2000/svg">
<path d="M2.10786 45L83.5 1.13597L164.892 45L83.5 88.864L2.10786 45Z" fill="#FFECC7" fill-opacity="0.6" stroke="#FFB200" stroke-width="2"/>
</svg>

在浏览器中效果如下

HTML5中SVG如何绘制自适应的菱形

二、SVG 的缩放特性

现在 SVG 有一个默认尺寸,如果手动改变 SVG 的默认尺寸,如下

HTML5中SVG如何绘制自适应的菱形

是不是有点类似于object-fit:contain的效果?如果想整个铺满,强制拉伸该怎么做呢?这里需要用到 SVG 的缩放属性preserveAspectRatio,表示当 SVG 的实际尺寸和viewBox尺寸不一致时的缩放规则,有点类似于 object-fitobject-position 组合。这里的取值非常多,默认值是xMidYMid,表示强制等比缩放,并且居中对齐。

有兴趣的可以参考这篇文章:理解SVG viewport,viewBox,preserveAspectRatio缩放,案例非常详细

https://www.zhangxinxu.com/Wordpress/2014/08/svg-viewport-viewbox-preserveaspectratio/

这里我们不需要等比缩放,可以直接设置为none

<svg preserveAspectRatio="none">
...
</svg>

效果如下

HTML5中SVG如何绘制自适应的菱形

三、SVG 的描边缩放

在设置不等比缩放后,其实描边还有一点小问题,不同尺寸下,描边的粗细不同,如下

HTML5中SVG如何绘制自适应的菱形

有没有办法让描边不会跟随 SVG 尺寸缩放呢?当然也是有的!SVG 中有一个属性 vector-effect可以控制描边不缩放,永远保持默认设置的尺寸,有兴趣的可以参考这篇文章 CSS vector-effect与SVG stroke描边缩放,这里只需要在 path添加属性vector-effect="non-scaling-stroke"就行了,表示描边不跟随缩放,如下

<svg preserveAspectRatio="none">
	<path vector-effect="non-scaling-stroke">...</path>
</svg>

HTML5中SVG如何绘制自适应的菱形

这样就实现了一个自适应尺寸的菱形了,描边也不会缩放,完整 SVG 代码如下

<svg width="100%" height="100%" preserveAspectRatio="none" viewBox="0 0 167 90" fill="none" xmlns="http://www.w3.org/2000/svg">
  <path vector-effect="non-scaling-stroke" d="M2.10786 45L83.5 1.13597L164.892 45L83.5 88.864L2.10786 45Z" fill="#FFECC7" fill-opacity="0.6" stroke="#FFB200" stroke-width="2"/>
</svg>

四、SVG 内联 base64

通常情况下,这样一个图形用作背景图更为合适(SVG代码放在页面上不太美观)。让人惊讶的是,将 SVG 转换成 base64 后,以上特性仍然是存在的。这里使用张鑫旭老师的 SVG在线压缩合并工具,如下

HTML5中SVG如何绘制自适应的菱形

转换后,将这段 base64 直接用作背景就行

div{
  background: url('data:image/svg+xml;base64,PHN2ZyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiB2aWV3Qm94PSIwIDAgMTY3IDkwIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3D3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIHZlY3Rvci1lZmZlY3Q9Im5vbi1zY2FsaW5nLXN0cm9rZSIgZD0iTTIuMTA4IDQ1TDgzLjUgMS4xMzYgMTY0Ljg5MiA0NSA4My41IDg4Ljg2NCAyLjEwOCA0NXoiIGZpbGw9IiNGRkVDQzciIGZpbGwtb3BhY2l0eT0iLjYiIHN0cm9rZT0iI0ZGQjIwMCIGC3Ryb2tlLXdpZHRoPSIyIi8+PC9zdmc+')
}

这样就得到了一个自适应的菱形背景了

HTML5中SVG如何绘制自适应的菱形

以上是“html5中SVG如何绘制自适应的菱形”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: HTML5中SVG如何绘制自适应的菱形

本文链接: https://lsjlt.com/news/97205.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HTML5中SVG如何绘制自适应的菱形
    这篇文章主要介绍HTML5中SVG如何绘制自适应的菱形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!问题:需要绘制一个自适应尺寸的菱形,并且还有边框,一般在流程图中很常见,效果如下如...
    99+
    2024-04-02
  • 如何使用HTML5进行SVG矢量图形绘制
    这篇文章主要介绍了如何使用HTML5进行SVG矢量图形绘制,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。VG 表示可伸缩矢量图形,这是一门用...
    99+
    2024-04-02
  • HTML5中如何使用SVG绘制微信logo
    这篇文章主要为大家展示了“HTML5中如何使用SVG绘制微信logo ”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5中如何使用SVG绘制微信logo ...
    99+
    2024-04-02
  • html5如何绘制图形
    这篇文章主要介绍了html5如何绘制图形,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。html5中是怎么实现绘制图形?html5中可以实现绘...
    99+
    2024-04-02
  • HTML5 SVG中的图形绘制介绍及使用是怎样的
    本篇文章给大家分享的是有关HTML5 SVG中的图形绘制介绍及使用是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。基本形状SVG提供了很...
    99+
    2024-04-02
  • html5如何绘制矩形动画
    这篇文章给大家分享的是有关html5如何绘制矩形动画的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   让我们来看一下Canvas内置的简单几何图形 &mdash; 矩...
    99+
    2024-04-02
  • HTML5 Canvas如何绘制矩形和三角形
    这篇文章主要为大家展示了“HTML5 Canvas如何绘制矩形和三角形”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5 Canvas如何绘制矩形和三角形...
    99+
    2024-04-02
  • HTML5在canvas中如何绘制复杂形状
    这篇文章给大家分享的是有关HTML5在canvas中如何绘制复杂形状的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 一、绘制复杂形状或路径 在简单的矩...
    99+
    2024-04-02
  • 如何使用HTML5 SVG绘制各种雪花图案
    这篇文章主要为大家展示了“如何使用HTML5 SVG绘制各种雪花图案”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用HTML5 SVG绘制各种雪花图案”这...
    99+
    2024-04-02
  • html5-Canvas如何在web中绘制各种图形
    这篇文章将为大家详细讲解有关html5-Canvas如何在web中绘制各种图形,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 在html5中...
    99+
    2024-04-02
  • HTML5 Canvas中绘制矩形的方法
    本篇内容介绍了“HTML5 Canvas中绘制矩形的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在C...
    99+
    2024-04-02
  • HTML5中canvas绘制矩形的方法
    小编给大家分享一下HTML5中canvas绘制矩形的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!<canvas></canvas>只...
    99+
    2023-06-09
  • 如何利用HTML5 Canvas API绘制矩形
    这篇文章主要为大家展示了“如何利用HTML5 Canvas API绘制矩形”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何利用HTML5 Canvas API...
    99+
    2024-04-02
  • 如何使用html5 Canvas绘制基本的图形
    这篇文章主要介绍“如何使用html5 Canvas绘制基本的图形”,在日常操作中,相信很多人在如何使用html5 Canvas绘制基本的图形问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • 如何使用html5 canvas绘制实心原形
    这篇文章主要介绍如何使用html5 canvas绘制实心原形,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!使用 html5 canvas 绘制实心原形。<style> &...
    99+
    2024-04-02
  • 如何理解HTML5中SVG的可缩放矢量图形
    这期内容当中小编将会给大家带来有关如何理解HTML5中SVG的可缩放矢量图形,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 位图与矢量图 以前...
    99+
    2024-04-02
  • 如何理解HTML5中的SVG
    本篇文章为大家展示了如何理解HTML5中的SVG,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。SVG 背景SVG是Scalable Vector Graphics的...
    99+
    2024-04-02
  • 如何使用html5绘制圆形多角图案
    本篇文章为大家展示了如何使用html5绘制圆形多角图案,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。先看看最简单的效果图:代码如下:JavaScript Code复...
    99+
    2024-04-02
  • CSS中如何绘制三角形
    这篇“CSS中如何绘制三角形”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“CSS中如何绘制三角形”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望大家通过这篇文章有所收获,下面让我们一起来看看具...
    99+
    2023-06-08
  • 自定义颜色在Matplotlib柱形图绘制中的应用
    使用Matplotlib库绘制柱形图时如何自定义颜色 Matplotlib是一个功能强大、灵活且易于使用的Python绘图库,可以绘制各种类型的图形,包括柱形图。默认情况下,Matplotlib会自动为柱形图生成一组不同颜色的条...
    99+
    2024-01-17
    自定义颜色 柱形图
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作