HTML5中怎样绘制图形、设置元素阴影,旋转和过渡效果
Admin 2022-09-19 群英技术资讯 599 次浏览
步骤
- 添加canvas元素,定义id和范围
- js里获取canvas元素
- 通过getContext()方法获取2D绘制环境
- 通过不同的函数进行图形绘制
坐标定位
- 绘制的图形定位都是以canvas的左上角为(0,0)原点
绘制直线
- moveTo(): 规定起始点
- lineTo(): 从起点绘制到规定坐标的直线
- stroke(): 实现绘制直线的功能
- fill(): 实现填充功能
实例:绘制一个三角形
html代码
<body> <canvas id="canvas"></canvas> </body>
js代码
window.onload = function(){ var canvas = document.getElementById("canvas"); canvas.width = 800; canvas.height = 800; var context = canvas.getContext('2d'); context.strokeStyle = "red"; context.moveTo(100, 100); context.lineTo(200, 100); context.lineTo(150,50); context.lineTo(100,100); context.stroke(); };
绘制矩形
- fillStyle():设置矩形填充颜色。
- fillRect(x,y,width,height)。
- strokeStyle():设置矩形轮廓颜色。
- strokeRect(x,y,width,height)。
绘制圆形(弧形)
- beginPath():开始绘制路线
- arc(x,y,radius,startAngle,endAngle,anticlockwise)
设置绘制的中心点,半径,起始角度,结束角度和绘制方向。贝塞尔曲线
二次贝塞尔曲线
- quadraticCurveTo(cp1x,cp1y,x,y)
cp1x,cp1y 表示一个控制点坐标;x,y代表终点坐标。三次贝塞尔曲线
- bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y)
cp1x,cp1y和cp2x,cp2y分别代表
两个控制点。实例1:绘制一个五角星
window.onload = function() { var canvas = document.getElementById("canvas"); var context = canvas.getContext('2d'); drawStar(context, 120, 120, 80, 30, 10, "yellow", 0); } function drawStar(context, x, y, R, r, width, color, rotation) { context.beginPath(); for (var i = 0; i < 5; i++) { context.lineTo(Math.cos((18 + i * 72 - rotation) / 180 * Math.PI) * R + x, -Math.sin((18 + i * 72 - rotation) / 180 * Math.PI) * R + y); context.lineTo(Math.cos((54 + i * 72 - rotation) / 180 * Math.PI) * r + x, -Math.sin((54 + i * 72 - rotation) / 180 * Math.PI) * r + y); } context.closePath(); context.lineWidth = width; context.fillStyle = color; context.fill(); }
实例2:绘制宝马标志
window.onload = function() { var canvas = document.getElementById("canvas"); canvas.width = 800; canvas.height = 800; var context = canvas.getContext('2d'); //圆心坐标x,y 内圆半径r 外圆半径R var x = 100; var y = 100; var r = 100; var R = r + 50; var colors = Array("#87CEFA", "#FAFAFA", "#000"); context.beginPath(); context.translate(100, 100); context.arc(x, y, R, 0, Math.PI * 2); line_gra = context.createLinearGradient(-10, -10,20, 50); line_gra.addColorStop(0, "#ddd"); line_gra.addColorStop(1, "#262626"); context.lineWidth = 3; context.strokeStyle = "#000"; context.fillStyle = line_gra; context.closePath(); context.stroke(); context.fill(); drawBigRound(context, x, y, r, 53, "#ADD8E6", 7); drawBm(context, x, y, r, colors); drawBigRound(context, x, y, r, 3, "#9FB6CD", 5); context.beginPath(); context.fillStyle = "#fff"; context.font = "bold 40px verdana"; context.fillText("M", 80, -10); context.rotate(Math.PI / 6); context.fillText("W", 125, -75); context.rotate(-(Math.PI / 2)); context.fillText("B", 0, 35); context.restore(); } function drawBm(context, x, y, r, colors) { var color; for (var i = 0; i < 4; i++) { context.beginPath(); context.moveTo(x, y); context.arc(x, y, r, Math.PI * i / 2, Math.PI * (i + 1) / 2); if (i == 0 || i == 2) { color = colors[0]; } else { color = colors[1]; } context.fillStyle = color; context.lineWidth = 2; context.strokeStyle = colors[2]; context.closePath(); context.fill(); context.stroke(); } } function drawBigRound(context, x, y, r, addr, color, lineWidth) { context.beginPath(); context.arc(x, y, r + addr, 0, Math.PI * 2); context.lineWidth = lineWidth; context.strokeStyle = color; context.closePath(); context.stroke(); }
box-shadow: h-shadow v-shadow blur spread color inset;
- h-shadow 必需。水平阴影的位置。允许负值。
- v-shadow 必需。垂直阴影的位置。允许负值。
- blur 可选。模糊距离。
- spread 可选。阴影的尺寸。
- color 可选。阴影的颜色。请参阅 CSS 颜色值。
- inset 可选。将外部阴影 (outset) 改为内部阴影。
transform: none|transform-functions;
transform:rotate(): 旋转,deg是度的意思
transform: rotate(-10deg);
transform:skew(): 倾斜
transform:skew(20deg);
transform:scale(): 缩放,x方向2倍,y方向1.5倍
transform: scale(2, 1.5);
transform:translate(): 平移,x方向平移120px,y方向平移10px
transform:translate(120px,10px);
transition: property duration timing-function delay;
- transition-property 规定设置过渡效果的 CSS 属性的名称。
- transition-duration 规定完成过渡效果需要多少秒或毫秒。
- transition-timing-function 规定速度效果的速度曲线。
- transition-delay 定义过渡效果何时开始。
div { width:100px; transition: width 2s; -moz-transition: width 2s; /* Firefox 4 */ -webkit-transition: width 2s; /* Safari 和 Chrome */ -o-transition: width 2s; /* Opera */ }
到此,关于“HTML5中怎样绘制图形、设置元素阴影,旋转和过渡效果”的学习就结束了,希望能够解决大家的疑惑,另外大家动手实践也很重要,对大家加深理解和学习很有帮助。如果想要学习更多的相关知识,欢迎关注群英网络资讯站,小编每天都会给大家分享实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
CSS中按钮不可点击效果怎样实现?在一些特殊的情景下,我们需要暂时设置按钮不可点击,那么CSS怎样禁止button点击呢?文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
CSS元素定位方式有多少,哪种方式好呢?有不少朋友对此感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
传统方式使用document.cookie来进行存储,但是由于其存储的空间只有4KB左右,并且需要复杂的操作进行解析,给发开者带来很多不便,为此,HTML5规范提出了网络存储的解决方案,本文通过实例代码给大家详细介绍,感兴趣的朋友一起看看吧
在实际的项目中,滚动条滚动效果还是比较常见的,这种效果的好处就是能让HTML页面更简洁美观,但是如果在同个页面做多个滚动条效果的,那么滚动条隐藏效果会比较好,那么具他要怎样做隐藏滚动条被?下面给大家分享CSS实现隐藏滚动条的两种方法。
本篇文章给大家带来了关于css的相关知识,其中主要介绍了关于css的相对定位、绝对定位和固定定位的相关问题,css中的position属性,position有四个值:relative(相对定位)、absolute(绝对定位)、static(静态定位)和fixed(固定定位),通过top、left、bottom、right来调整元素位置,下面一起来看一下,希望对大家有帮助。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008