首页 > 其他分享 >svg标签和图片

svg标签和图片

时间:2024-12-25 15:20:25浏览次数:3  
标签:定义 svg stroke 坐标 标签 属性 绘制 图片

svg是基于XML语法的图像格式,全称:Scalable Vector Graphics,即可缩放矢量图。

svg图片可以加载。

svg可以绘制基本图形,如:直线、圆形、矩形、多边形、路径等,下面就详细介绍下。

1.绘制线条

语法:<line/>,单标签

基本属性:

x1,起始点x坐标

y1,起始点y坐标

x2,结束点x坐标

y2,结束点y坐标

stroke-width:定义矩形的边框宽度

stroke:定义矩形边框的颜色

示例:

<!-- 绘制直线 -->
<svg width="300" height="30">

    <line x1="20" y1="10" x2="180" y2="20" stroke-width="3" stroke="red"/>
</svg>

2.绘制矩形

语法:<rect/>,单标签

属性:

width:定义矩形宽度

height:定义矩形高度

fill:定义矩形的填充颜色

fill-opacity:定义填充颜色的不透明度,值:0 ~ 1

stroke-width:定义矩形的边框宽度或轮廓厚度

stroke:定义矩形边框的颜色

stroke-opacity:定义描边颜色的不透明度,值:0 ~ 1

stroke-linecap:笔画笔帽属性,即线条末尾样式,有:butt:没线帽,round:圆形,square:方形

stroke-dasharray:虚线笔画属性,数字序列如:20,10,

![](/i/l/?n=24&i=blog/2241639/202412/2241639-20241225150549654-837475683.png)


x:起始点x坐标

y:起始点y坐标

rx:定义x轴方向的圆角长度

ry:定义y轴方向的圆角长度

示例:

<svg>
   <rect width="200" height="50" fill="yellow" 
    stroke-width="1" stroke="red"/>
</svg>

3.绘制圆形

语法:<circle/>,单标签

属性:

cx:定义圆形中心的x坐标,默认为坐标原点0

cy:定义圆形中心的y坐标,默认为坐标原点0

r:定义圆形的半径

fill:定义矩形的填充颜色

fill-opacity:定义填充颜色的不透明度,值:0 ~ 1

stroke-width:定义矩形的边框宽度

stroke:定义矩形边框的颜色

stroke-opacity:定义描边颜色的不透明度,值:0 ~ 1

示例:

<svg width="300" height="80">
    <circle cx="40" cy="40" r="30" />
    <circle cx="100" cy="40" r="30" fill="transparent" 
        stroke-width="5" stroke="blue"/>
</svg>

4.绘制椭圆形

语法:<ellipse/>,单标签

除了有:fill、stroke、fill-opacity、stroke-width、stroke-opacity属性外,还有属性:

cx:椭圆中心的x坐标

cy:椭圆中心的y坐标

rx:定义椭圆水平半径

ry:定义椭圆垂直半径

示例:

<!-- 绘制椭圆 -->
<svg width="300" height="100">
    <ellipse cx="50" cy="40" rx="40" ry="20" />
    <ellipse cx="150" cy="40" rx="40" ry="20" fill="transparent" 
        stroke-width="5" stroke="blue"/>
</svg>

5.绘制多边形

语法:<polygon/>,单标签

同样有fill、stroke、fill-opacity、stroke-width、stroke-opacity属性外,还有属性:

points,多边形每个顶点的x,y坐标,形式为:100,20 150,35 160,70
<!-- 绘制多边形 -->
<svg width="500" height="200">

    <!-- 三角形 -->
    <polygon points="10,10 100,45 60,60" fill="lime" stroke-width="1" stroke="red"/>
    <!-- 长方形 -->
    <polygon points="120,10 190,10 190,60 120,60" fill="lime" stroke-width="1" stroke="red"/>
    <!-- 五角星 -->
    <polygon points="300,10 240,198 398,78 210,78 360,198" fill="grey" stroke-width="1" stroke="blue"/>
</svg>

6.绘制多线条(折线)

语法: <polyline/>,单标签

属性同<polygon/>,参加上述。

绘制的区域不会进行封闭。

示例:

<!-- 绘制多边形 -->
<svg width="500" height="200">    
    <!-- 折线 -->
    <polyline points="10,10 100,45 150,20 180,60 210,10" 
        fill="none" stroke-width="1" stroke="red"/>
</svg>

值得注意:绘制折线默认会有填充色,可通过设置fill属性为none值去掉填充色。

7.绘制文本

基本语法:<text></text> ,双标签.

属性:

x,文字起始点左下角x坐标

y,文字起始点左下角y坐标

fill,文字颜色

transform,文字变换,如:rotate、scale

font-size,文字大小

text-anchor,对齐方式,可选值有:start、center、end

示例:

<!-- 绘制文本 -->
<svg width="500" height="110">
    <text x="20" y="35" fill="red" >0基础学习HTML</text>
    <!-- 旋转文字 -->
    <!-- rotate(20 200,20) 第一个为角度,后面为旋转中心点坐标 缺省时为坐标原点0,0-->
    <text x="180" y="35" fill="blue" transform="rotate(20 200,20)">0基础学习HTML</text>
    <!-- 多行文本 -->
    <text x="20" y="60">
        多行文本
        <tspan x="20" y="80">第一行文本</tspan>
        <tspan x="20" y="100">第二行文本</tspan>
    </text>
</svg>
<br>
<!-- 给文本添加超链接 -->
<svg width="500" height="50" xmlns:xlink="http://www.w3.org/1999/xlink">
    <a xlink:href="https:www.baidu.com" target="_blank">
        <text x="20" y="20" fill="blue">我时一个超链接文本</text>
    </a>
</svg>

8.绘制路径

基本语法: <path/> 单标签

重要属性:

d,绘制属性(draw的缩写),常用的绘制命令有:

    M命令,moveto缩写,表示绘制的起点坐标,如:M20 10或M 20 10或M20,10或M 20,10;

    L命令,lineto的缩写,表示绘制一条直线,如:l50 10或者l 50 10,表示从上一个结束点到(50,10)绘制一条直线;

    H命令,水平线到

    V命令,垂直线到

    C命令,curveto,三次贝塞尔曲线,如:C 150,-300 300,0 50,150 100,200

    S命令,平滑曲线

    Q命令,绘制二次贝塞尔曲线,要定义控制点和终点坐标,如:q 150 -300 300 0,表示控制点是(150,-300),终点坐标(300,0),如图示:

    ![](/i/l/?n=24&i=blog/2241639/202412/2241639-20241225151007090-1106774094.png)

    T命令,光滑二次贝塞尔曲线to

    A命令,椭圆弧

    Z命令,closepath闭合路径

命令区分大小写,大写表示绝对定位,小写表示相对定位,如图示:

代码示例:

<!-- 绘制path -->
<svg width="500" height="160">
    <!-- 通过path绘制一个三角形 -->
    <path d="M20 10 L60 36 L10 50" fill="blue"/>
    <!-- 绘制一条二次贝塞尔曲线 -->
    <path d="M120 40 Q175 -20 230 40" fill="none" stroke="red"/>
    <!-- 绘制一条三次贝塞尔曲线 -->
    <path d="M300 40 C300,0 350,0 320,80 430,160" fill="none" stroke="red"/>
    <!-- 绘制一条平滑曲线 -->
    <path d="M20 130 S100,20 150,110 200,40 300,140" fill="none" stroke="red"/>
</svg>

9. 标签分组

语法:<g></g>双标签

含义:使用该标签对绘图元素进行分组,可以在g标签上添加公共属性,如:fill

<!-- 通过g标签对相同属性的标签进行分组 -->
<svg width="500" height="100">
    <g font-size="20" fill="blue" text-anchor="middle">
        <text x="20" y="20">一组</text>
        <text x="20" y="45">二组</text>
        <text x="20" y="70">三组</text>
    </g>
</svg>

10.模糊和阴影效果

模糊

语法:<filter id></filter>,经常定义在标签defs下

模糊效果:,设置其属性stdDeviation为一个值来实现,值越大越模糊,需要定义在filter标签内部。

<!-- 模糊和阴影 -->
<svg width="500" height="120">
    <defs>
        <filter x="0" y="0" id="f1">
            <feGaussianBlur stdDeviation="3"/>
        </filter>
    </defs>
    <!-- 未模糊效果 -->
    <rect width="120" height="60" fill="yellow" stroke="blue" stroke-width="2"/>
    <!-- 通过filter属性实现模糊 -->
    <rect x="140" width="120" height="60" fill="yellow" stroke="blue" stroke-width="2" filter="url(#f1)"/>
</svg>

阴影

实现:feOffset和feBlend两个滤镜实现。两个均为单标签。

示例:

<!-- 阴影 -->
<defs>
    <filter x="0" y="0" width="200" height="200" id="f2">
    <!-- SourceAlpha给图形制作一个黑色阴影-->
         <feOffset dx="20" dy="20" in="SourceAlpha"/>
         <!-- 给阴影添加一个模糊 -->
         <feGaussianBlur stdDeviation="10"/>
         <!-- SourceGraphic表示在偏移的图像上混合原始图像 -->
         <feBlend in="SourceGraphic"/>
    </filter>
</defs>
<rect y= "80" width="120" height="60" fill="yellow" stroke="blue" stroke-width="2" filter="url(#f2)"/>

11.线性渐变和径向渐变

线性渐变

语法:<linearGradient></linearGradient>

属性:

id,定义了渐变的唯一名称

x1,渐变的起始x位置,百分比

y1,渐变的起始y位置,百分比

x2,渐变的结束x位置,百分比

y2,渐变的结束y位置,百分比

颜色用单标签stop设置,如:

offset:定义渐变颜色的开始和结束位置,其值是相对位置的百分比

stop-color:用于定义渐变的颜色
<!-- 线性渐变和径向渐变 -->
<svg width="500" height="200">
    <defs>
        <linearGradient x1="0%" y1="0%" x2="100%" y2="100%" id="l1">
            <stop offset="20%" stop-color="rgb(255,255,0)"/>
            <stop offset="100%" stop-color="rgb(255,0,0)"/>
        </linearGradient>
    </defs>
    <!-- 线性渐变 -->
    <rect width="120" height="60" fill="url(#l1)"/>
</svg>

径向渐变

语法:<radialGradient></radialGradient>双标签

属性有:

id,定义了渐变的唯一名称

cx,定义最外面圆x

cy,定义最外面圆x

r,定义最外面圆半径

fx,定义了最里面的圆

fy,定义了最里面的圆

颜色也是使用stop实现

<!-- 径向渐变 -->
<defs>
    <radialGradient id="r1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
        <stop offset="0%" stop-color="rgb(255,255,255)"/>
        <stop offset="100%" stop-color="rgb(0,0,255)"/>
    </radialGradient>
</defs>
<rect x="200" width="120" height="60" fill="url(#r1)"/>

原文链接:https://blog.csdn.net/seevc/article/details/132669663

标签:定义,svg,stroke,坐标,标签,属性,绘制,图片
From: https://www.cnblogs.com/baozhengrui/p/18630475

相关文章

  • 如何解决UEDITOR复制粘贴WORD图片的问题
    编辑器:百度ueditor前端:vue2,vue3,vue-cli,react,html5需求:复制粘贴word内容图片,word图片转存交互,导入pdf,导入PowerPoint(PPT)要求:开源,免费,技术支持用户体验:Ctrl+V快捷键操作平台:Windows,macOS,Linux,中标麒麟,银河麒麟,统信UOS,信创国产化CPU:x86(Intel,AMD,兆芯,海......
  • VUE项目实现TINYMCE编辑器WORD图片上传
    编辑器:TinyMCE需求:复制粘贴word内容图片,图文混排,图片转存要求:开源,免费,技术支持前端:vue,vue2-cli,vue3-cli后端:java,jsp,springboot,asp.net,php,asp,.netcore,.netmvc,.netform平台:Windows,macOS,Linux,中标麒麟,银河麒麟,统信UOS,信创国产化CPU:x86(Intel,AMD,兆......
  • 后台编辑器无法上传图片或编辑文字,如何解决?
    在使用后台编辑器时遇到无法上传图片或编辑文字的问题。以下是详细的解决方案:检查文件路径:根据描述,点击上传按钮时提示文件不存在。请确认上传文件的路径是否正确,确保文件存在于指定位置。检查文件上传目录的权限设置,确保有写入权限。切换浏览器模式:对于IE浏览器兼容性......
  • shiro权限验证标签
    shiro权限验证标签|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|-------------|-------------|------......
  • jstl一些标签 中timestamp类型在页面去掉时分秒!
    jstl一些标签中timestamp类型在页面去掉时分秒!|Id|Title|DateAdded|SourceUrl|PostType|Body|BlogId|Description|DateUpdated|IsMarkdown|EntryName|CreatedTime|IsActive|AutoDesc|AccessPermission||-------------|-------------|--------......
  • 写一个方法使用滚轮对图片进行放大缩小
    在前端开发中,使用滚轮对图片进行放大缩小通常涉及到监听鼠标的滚轮事件(wheel或mousewheel,取决于浏览器和库的支持),并根据事件的滚动方向来调整图片的尺寸。以下是一个简单的示例,展示如何使用原生JavaScript实现这一功能:<!DOCTYPEhtml><htmllang="en"><head><metachars......
  • html5中的meta标签keywords有什么作用?
    在HTML5中,<meta>标签的keywords属性曾经被用来为网页提供关键词,以便搜索引擎能够更好地理解和索引网页内容。然而,这个属性的实际作用在近年来已经大大减弱。过去,搜索引擎会依赖keywords属性来了解网页的主题和内容。网站开发者会在keywords属性中填入一系列与网页内容相关的关键......
  • html5中的meta标签revised有什么作用?
    在HTML5中,并没有一个官方定义的revised属性或meta标签。可能你是指的meta标签中的content属性被用来表示页面的修订日期或版本号,但这并不是HTML5标准中的一部分。通常,meta标签被用于提供有关HTML文档的元数据。这些元数据不会显示在页面上,但是对于机器是可读的。它可用于浏览器(如......
  • html5中的meta标签scheme有什么作用?
    在HTML5中,<meta>标签的scheme属性主要用于定义用于解释content属性值的方案。然而,这个属性在HTML5中已经不再被推荐使用,并且在HTML5规范中已被移除。在HTML4.01或更早的版本中,scheme属性可能更常见。在早期的HTML版本中,scheme属性被用来指定一个解释content属性中所包......
  • 你有使用过bgsound标签吗?说说它的作用
    bgsound标签的作用及使用概述在前端开发中,bgsound标签曾被用于在网页中设置背景音乐,主要适用于InternetExplorer(IE)浏览器。随着Web技术的演进和浏览器兼容性的提升,这个标签已经逐渐被更现代、更兼容的音频嵌入方法所取代,但在某些特定场景或旧版IE浏览器的支持需求中,它仍然具有一......