<div id="cholder">
<canvas id="canvas"></canvas>
</div>
<div class="container">我是内容内容内容……</div><!--/这里是新增的-->#canvas {position:absolute;top:0px;left:0px;z-index:1; }
container{position:relative;background:#FFF;color:#03Cz-index:2;}
定位后用z-index来控制,值大的居于上层。
unity特效层级可以填Canvas和MaskExtend。
1、Canvas,给UI和特效加上Canvas,修改Cannvas的SortOrder值,因为Unity是根据Canvas绘制的,不同的Canvas尽管引用的图集相同,也会增加额外的DrawCall,所以性能消耗可能会增加,另外也可能引起其他的层级穿透问题,不好控制层级关系。
2、MaskExtend,添加一个脚本MaskExtend,初始化一个裁剪的区域,然后修改特效的shader,使特效在裁剪区域才可以显示。
合HTML5下的video和canvas的功能,你可以实时处理视频数据,为正在播放的视频添加各种各样的视觉效果。本教程演示如何使用JavaScript代码实现chroma-keying特效
本文使用的XHTML文档如下所示。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 10 Transitional//EN"
<head>
<style>
body {
background: black;
color:#CCCCCC;
}
#c2 {
background-image: url(foopng);
background-repeat: no-repeat;
}
div {
float: left;
border :1px solid #444444;
padding:10px;
margin: 10px;
background:#3B3B3B;
}
</style>
<script type="text/javascript;version=18" src="mainjs"></script>
</head>
<body onload="processordoLoad()">
<div>
<video id="video" src="videoogv" controls="true"/>
</div>
<div>
<canvas id="c1" width="160" height="96"/>
<canvas id="c2" width="160" height="96"/>
</div>
</body>
</html>
第一,使用canvas标签时script标签要放在body的下面,放在head里面就可能显示不出来。想起上次做火焰特效,script放到head中,帧数明显下降。这里貌似涉及到JS性能优化和浏览器如何渲染HTML文件的问题(算了不深究了)。
第二,别再把方法和函数名写错了。
下面是W3C教程上的演示代码,
第三个问题:运行在Chrome上会出现以下两种情况1加载不出来,始终加载不出来2第一次加载出来了,刷新一下就没有了。
除非你一直在岩石下生活,不然你不会没听过HTML5现在几乎到处都有HTML5的影子,得益于苹果公司前CEO乔布斯和很多开发人员的推广下面我们为大家收集整理了15个令人振奋的HTML5特效1、GoogleGravityGravity提供了Google搜索主页的基本副本,但是当你点击光标之后,整个页面就会开始“下滑”直到底部,Google标志作为一个迅速刷新页面的链接对那些讨厌Google的大公司来说是个很有意思的游戏2、VoxelRainVoxelRain意味着3D多色箱降成了一个旋转的大块就像展示20世纪90年代的计算机现在涉及到Web浏览器,利用HTML5的能力,互联网最明亮的时代不会太远了3、WPilot这是一个上瘾的游戏,它应该是非法的严重的是,一旦你登录到他们的服务器,你将要玩几个小时你基本上是到处乱飞拍摄的东西,同时避免由其他玩家出手它很简单并具有可玩性,允许多玩家操作,现在很受欢迎4、CanvasCycle艺术家MarkFerrari和编码师JosephHuckaby的共同合作这是一幅华丽动人的自然风景画,如冬日的森林,海景和山脉,美不胜收并具有音效,令人心旷神怡如果你想从工作中获得片刻的轻松,这些照片可以瞬间融化你的紧张感5、CanvasRibbonPaulTruong发了这个有趣的应用,能够让你通过不停地移动在屏幕上绘制多色彩条它能使形状和设计都十分漂亮你所需要做的只是在屏幕上拖动6、CanvasTreesKennethJorgenson创制这可能是唯一一个能够让你看到“刷新会有更多美味的树”这种句子的网站你可以点击网站,然后它会带你到一个白色的背景当开始计算程序中有多少分支时,黑色墨水绘制的树开始成长你可以不断地刷新,只要你愿意7、CelebrityEarningsGraph(名人赚钱图表)想知道一个电视名人每集节目赚多少?这是个很酷的小图能显示成堆的彩条,它们代表每一个特定特定的名人这是DanielRapp诸多项目中的一个8、Magnetic这是另外个有意思又可供你娱乐的小东西你基本以一对“磁铁”开始,这可以在屏幕上拖动些许微粒光束围绕着它,如果你移动它可以改变他们的形状如果你想要更多的磁铁和微粒,只需双击并拖动他们到任意地方是的,他们都是有关磁铁和微粒9、Chrysaora另一个由WebGL提供的令人惊异的演示在这你可以看到一群非常漂亮活泼的水母在水中游动,梦幻般的阳光洒向书面见证HTML5和WebGL所带来的网络生活,最好用GoogleChrome浏览
HTML5 DOM 选择器
// querySelector() 返回匹配到的第一个元素var item = documentquerySelector('item');consolelog(item);// querySelectorAll() 返回匹配到的所有元素,是一个nodeList集合var items = documentquerySelectorAll('item');consolelog(items[0]);1234567
阻止默认行为
// 原生jsdocumentgetElementById('btn')addEventListener('click', function (event) { event = event || windowevent; if (eventpreventDefault){ // w3c方法 阻止默认行为
eventpreventDefault();
} else{ // ie 阻止默认行为
eventreturnValue = false;
}
}, false);// jQuery$('#btn')on('click', function (event) { eventpreventDefault();
});1234567891011121314151617
阻止冒泡
// 原生jsdocumentgetElementById('btn')addEventListener('click', function (event) { event = event || windowevent; if (eventstopPropagation){ // w3c方法 阻止冒泡
eventstopPropagation();
} else{ // ie 阻止冒泡
eventcancelBubble = true;
}
}, false);// jQuery$('#btn')on('click', function (event) { eventstopPropagation();
});1234567891011121314151617
鼠标滚轮事件
$('#content')on("mousewheel DOMMouseScroll", function (event) {
// chrome & ie || // firefox
var delta = (eventoriginalEventwheelDelta && (eventoriginalEventwheelDelta > 0 1 : -1)) || (eventoriginalEventdetail && (eventoriginalEventdetail > 0 -1 : 1));
if (delta > 0) {
// 向上滚动
consolelog('mousewheel top');
} else if (delta < 0) { // 向下滚动
consolelog('mousewheel bottom');
}
});123456789101112
检测浏览器是否支持svg
function isSupportSVG() {
var SVG_NS = 'http://wwww3org/2000/svg'; return !!documentcreateElementNS &&!!documentcreateElementNS(SVG_NS, 'svg')createSVGRect;
}
// 测试consolelog(isSupportSVG());1234567
检测浏览器是否支持canvas
function isSupportCanvas() {
if(documentcreateElement('canvas')getContext){ return true;
}else{ return false;
}
}// 测试,打开谷歌浏览器控制台查看结果consolelog(isSupportCanvas());12345678910
检测是否是微信浏览器
function isWeiXinClient() {
var ua = navigatoruserAgenttoLowerCase();
if (uamatch(/MicroMessenger/i)=="micromessenger") {
return true;
} else {
return false;
}
}// 测试alert(isWeiXinClient());1234567891011
jQuery 获取鼠标在上的坐标
$('#myImage')click(function(event){
//获取鼠标在上的坐标
consolelog('X:' + eventoffsetX+'\n Y:' + eventoffsetY);
//获取元素相对于页面的坐标
consolelog('X:'+$(this)offset()left+'\n Y:'+$(this)offset()top);
});1234567
验证码倒计时代码
<!-- dom --><input id="send" type="button" value="发送验证码">12
// 原生js版本var times = 60, // 临时设为60秒
timer = null;
documentgetElementById('send')onclick = function () {
// 计时开始
timer = setInterval(function () {
times--; if (times <= 0) {
sendvalue = '发送验证码';
clearInterval(timer);
senddisabled = false;
times = 60;
} else {
sendvalue = times + '秒后重试';
senddisabled = true;
}
}, 1000);
}1234567891011121314151617181920
// jQuery版本var times = 60,
timer = null;
$('#send')on('click', function () {
var $this = $(this); // 计时开始
timer = setInterval(function () {
times--; if (times <= 0) {
$thisval('发送验证码');
clearInterval(timer);
$thisattr('disabled', false);
times = 60;
} else {
$thisval(times + '秒后重试');
$thisattr('disabled', true);
}
}, 1000);
});12345678910111213141516171819202122
常用的一些正则表达式
//匹配字母、数字、中文字符
/^([A-Za-z0-9]|[\u4e00-\u9fa5])$/
//验证邮箱
/^\w+@([0-9a-zA-Z]+[])+[a-z]{2,4}$/
//验证手机号
/^1[3|5|8|7]\d{9}$/
//验证URL
/^http:\/\/+\/
//验证身份证号码
/(^\d{15}$)|(^\d{17}([0-9]|X|x)$)/
//匹配中文字符的正则表达式
/[\u4e00-\u9fa5]/
//匹配双字节字符(包括汉字在内)
/[^\x00-\xff]/1234567891011121314151617181920
js时间戳、毫秒格式化
function formatDate(now) {
var y = nowgetFullYear(); var m = nowgetMonth() + 1; // 注意js里的月要加1
var d = nowgetDate(); var h = nowgetHours();
var m = nowgetMinutes();
var s = nowgetSeconds(); return y + "-" + m + "-" + d + " " + h + ":" + m + ":" + s;
}
var nowDate = new Date(2016, 5, 13, 19, 18, 30, 20);
consolelog(nowDategetTime()); // 获得当前毫秒数: 1465816710020consolelog(formatDate(nowDate));123456789101112131415
js限定字符数(注意:一个汉字算2个字符)
<input id="txt" type="text">//字符串截取function getByteVal(val, max) {
var returnValue = ''; var byteValLen = 0; for (var i = 0; i < vallength; i++) { if (val[i]match(/[^\x00-\xff]/ig) != null) byteValLen += 2; else byteValLen += 1; if (byteValLen > max) break;
returnValue += val[i];
} return returnValue;
}
$('#txt')on('keyup', function () {
var val = thisvalue; if (valreplace(/[^\x00-\xff]/g, "")length > 14) { thisvalue = getByteVal(val, 14);
}
});12345678910111213141516171819
js判断是否移动端及浏览器内核
var browser = {
versions: function() {
var u = navigatoruserAgent;
return {
trident: uindexOf('Trident') > -1, //IE内核
presto: uindexOf('Presto') > -1, //opera内核
webKit: uindexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: uindexOf('Firefox') > -1, //火狐内核Gecko
mobile: !!umatch(/AppleWebKitMobile/), //是否为移动终端
ios: !!umatch(/\(i[^;]+;( U;) CPU+Mac OS X/), //ios
android: uindexOf('Android') > -1 || uindexOf('Linux') > -1, //android
iPhone: uindexOf('iPhone') > -1 , //iPhone
iPad: uindexOf('iPad') > -1, //iPad
webApp: uindexOf('Safari') > -1 //Safari
};
}
}
if (browserversionsmobile() || browserversionsios() || browserversionsandroid() || browserversionsiPhone() || browserversionsiPad()) {
alert('移动端');
}123456789101112131415161718192021
之前我用过一个检测客户端的库 觉得挺好用的,也推荐给大家 叫 devicejs,大家可以 Googel 或 百度
GItHub仓库地址:https://githubcom/matthewhudson/devicejs
getBoundingClientRect() 获取元素位置
//它返回一个对象,其中包含了left、right、top、bottom四个属性var myDiv = documentgetElementById('myDiv');var x = myDivgetBoundingClientRect()left;
var y = myDivgetBoundingClientRect()top;
// 相当于jquery的: $(this)offset()left、$(this)offset()top // js的:thisoffsetLeft、thisoffsetTop123456
HTML5全屏
function fullscreen(element) {
if (elementrequestFullscreen) {
elementrequestFullscreen();
} else if (elementmozRequestFullScreen) {
elementmozRequestFullScreen();
} else if (elementwebkitRequestFullscreen) {
elementwebkitRequestFullscreen();
} else if (elementmsRequestFullscreen) {
elementmsRequestFullscreen();
}}
fullscreen(documentdocumentElement);12345678910111213
新年到了,本文将展示通过自定义view绘制烟花效果的案例,同时介绍一种优化canvas绘制时的性能的方法
每点击一下屏幕会产生一枚烟花,烟花飞到最上空会炸裂成60~100个碎片,
同屏可能有上千个粒子在不停更新它的位置
github
这时候功能基本实现了,剩下的就是将每一个烟花绘制在canvas上,通常我们会这样写
然而你会发现性能很糟糕,帧数随着粒子数的增加直线下降直到个位数,优化如下
some codes were from Daniel Shiffman
欢迎分享,转载请注明来源:表白网
评论列表(0条)