HTML5 Canvas阴影使用方法实例演示


Posted in HTML / CSS onAugust 02, 2013

HTML5 Canvas中提供了设置阴影的四个属性值分别为:
context.shadowColor = “red” 表示设置阴影颜色为红色
context.shadowOffsetX = 0表示阴影相对TEXT的水平距离,0表示两者水平位置重合
context.shadowOffsetY = 0表示阴影相对TEXT的垂直距离,0表示两者垂直位置重合
context.shadowBlur = 10 阴影模糊效果,值越大模糊越厉害。
一个最简单的带有阴影的矩形代码如下:
context.shadowColor = "RGBA(127,127,127,1)";
context.shadowOffsetX = 3;
context.shadowOffsetY = 3;
context.shadowBlur = 0;
context.fillStyle = "RGBA(0, 0, 0, 0.8)";
context.fillRect(10, hh+10, 200,canvas.height/4-20);
效果如下:
HTML5 Canvas阴影使用方法实例演示 
阴影文字:
只要设置shadowOffsetX与shadowOffsetY的值,当值都正数时,阴影相对文字的右下
方偏移。当值都为负数时,阴影相对文字的左上方偏移。
3D拉影效果:
在同一位置不断的重复绘制文字同时改变shadowOffsetX、shadowOffsetY、shadowBlur
的值,从小到大不断偏移不断增加,透明度也不断增加。就得到了拉影效果文字。
边缘模糊效果文字:
在3D拉影效果的基础上在四个方向重复,就得到了边缘羽化的文字效果。
运行效果:
HTML5 Canvas阴影使用方法实例演示 
序代码:

复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="chrome=IE8">
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Canvas Clip Demo</title>
<link href="default.css" rel="stylesheet" />
<script>
var ctx = null; // global variable 2d context
var imageTexture = null;
window.onload = function() {
var canvas = document.getElementById("text_canvas");
console.log(canvas.parentNode.clientWidth);
canvas.width = canvas.parentNode.clientWidth;
canvas.height = canvas.parentNode.clientHeight;
if (!canvas.getContext) {
console.log("Canvas not supported. Please install a HTML5 compatible browser.");
return;
}
var context = canvas.getContext('2d');
// section one - shadow and blur
context.fillStyle="black";
context.fillRect(0, 0, canvas.width, canvas.height/4);
context.font = '60pt Calibri';
context.shadowColor = "white";
context.shadowOffsetX = 0;
context.shadowOffsetY = 0;
context.shadowBlur = 20;
context.fillText("Blur Canvas", 40, 80);
context.strokeStyle = "RGBA(0, 255, 0, 1)";
context.lineWidth = 2;
context.strokeText("Blur Canvas", 40, 80);
// section two - shadow font
var hh = canvas.height/4;
context.fillStyle="white";
context.fillRect(0, hh, canvas.width, canvas.height/4);
context.font = '60pt Calibri';
context.shadowColor = "RGBA(127,127,127,1)";
context.shadowOffsetX = 3;
context.shadowOffsetY = 3;
context.shadowBlur = 0;
context.fillStyle = "RGBA(0, 0, 0, 0.8)";
context.fillText("Blur Canvas", 40, 80+hh);
// section three - down shadow effect
var hh = canvas.height/4 + hh;
context.fillStyle="black";
context.fillRect(0, hh, canvas.width, canvas.height/4);
for(var i = 0; i < 10; i++)
{
context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
context.shadowOffsetX = i*2;
context.shadowOffsetY = i*2;
context.shadowBlur = i*2;
context.fillStyle = "RGBA(127, 127, 127, 1)";
context.fillText("Blur Canvas", 40, 80+hh);
}
// section four - fade effect
var hh = canvas.height/4 + hh;
context.fillStyle="green";
context.fillRect(0, hh, canvas.width, canvas.height/4);
for(var i = 0; i < 10; i++)
{
context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
context.shadowOffsetX = 0;
context.shadowOffsetY = -i*2;
context.shadowBlur = i*2;
context.fillStyle = "RGBA(127, 127, 127, 1)";
context.fillText("Blur Canvas", 40, 80+hh);
}
for(var i = 0; i < 10; i++)
{
context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
context.shadowOffsetX = 0;
context.shadowOffsetY = i*2;
context.shadowBlur = i*2;
context.fillStyle = "RGBA(127, 127, 127, 1)";
context.fillText("Blur Canvas", 40, 80+hh);
}
for(var i = 0; i < 10; i++)
{
context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
context.shadowOffsetX = i*2;
context.shadowOffsetY = 0;
context.shadowBlur = i*2;
context.fillStyle = "RGBA(127, 127, 127, 1)";
context.fillText("Blur Canvas", 40, 80+hh);
}
for(var i = 0; i < 10; i++)
{
context.shadowColor = "RGBA(255, 255, 255," + ((10-i)/10) + ")";
context.shadowOffsetX = -i*2;
context.shadowOffsetY = 0;
context.shadowBlur = i*2;
context.fillStyle = "RGBA(127, 127, 127, 1)";
context.fillText("Blur Canvas", 40, 80+hh);
}
}
</script>
</head>
<body>
<h1>HTML5 Canvas Clip Demo - By Gloomy Fish</h1>
<pre>Fill And Stroke Clip</pre>
<div id="my_painter">
<canvas id="text_canvas"></canvas>
</div>
</body>
</html>
HTML / CSS 相关文章推荐
CSS3让登陆面板3D旋转起来
May 03 HTML / CSS
CSS3实现滚动条动画效果代码分享
Aug 03 HTML / CSS
纯css实现照片墙3D效果的示例代码
Nov 13 HTML / CSS
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
Oct 29 HTML / CSS
html5使用canvas画空心圆与实心圆
Dec 15 HTML / CSS
HTML5未来发展趋势
Feb 01 HTML / CSS
HTML5本地存储和本地数据库实例详解
Sep 05 HTML / CSS
canvas简单连线动画的实现代码
Feb 04 HTML / CSS
Html5 canvas画图白板踩坑
Jun 01 HTML / CSS
AmazeUI 缩略图的实现示例
Aug 18 HTML / CSS
CSS实现两列布局的N种方法
Aug 02 HTML / CSS
css布局巧妙技巧之css三角示例的运用
Mar 16 HTML / CSS
HTML5 Canvas自定义圆角矩形与虚线示例代码
Aug 02 #HTML / CSS
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
Aug 02 #HTML / CSS
使用HTML5的File实现base64和图片的互转
Aug 01 #HTML / CSS
HTML5 中新的全局属性(整理)
Jul 31 #HTML / CSS
html5文字阴影效果text-shadow使用示例
Jul 25 #HTML / CSS
html5模拟平抛运动(模拟小球平抛运动过程)
Jul 25 #HTML / CSS
html5记忆翻牌游戏实现思路及代码
Jul 25 #HTML / CSS
You might like
简化php模板页面中分页代码的解析
2009/02/06 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
PHP 验证身份证是否合法的函数
2017/02/09 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
javascript下查找父节点的简单方法
2007/08/13 Javascript
javascript 匿名函数的理解(透彻版)
2010/01/28 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
javascript组合使用构造函数模式和原型模式实例
2015/06/04 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
2020/06/23 Python
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
信息技术课后反思
2014/04/27 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
开平碉楼导游词
2015/02/06 职场文书
公司庆典主持词
2015/07/04 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
24年收藏2000多部退役军用电台
2022/02/18 无线电
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript