前端 HTML 5

HTML 5 API

1.HTML 5 拖放

1.源对象和目标对象

**源对象:**指的是我们鼠标点击的一个事物,这里可以是一张图片,一个div,或者一段文本等。
**目标对象:**指的是我们拖动源对象后移动到一块区域,源对象可以进入这个区域,可以在这个区域悬停(未松手),可以松手释放将源对象放置此处(已松手),也可以悬停后离开该区域。

2.拖放相关API

除了源对象和目标对象以外,在拖动的过程中还可以抽象出一个过程对象。
源对象:
dragstart:源对象开始拖放
drag:源对象拖放过程中。(鼠标可能在移动也可能未移动)
dragend:源对象拖放结束
过程对象:
dragenter:源对象开始进入过程对象范围内
dragover:源对象在过程对象范围内移动
dragleave:源对象离开过程对象的范围
目标对象:
drop:源对象被拖放到目标对象内
拖动示咧:

<head>    
<meta charset="UTF-8">    
<meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title>    
<style>        
#drag {            
width: 100px;            
height: 100px;            
background-color: red;            
position: absolute;            
left: 0;            
top: 0;        
}    
</style> 
</head>
<body>    
<div id="drag" draggable="true"></div>    
<script>        
drag.ondragstart = function (event) {            
// 第一步 阻止目标对象的默认行为           
document.ondragover = function (e) {               
 e.preventDefault();            
 }           
  // 第二步 设置目标对象的drop事件       
  document.ondrop = function (e) {                
  drag.style.left = e.clientX - event.offsetX + 'px';                drag.style.top = e.clientY - event.offsetY + 'px';           
   }       
    }    
    </script> 
    </body>

div#drag为我们的源对象,document既为过程对象,又为目标对象。
要实现对源对象的拖动,首先需要将源对象的draggable属性设置为true。
默认地,无法将数据或者元素放置到其它元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。这就需要通过调用ondragover事件的event.preventDefault()方法。
最后,为目标对象设置ondrop事件,改变源对象的left和top值即可

3.dataTransfer对象

在所有拖放事件中,提供一个数据传递对象dataTransfer,用于在源对象和目标对象之间传递数据。 setData() 方法:向dataTransfer对象中存入数据。接收2个参数,第1个表示要存入数据种类的字符串,现在支持以下几种:
text/plain:文本文字
text/html:HTML文字
text/xml:XML 文字
text/uri-list:URL列表,每个URL为一行。
第2个参数为要存入的数据。例入:

event.dataTransfer.setData('text/plain','Hello World');

getData() 方法:从dataTransfer 对象中读取数据。参数为在 setData() 方法中指定的数据种类。例如:

 event.dataTransfer.getData('text/plain');

clearData() 方法:清除dataTransfer 对象中存放的数据。参数可选,为数据种类。若参数为空,则清空所有种类的数据。例如:

 event.dataTransfer.clearData();

setDragImage() 方法:通过img元素来设置拖放图标。接收3个参数,第1个为图标元素,第2个为图标元素离鼠标指针的x轴位移量,第3个为图标元素离鼠标指针的y轴位移量。
例如:

 let source = document.getElementById('source'),    
 icon = document.createElement('img');
icon.src = 'img.png';
source.addEventListener('dragstart',function(ev){    ev.dataTransfer.setDragImage(icon,-10,-10) 
},false)

**e?ectAllowed 和dropE?ect 属性:**这2个属性结合起来设置拖放的视觉效果。
注:IE不支持dataTransfer 对象
例:

<head>    
<meta charset="UTF-8">    
<title>Document</title>    
<style>        
div {            
width: 200px;            
height: 200px;            
border: 3px solid;            
float: left;            
margin-right: 20px;        
}    
</style> 
</head>
<body>    
<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">        <img src="./1.jpg" draggable="true" ondragstart="drag(event)" id="dr ag1">    
</div>    
<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>    <script>        
let drag = function (e) {            
e.dataTransfer.setData("Text", e.target.id);        
}        
let allowDrop = function (e) {            
e.preventDefault();        
}        
let drop = function (e) {           
 e.preventDefault();            
 let data = e.dataTransfer.getData("Text");            e.target.appendChild(document.getElementById(data));       
  }    
  </script> 
 </body>

2.多媒体

1、引入多媒体
<body>    
<audio src="./test.mp3" controls>        
你的浏览器不支持audio  标签  
</audio> 
</body>

2个属性:
**src:**多媒体文件路径
**controls:**显示控制面板
为了做到浏览器兼容,我们可以将多媒体文件的路径写在多个标签里面

 <body>    
 <audio controls>        
 <source src="./test.mp3">        
 <source src="./test.ogg">        
 你的浏览器不支持audio  标签  
 </audio> 
 </body>

要插入视频,只需要将标签换成标签即可

2、相关属性和方法

muted属性:用来设置当前媒体是否开静音,如果设置为true代表开启静音,false为不开启

 <body>    
 <audio controls muted>        
 <source src="./test.mp3">        
 <source src="./test.ogg">        
 你的浏览器不支持audio  标签   
 </audio> 
 </body>

autobuffer属性:设置为true后将实现自动缓冲

<body>    
<audio controls autobuffer>        
<source src="./test.mp3">        
<source src="./test.ogg">        
 你的浏览器不支持audio  标签 
</audio> 
</body>

autoplay属性:设置为自动播放,现在的浏览器也只允许在静默模式下才能自动播放

 <body>    
 <audio controls autoplay>        
 <source src="./test.mp3">        
 <source src="./test.ogg">        
  你的浏览器不支持audio  标签 
 </audio> 
 </body>

loop属性:设置后将会重复播放

 <body>    
 <audio controls loop=true>        
 <source src="./test.mp3">        
 <source src="./test.ogg">        
  你的浏览器不支持audio  标签   
 </audio> 
 </body>

poster属性:设置视频的封面,没有播放时可以显示一张图片

 <body>    
 <video controls poster="./1.jpg">        
 <source src="./test.mp4">        
 <source src="./test.ogv">        
 <source src="./test.swf">        
  你的浏览器不支持video 标签   
 </video> 
 </body>

获取多媒体对象
使用DOM的方法来获取多媒体对象

 const video = document.getElementsByTagName("video")[0];
video.muted = true; // 设置为静音
video.loop = true; // 设置循环播放

volune属性:用于设置音量:

 video.volume = 0.9;

currentTime属性:用于获取多媒体当前所播放的具体时间

 video.currentTime += 10; // 视频播放快进10秒

playbackRate属性:该属性用于设置快进或者快退速度的数字值。值为1时表示以正常速度播放

 video.playbackRate = 8; // 以8倍速度快进

duration属性:用于查看该多媒体的持续时间,也就是时长为多久

 video.duration

音频和视频也有很多可以触发的事件:
play 事件:用于开始播放多媒体
pause事件:用于暂停多媒体
volumechange事件:用于调整多媒体的音量
loademetadata事件:在多媒体的所有元素数据被加载时会触发该事件

3 Web Storage

1、Cookie 存储机制的优缺点

优点:1、简单易用 2、浏览器负责发送数据 3、浏览器自动管理不同站点的Cookie
**缺点:**1、Cookie中存储的数据容量有限,其上限为4KB
2、存储Cookie的数量有限,多数浏览器的上限为30或50个
3、如果浏览器的安全配置为最高级别,那么Cookie则会失效
4、Cookie不适合大量数据的存储,因为Cookie会由每个对服务器的请求来传递,从而造成Cookie速度缓慢效率低下

2、为什么要用Web Storage

localStorage:
localStorage是一种没有时间限制的数据存储方式,可以将数据保存在客户端的硬盘或其他存储器,存储的时间可以是一天,两天,几周或几年

sessionStorage:
sessionStorage指的是针对一个session的数据存储,即将数据保存在session对象中
Web Storage存储机制比传统的Cookie更加强大:
1、Web Storage 提供了易于使用的API接口,只需要设置键值对即可使用
2、在存储方面可以根据用户分配的磁盘配额进行存储
3、提供了使用Java Script 编程的接口

3、使用Web Storage

可以使用setItem()方法来存储一个值,然后通过getItem()方法来获取值
1、在html里面设置localStorage的值

 <body>    
 <script>        
 localStorage.setItem("name", "xiejie");        
 console.log(" 信息以保存!");  
 </script> 
 </body>

2、获取值

 <body>    
 <script>        
 let name = localStorage.getItem("name");        
 console.log(`姓名为${name}`); // 姓名为xiejie    
 </script> 
 </body>

直接进行存值和取值操作:

 <body>    
 <script>        
 localStorage.setItem("name", "xiejie");        
 localStorage.age = 18;        
 console.log(" 信息以保存!");   
 </script> 
 </body>

如果对应的值不是一个字符串,也会自动的被转换为字符串类型:

 <body>    
 <script>        
 localStorage.stu = ['xiejie', 'yajing', 'xizhi'];        
 console.log(" 信息以保存!");   
 </script> 
 </body>

如果要删除本地存储中的一个条目,可以使用removeItem()方法或者直接使用delete运算符

 localStorage.removeItem("name"); 
 // 或者
 delete localStorage.name

如果要彻底删除本地存储中所有的东西,可以使用clear()方法

 localStorage.clear()

4、storage事件

每次将一个值存储到本地存储时,就会触发一个storage事件

key:告诉我们被修改的条目的键。
newValue:告诉我们被修改后的新值。
oldValue:告诉我们被修改前的值
storageArea:告诉我们是本地存储还是会话存储
url:被改变的键的文档地址

4 绘制简单图形

Canvas 主要应用的领域

1、游戏
2、可视化数据(数据图标化)
3、Banner广告
4、未来(模拟器,远程计算机控制,图形编辑器)

1、添加Canvas 元素

就是书写一对标签

<body>    
<canvas width="400" height="300" style="border:1px solid"></canvas> </body>

并不是所有的浏览器都支持Canvas

<canvas width="400" height="300" style="border:1px solid">
</canvas>

还有就是利用 JavaScript里面检测getContext属性是否存在

<body>   
//添加canvas元素
 <canvas id="canvas" width="400" height="300" style="border:1px solid">          
 </canvas>    
 <script>        
 // 在JavaScript中获取canvas 元素       
 const canvas = document.getElementById('canvas');        if(canvas.getContext){            
 console.log("支持");        
 }else{           
  console.log("不支持");        
  }    
  </script> 
  </body>
2、如何绘制图像

添加canvas 元素
在JavaScript中获取canvas 元素
获取到上下文,创建context对象,画布上下文是一个包含用于在画布上绘画方法的对象
使用JavaScript来进行绘制

<body>   
//添加canvas元素
   <canvas id="canvas" width="400" height="300" style="border:1px solid">
   </ canvas>    
   <script>        
   const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       
   const context = canvas.getContext("2d"); //获取上下文,创建 context对象

        //使用JavaScript 来进行绘制    
  context.beginPath(); // 开始路径      
  context.moveTo(10, 10); //移动画笔       
  context.lineTo(100, 100); // 绘画出一条直线    
  context.closePath(); // 闭合路径    
  context.stroke(); // 进行勾勒  
  </script> 
  </body>
3、绘制简单图形
1.绘制直线

用到的方法有3个 :moveTo() 、lineTo() 、stoke()
moveTo() 方法:相当于将画笔移动到某一个坐标
lineTo()方法:勾勒一条线,但是这只是草稿
stoke()方法:根据勾勒的线描边

<body>    
//添加canvas元素
 <canvas id="canvas" width="400" height="300" style="border:1px solid"></ canvas>    
 <script>        
 const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       
 const context = canvas.getContext("2d"); //获取上下文,创建 context对象
       context.moveTo(0, 0);       
  context.lineTo(400, 300);        
  context.moveTo(400, 0);        
  context.lineTo(0, 300);        
  context.stroke();    
  </script> 
  </body>
2.绘制矩形
<body>    
//添加canvas元素
    <canvas id="canvas" width="400" height="300" style="border:1px solid">
    </ canvas>    
    <script>        
    const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       

    const context = canvas.getContext("2d"); //获取上下文,创建 context对象context.moveTo(0, 0);        
    context.lineTo(400, 300);        
    context.moveTo(400, 0);        
    context.lineTo(0, 300);        
    context.strokeStyle = "#ff0000"; //设置勾勒颜色       
    context.stroke();
    </script> 
  </body>

3、绘制图形和弧形

使用arc()方法可以在画布上绘制一个弧形

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bQm1zZc4-1575903630067)(./1554817070130.png)]
要把角度转换为弧度,公式:π/180 * 角度

半圆

<body> 
//添加canvas元素
   <canvas id="canvas" width="400" height="300" style="border:1px solid">
   </ canvas>    
   <script>       
    const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       
     const context = canvas.getContext("2d"); //获取上下文,创建 context对象      context.arc(200, 150, 50, 0, Math.PI, false);        
     context.stroke();    
     </script> 
     </body>

整圆

<body> 
//添加canvas元素
   <canvas id="canvas" width="400" height="300" style="border:1px solid">
   </ canvas>    
   <script>       
    const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       
     const context = canvas.getContext("2d"); //获取上下文,创建 context对象      context.arc(200, 150, 50, 0, Math.PI * 2, false);   
     context.stroke();    
     </script> 
     </body>
4.绘制三角形
<body> 
//添加canvas元素     
<canvas id="canvas" width="400" height="300" style="border:1px solid">
</ canvas>    
<script>       
 const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       
 const context = canvas.getContext("2d"); //获取上下文,创建 context对象       context.moveTo(100, 75);        
 context.lineTo(175, 200);       
  context.lineTo(35, 200);        
  context.fillStyle = "skyblue";        
  context.fill(); // 填充方法会自动闭合路径  
  </script> 
  </body>
5.绘制曲线

二次曲线:

context.quadraticCurveTo(cp1x,cp1y,x,y)
<body> 
   //添加canvas元素
 <canvas id="canvas" width="400" height="300" style="border:1px solid"></ canvas>    
 <script>        
  const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       
 const context = canvas.getContext("2d"); //获取上下文,创建 context对象    context.strokeStyle = "dark";        
 context.beginPath();        
 context.moveTo(0, 200); // 这是起点位置        
 context.quadraticCurveTo(75, 50, 300, 200); // 第一个点是控制点第二个是终点        context.stroke();        
 // 下面绘制的直线用于表示上面曲线的控制点和控制线,控制点坐标即两直线的交点(75,5 0)        
 context.strokeStyle = "#ff00ff";        
 context.beginPath();        
 context.moveTo(75, 50);        
 context.lineTo(0, 200);        
 context.moveTo(75, 50);        
 context.lineTo(300, 200);        
 context.stroke();    
 </script> 
 </body>

三次曲线:

context.bezierCurveTo(cpl1x,cp2y,cp2x,cp2y,x,y);
<body> 
   //添加canvas元素
 <canvas id="canvas" width="400" height="300" style="border:1px solid"></ canvas>    
 <script>        
  const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       
 const context = canvas.getContext("2d"); //获取上下文,创建 context对象    context.strokeStyle = "dark";        
 context.beginPath();        
 context.moveTo(0, 200); // 这是起点位置        
 context.quadraticCurveTo(25,50,75, 50, 300, 200); // 第一个点是控制点第二个是终点        context.stroke();        
 // 下面绘制的直线用于表示上面曲线的控制点和控制线,控制点坐标即两直线的交点(75,5 0)        
 context.strokeStyle = "#ff00ff";        
 context.beginPath();        
 context.moveTo(75, 50);        
 context.lineTo(0, 200);        
 context.moveTo(75, 50);        
 context.lineTo(300, 200);        
 context.stroke();    
 </script> 
 </body>
6.清空画布

使用clearRect()方法可以清除某个矩形范围内的图形:
clearRect(x坐标,y坐标,矩形长,矩形宽)

<body> 
   //添加canvas元素
 <canvas id="canvas" width="400" height="300" style="border:1px solid"></ canvas>    
 <script>        
  const canvas = document.getElementById('canvas'); //在JavaScript中获取Canvas元素       
 const context = canvas.getContext("2d"); //获取上下文,创建 context对象 
  const clearTest = function () {            
  context.clearRect(0, 0, 400, 300);        
  }        
  context.moveTo(100, 75);        
  context.lineTo(175, 200);        
  context.lineTo(35, 200);        
  context.fillStyle = "skyblue";        
  context.fill();
   </script> 
   </body>

5 .SVG

优势:
SVG可被非常多的工具读取和修改(比如记事本)
SVG与JPEG和GIF图像比起来,尺寸更小,且可压缩性更强
SVG是可申缩的
SVG图像可在任何的分辨率下被高质量的打印
SVG可在图像质量不下降的情况下被放大
SVG图像中的文本是可选的,同时也是可搜索的(很适合制作地图)
SVG可以与Java技术一起运行
SVG是开放的标准
SVG文件是纯粹的XML
SVG的主要竞争者是Flash
SVG实例
创建一个SVG文件

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%height="100%"version="1.1"xmlns="http://www.w3.org/2000/ svg">    
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="re d"/> 
</svg>

在HTML 中嵌入SVG 图像

<body>    
<p>Lorem ipsum dolor sit amet.</p>    
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">        
<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill ="red" />    
</svg>    
<p>Lorem, ipsum dolor sit amet consectetur adipisicing.</p> 
</body>

将img标签的src属性设置为一个SVG文件的路径

<body>    
<p>Lorem ipsum dolor sit amet.</p>    
<img src="./1.svg" alt="">    
<p>Lorem, ipsum dolor sit amet consectetur adipisicing.</p> 
</body>

SVG预定义的形状元素
矩形:rect
圆形:circle
椭圆:ellipse
线:line
折线:polyline
多边形:polygon
路径:path

SVG矩形

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%"height="100%"version="1.1"xmlns="http://www.w3.org/2000/ svg">    
<rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1; stroke:rgb(0,0,0)"/>    
</svg>

代码说明:
rect元素的width和height属性可定义矩形的高度和宽度
style属性用来定义css属性
css的fill属性定义矩形的填充颜色(rgb值、颜色名或者十六进制值)
css的stroke-width属性定义矩形边框的宽度
css的stroke属性定义矩形边框的颜色

SVG圆形

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">
    <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="re d"/> 
    </svg>

代码说明:
cx和cy属性定义圆点的x和y坐标。如果省略cx和cy,圆的中心会被设置为(0,0)
r属性定义圆的半径

SVG椭圆

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">    
<ellipse cx="300" cy="150" rx="200" ry="80" style="fill:rgb(200,100,50); stroke:rgb(0,0,100);stroke-width:2"/> 
</svg>

代码说明:
cx属性定义圆点的x坐标
cy属性定义圆点的y坐标
rx属性定义水平半径
ry属性定义垂直半径

SVG线条

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">    
<line x1="0" y1="0" x2="300" y2="300" style="stroke:rgb(99,99,99);stroke -width:2"/> 
</svg>

代码说明:
x1属性在x轴定义线条的开始
y1属性在y轴定义线条的开始
x2属性在x轴定义线条的结束
y2属性在y轴定义线条的结束

SVG折线

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">    
<polyline points="0,0 0,20 20,20 20,40 40,40 40,60" style="fill:white;st roke:red;stroke-width:2"/> 
</svg>

代码说明:
points属性定义折线中每个点的x和y坐标

SVG多边形

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">    
<polygon points="220,100 300,210 170,250" style="fill:#cccccc; stroke:#0 00000;stroke-width:1"/> 
</svg>

SVG路径
标签用来定义路径。
M = moveto
L = lineto
H = horizontal lineto
V = vertical lineto
C = curveto
S = smooth curveto
Q = quadratic Belzier curve
T = smooth quadratic Belzier curveto
A = elliptical Arc
Z = closepath

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">    
<path d="M250 150 L150 350 L350 350 Z" /> 
</svg>

SVG文本
使用 元素来定义文本

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">    
<text x="10" y="50" fill="red">I love SVG</text> 
</svg>

SVG滤镜
feBlend
feColorMatrix
feComponentTransfer
feComposite
feConvolveMatrix
feDi?useLighting
feDisplacementMap
feFlood
feGaussianBlur
feImage
feMerge
feMorphology
feO?set
feSpecularLighting
feTile
feTurbulence
feDistantLight
fePointLight
feSpotLight

高斯模糊

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">    
<defs>        
<filter id="Gaussian_Blur">            
<feGaussianBlur in="SourceGraphic" stdDeviation="3" />        
</filter>    
</defs>    
<ellipse cx="200" cy="150" rx="70" ry="40" style="fill:#ff0000;stroke:#0 00000;stroke-width:2;filter:url(#Gaussian_Blur)"/> 
</svg>

SVG渐变
渐变是一种颜色到另一种颜色的平滑过渡
线性渐变

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/
svg">    
<defs>        
<linearGradient id="orange_red" x1="0%" y1="0%" x2="100%" y2="0%">            <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity: 1"/>            <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity: 1"/>        </linearGradient>    
</defs>    
<ellipse cx="200" cy="190" rx="85" ry="55" style="fill:url(#orange_red)" /> 
</svg>

径向渐变

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/ svg">    
<defs>        
<radialGradient id="grey_blue" cx="50%" cy="50%" r="50%" fx="50%" fy ="50%">
            <stop offset="0%" style="stop-color:rgb(200,200,200);stop-opacit y:0"/>            
            <stop offset="100%" style="stop-color:rgb(0,0,255);stop-opacity: 1"/>        
            </radialGradient>    
            </defs>    
            <ellipse cx="230" cy="200" rx="110" ry="100" style="fill:url(#grey_blue) "/> 
            </svg>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值