零基础教你学前端——44、矩形、圆形和椭圆形
zhezhongyun 2025-07-09 00:19 31 浏览
使用SVG绘制矩形、圆形和椭圆形。
SVG有一些预定义的形状元素,可以供开发者使用。这些元素分别是矩形、圆形 circle 、椭圆 ellipse、线条 line、多线条 polyline、多边形 polygon、路径 path 。
我们先来学习矩形的绘制。
绘制矩形使用 rect 标签,它是 rectangle 的缩写,就是矩形的意思。它是一个单标签,基本语法为:尖角号 rect,斜线尖角号。
注意,任何一个 HTML 单标签,都可以在第二个尖角号前写一个斜线,表示标签闭合了,也就是说,用闭合标签来表示单标签,其实这样写更加严谨。
它有几个重要的属性:
width,定义矩形的宽度,值是一个数字。
height,定义矩形的高度,值也是一个数字。
fill [fl],定义矩形的填充颜色,值可以是任意合法的颜色值,比如颜色名称,rgb颜色值,十六进制颜色值等。
stroke-width [strok wdθ] ,笔画宽度,定义了矩形的边框宽度,值是一个数字。
stroke [strok] ,描边,定义矩形边框的颜色。
我们来举个例子。
打开编辑器,创建一个 rect_circle_ellipse.html 文件,补全基础代码,在 body 里添加一个 svg 标签,定义属性 width 等于 400,height 等于 110。
在svg里添加 rect 标签,定义属性 width 等于 300,height 等于 100,fill 颜色填充值为 blue,蓝色,stroke-width 笔画宽度属性值为 3, stroke 描边属性值为 black,黑色。保存文件。
在浏览器中预览,一个矩形就绘制好了。
再来学习几个矩形的属性:
width,定义矩形的宽度,值是一个数字。
x,定义矩形的左边位置,值是一个数字。
y,定义矩形的顶部位置,值是一个数字。
fill-opacity,定义填充颜色的不透明度,合法值的范围是0 到 1。
stroke-opacity,定义描边颜色的不透明度,合法值的范围是0 到 1。
回到编辑器,在上个 svg 结尾处添加一个 br 标签。
回车换行。添加一个新的 svg 标签,属性 width 等于 400,height 等于 180。
在 svg 里面添加一个 rect 标签,属性 x 等于 50,y 等于 20,width 等于 150,height 等于 150,fill 等于 blue,stroke 等于 tomato,stroke-width 等于 5,fill-opacity 等于 0.1,stroke-opacity 等于 0.9。保存。
回到浏览器,刷新,一个边长为150,背景色为蓝色,描边为番茄色,并带有一定透明度的矩形就绘制好了。
仔细观察,背景的透明度高,边框的透明度低,它们的透明度值分别为0.1 和 0.9。这说明:透明度的值越小,透明度越高。如果值为 0,就完全透明了。
我们也可以给 rect 定义一个 opacity 属性,用来设置整个元素的不透明度值,合法值的范围也是 0 到 1。
回到编辑器,我们去掉这个矩形的 fill-opacity 和 stroke-opacity 属性,定义一个opacity 属性,值为 0.5。保存。
回到浏览器,刷新,整个矩形透明了0.5,也就是描边和背景都透明了50%。
最后,我们来绘制一个圆角矩形。
圆角矩形通过给 rect 定义 rx,ry 两个属性来实现。
rx,定义圆角x轴方向的半径长度,值是一个数字。
ry,定义圆角y轴方向的半径长度,值是一个数字。
如果两个值相等,就是一个圆形的角,两个值不相等,就是一个椭圆形的角。
回到编辑器,在上个svg结尾处添加一个 br 标签。
回车换行。添加一个新的 svg 标签,属性 width 等于 400,height 等于 180。
在 svg 里面添加一个 rect 标签,属性 x 等于 50,y 等于 20,width 等于 150,height 等于 150,fill 等于 red,stroke 等于 black,stroke-width 等于 5,opacity 等于 0.5。
最后给rect 添加 rx 等于 20,ry 等于 20。保存。
回到浏览器,刷新,一个圆角矩形做好了。
返回编辑器,如果将 ry 改为 30。保存。
回到浏览器,刷新,矩形的四个角就变成椭圆形了。
接下来,我们学习绘制圆形。
绘制圆形使用 circle 标签,circle 就是圆的意思。它是一个单标签,基本语法为:尖角号 circle,斜线尖角号。
它有三个重要的属性:
cx 和 cy 属性,定义圆心的 x 和 y 坐标。如果省略了cx和cy,圆的中心会被设置为(0,0)。
r 属性,定义圆的半径。
和绘制矩形一样,通过定义 stroke、stroke-width、fill 属性来设置边框颜色、边框宽度和背景色填充等等。
提示一下, stroke、stroke-width、fill 这三个属性,常见的图形绘制都可以使用它们。
回到编辑器,在上个svg结尾处添加一个 br 标签。回车换行。
添加一个新的 svg 标签,属性 width 等于 100,height 等于 100。
在 svg 里面添加一个 circle 标签,属性 cx 等于 50,cy 等于 50,r 等于 40,stroke 等于 black,stroke-width 等于 3,fill 等于 red。保存。
回到浏览器,刷新,一个圆形就绘制好了。
最后,我们学习绘制椭圆形。
绘制椭圆形使用 ellipse 标签,ellipse 就是椭圆的意思。它是一个单标签,基本语法为:尖角号 ellipse,斜线尖角号。
椭圆与圆密切相关。不同的是,椭圆的 x 和 y 半径是不同的,而圆的 x 和 y 半径是相等的。
ellipse 有四个重要的属性:
cx 属性,定义椭圆中心的 x 坐标。
cy 属性,定义椭圆中心的 y 坐标。
rx 属性,定义水平半径。
ry 属性,定义垂直半径。
回到编辑器,在上个svg结尾处添加一个 br 标签。回车换行。
添加一个新的 svg 标签,属性 width 等于 140,height 等于 500。
在 svg 里面添加一个 ellipse 标签,属性 cx 等于 200,cy 等于 80,rx 等于 100,ry 等于 50,fill 等于yellow,stroke 等于 purple,stroke-width 等于 2。保存。
回到浏览器,刷新,一个椭圆形就绘制好了。
返回编辑器,我们绘制三个堆叠的椭圆。在上个svg结尾处添加一个 br 标签。回车换行。
添加一个新的 svg 标签,属性 width 等于 150,height 等于 500。
在 svg 里面添加一个 ellipse 标签,属性 cx 等于 240,cy 等于 100,rx 等于 220,ry 等于 30,fill 等于purple。
再添加一个 ellipse 标签,属性 cx 等于 220,cy 等于 70,rx 等于 190,ry 等于 20,fill 等于lime。
再添加一个 ellipse 标签,属性 cx 等于 210,cy 等于 45,rx 等于 170,ry 等于 50,fill 等于yellow。保存。
回到浏览器,刷新,三个逐渐缩小的堆叠椭圆就做好了。
仔细观察发现,三个椭圆的堆叠顺序并不是html的书写顺序。这是因为他们的位置和大小是由 cx, cy, rx, ry 来决定的,不是由 html 书写顺序来决定的。根据这个特点,我们可以将多个椭圆组合起来。
返回编辑器,在上个svg结尾处添加一个 br 标签。回车换行。
添加一个新的 svg 标签,属性 width 等于 100,height 等于 500。
在 svg 里面添加一个 ellipse 标签,属性 cx 等于 240,cy 等于 50,rx 等于 220,ry 等于 30,fill 等于 yellow。
再添加一个 ellipse 标签,属性 cx 等于 220,cy 等于 50,rx 等于 190,ry 等于 20,fill 等于white。保存。
回到浏览器,刷新,视觉上看,一个空心的椭圆就绘制好了。
文章配套视频链接「链接」
相关推荐
- Opinion丨Struggle Against U.S. Mind colonization in the Global South
-
Editor'snote:Thismonth,XinhuaNewsAgency'sThinkTankreleasedareporttitled"Colonizationof...
- 爱可可AI论文推介(2020.11.4)_爱可可女装旗舰店
-
LG-机器学习CV-计算机视觉CL-计算与语言AS-音频与语音RO-机器人(*表示值得重点关注)1、[LG]*CombiningLabelPropagationan...
- 何新:罗马伪史考英文版序言_罗马史学
-
2019-10-2514:48:27何新:罗马伪史考序言(英文译本)HeXin:PreambleofResearchonPseudo-historyofRome1Afewyear...
- XPeng Stock Rises Over 4% after Q2 Revenue and EV Margin Set Records
-
TMTPOST--TheAmericandepositaryreceipts(ADRs)ofXPengInc.rosearound4.2%onTuesdayaftert...
- 英汉世界语部首(八)_英文部首字典
-
本节讲八个部首,分别是:弓gōng【ECWLrad】bow廾gǒng【ECWLrad】twen广guǎng【ECWLrad】vast己jǐ【ECWLrad】self已yǐ...
- 一课译词:划水_划水是什么地方的方言
-
[Photo/SIPA]懒惰是人类的天性,因此才总有人会在工作时“划水”。“划水【huáshuǐ】”,本意是指“用胳膊划的动作(makestrokeswithone’sarms)”,延伸为“...
- 首测!GPT-4o做Code Review可行吗?
-
编辑|言征出品|51CTO技术栈(微信号:blog51cto)近日,OpenAI一记重拳,推出了GPT-4o(“o”表示“omni”),将语音识别和对话方面的优势展示的淋漓尽致。几乎可以肯定,...
- C++|漫谈STL细节及内部原理_c++ stl详解
-
1988年,AlexanderStepanov开始进入惠普的PaloAlto实验室工作,在随后的4年中,他从事的是有关磁盘驱动器方面的工作。直到1992年,由于参加并主持了实验室主任BillWo...
- C++ inline关键字深度解析:不止于优化的头文件定义许可
-
在C++开发中,几乎每个程序员都用过inline关键字,但多数人只停留在“内联优化”的表层理解。事实上,inline的真正威力在于它打破了C++的单一定义规则(ODR)限制,成为头文件中安全定义函数的...
- 实用 | 10分钟教你搭建一个嵌入式web服务器
-
之前分享的文章中提到了几种可以在嵌入式中使用的web服务器。嵌入式web服务器就是把web服务器移植到嵌入式系统的服务器。它仍然是基于http文本协议进行通信的,具有标准的接口形式,对客户端...
- 中间语言格式_中间格式文本是什么
-
在通常情况下,编译器会将目标语言转换成某种中间语言格式,而不是直接将源代码转换成二进制机器指令,不少c语言编译器,都会将代码编译成汇编语言,然后再通过汇编语言编译器将汇编代码转换成目标机器可执行的二进...
- 一线开发大牛带你深度解析探讨模板解释器,解释器的生成
-
解释器生成解释器的机器代码片段都是在TemplateInterpreterGenerator::generate_all()中生成的,下面将分小节详细展示该函数的具体细节,以及解释器某个组件的机器代码...
- 干货,Web开发和前端开发逆天工具大全
-
微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(点击页底“阅读原文”前往下载)●●●逆天工具CDN资源库国内Bootstrap中文网开源项目免费CDN服务36...
- 移动端rem+vw适配_移动端web页面适配方案
-
rem:rem是相对单位,设置根元素html的font-size,比如给html设置字体大小为100px,1rem=100px;rem缺点:1.和根元素font-size值强耦合,系统字...
- 从零搭建 React 开发 H5 模板_react html5
-
项目创建创建项目文件夹mkdir react-democd react-demonpm init -y依赖安装yarn add rea...
- 一周热门
- 最近发表
-
- Opinion丨Struggle Against U.S. Mind colonization in the Global South
- 爱可可AI论文推介(2020.11.4)_爱可可女装旗舰店
- 何新:罗马伪史考英文版序言_罗马史学
- XPeng Stock Rises Over 4% after Q2 Revenue and EV Margin Set Records
- 英汉世界语部首(八)_英文部首字典
- 一课译词:划水_划水是什么地方的方言
- 首测!GPT-4o做Code Review可行吗?
- C++|漫谈STL细节及内部原理_c++ stl详解
- C++ inline关键字深度解析:不止于优化的头文件定义许可
- 实用 | 10分钟教你搭建一个嵌入式web服务器
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- HTML button formtarget 属性 (30)
- opacity 属性 (32)
- transition 属性 (33)