GVKun编程网logo

HTML5 Canvas实现文本对齐的方法总结(html canvas 文字)

278

在本文中,我们将带你了解HTML5Canvas实现文本对齐的方法总结在这篇文章中,我们将为您详细介绍HTML5Canvas实现文本对齐的方法总结的方方面面,并解答htmlcanvas文字常见的疑惑,同

在本文中,我们将带你了解HTML5 Canvas实现文本对齐的方法总结在这篇文章中,我们将为您详细介绍HTML5 Canvas实现文本对齐的方法总结的方方面面,并解答html canvas 文字常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的css实现文本两端对齐的方法、css实现文本图标对齐的方法、HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图_html5教程技巧、html5 canvas-1.canvas介绍(hello canvas)_html5教程技巧

本文目录一览:

HTML5 Canvas实现文本对齐的方法总结(html canvas 文字)

HTML5 Canvas实现文本对齐的方法总结(html canvas 文字)

这篇文章主要介绍了HTML5 Canvas实现文本对齐的方法总结,包括使用水平对齐的context.textAlign与垂直对齐的context.textBaseline两种方式及各种参数,需要的朋友可以参考下

水平对齐textAlign

JavaScript Code复制内容到剪贴板

context.textAlign=center|end|left|right|start;

其中各值及意义如下表。

<!DOCTYPE html>   
<html lang=zh>   
<head>   
    <Meta charset=UTF-8>   
    <title>textAlign</title>   
    <style>   
        body { background: url(./images/bg3.jpg) repeat; } 
        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
    </style>   
</head>   
<body>   
<p id=canvas-warp>   
    <canvas id=canvas>   
        你的浏览器居然不支持Canvas?!赶快换一个吧!!   
    </canvas>   
</p>   
  
<script>   
    window.onload = function(){   
        var canvas = document.getElementById(canvas);   
        canvas.width = 800;   
        canvas.height = 600;   
        var context = canvas.getContext(2d);   
        context.fillStyle = #FFF;   
        context.fillRect(0,0,800,600);   
  
        // 在位置 400 创建蓝线   
        context.strokeStyle=blue;   
        context.moveto(400,100);   
        context.lineto(400,500);   
        context.stroke();   
  
  
        context.fillStyle = #000;   
        context.font=50px Arial;   
  
        // 显示不同的 textAlign 值   
        context.textAlign=start;   
        context.fillText(textAlign=start, 400, 120);   
        context.textAlign=end;   
        context.fillText(textAlign=end, 400, 200);   
        context.textAlign=left;   
        context.fillText(textAlign=left, 400, 280);   
        context.textAlign=center;   
        context.fillText(textAlign=center, 400, 360);   
        context.textAlign=right;   
        context.fillText(textAlign=right, 400, 480);   
    };   
</script>   
</body>   
</html>
描述
start默认。文本在指定的位置开始。
end文本在指定的位置结束。
center文本的中心被放置在指定的位置。
left文本左对齐,
right文本右对齐。

我们通过一个例子来直观的感受一下。

JavaScript Code复制内容到剪贴板

<!DOCTYPE html>   
<html lang=zh>   
<head>   
    <Meta charset=UTF-8>   
    <title>textBaseline</title>   
    <style>   
        body { background: url(./images/bg3.jpg) repeat; }  
        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
    </style>   
</head>   
<body>   
<div id=canvas-warp>   
    <canvas id=canvas>   
        你的浏览器居然不支持Canvas?!赶快换一个吧!!   
    </canvas>   
</div>   
  
<script>   
    window.onload = function(){   
        var canvas = document.getElementById(canvas);   
        canvas.width = 800;   
        canvas.height = 600;   
        var context = canvas.getContext(2d);   
        context.fillStyle = #FFF;   
        context.fillRect(0,0,800,600);   
  
        //在位置 y=300 绘制蓝色线条   
        context.strokeStyle=blue;   
        context.moveto(0,300);   
        context.lineto(800,300);   
        context.stroke();   
  
        context.fillStyle = #00AAAA;   
        context.font=20px Arial;   
  
        //在 y=300 以不同的 textBaseline 值放置每个单词   
        context.textBaseline=top;   
        context.fillText(Top,150,300);   
        context.textBaseline=bottom;   
        context.fillText(Bottom,250,300);   
        context.textBaseline=middle;   
        context.fillText(Middle,350,300);   
        context.textBaseline=alphabetic;   
        context.fillText(Alphabetic,450,300);   
        context.textBaseline=hanging;   
        context.fillText(Hanging,550,300);   
    };   
</script>   
</body>   
</html>

运行结果:

2016324114332033.jpg (850×500)

垂直对齐textBaseline

JavaScript Code复制内容到剪贴板

context.textBaseline=alphabetic|top|hanging|middle|ideographic|bottom;

其中各值及意义如下表。

描述
alphabetic默认。文本基线是普通的字母基线。
top文本基线是em方框的顶端。
hanging文本基线是悬挂基线。
middle文本基线是em方框的正中。
ideographic文本基线是表意基线。
bottom文本基线是em方框的底端。


首先咱们通过一个图来看一下各个基线代表的位置。

2016324114358024.gif (600×268)

我们通过一个例子来直观的感受一下。

JavaScript Code复制内容到剪贴板

<!DOCTYPE html>   
<html lang=zh>   
<head>   
    <Meta charset=UTF-8>   
    <title>textBaseline</title>   
    <style>   
        body { background: url(./images/bg3.jpg) repeat; } 
        #canvas { border: 1px solid #aaaaaa; display: block; margin: 50px auto; }   
    </style>   
</head>   
<body>   
<p id=canvas-warp>   
    <canvas id=canvas>   
        你的浏览器居然不支持Canvas?!赶快换一个吧!!   
    </canvas>   
</p>   
  
<script>   
    window.onload = function(){   
        var canvas = document.getElementById(canvas);   
        canvas.width = 800;   
        canvas.height = 600;   
        var context = canvas.getContext(2d);   
        context.fillStyle = #FFF;   
        context.fillRect(0,0,800,600);   
  
        //在位置 y=300 绘制蓝色线条   
        context.strokeStyle=blue;   
        context.moveto(0,300);   
        context.lineto(800,300);   
        context.stroke();   
  
        context.fillStyle = #00AAAA;   
        context.font=20px Arial;   
  
        //在 y=300 以不同的 textBaseline 值放置每个单词   
        context.textBaseline=top;   
        context.fillText(Top,150,300);   
        context.textBaseline=bottom;   
        context.fillText(Bottom,250,300);   
        context.textBaseline=middle;   
        context.fillText(Middle,350,300);   
        context.textBaseline=alphabetic;   
        context.fillText(Alphabetic,450,300);   
        context.textBaseline=hanging;   
        context.fillText(Hanging,550,300);   
    };   
</script>   
</body>   
</html>

运行结果:

2016324114419550.jpg (850×500)

相关推荐:

HTML5 canvas基本绘图之绘制线条

html5生成柱状图(条形图)效果的实例代码

css实现文本两端对齐的方法

css实现文本两端对齐的方法

本篇文章介绍了使用css实现文本两端对齐的效果,具有一定的参考价值,感兴趣的朋友可以看看。

css实现文本两端对齐的方法

css实现文本两端对齐的方法

说起text-align,大家一定都不觉得陌生,我们常用关键字left、right、center实现行内元素相对父元素左、右、居中对齐,当然我们也使用justify来实现文本两端对齐。

如上图,两端对齐相对于左对齐,视觉上显得整齐有序。但justify对最后一行无效,通常这样的排版对整段文字是极好的,我们并不希望当最后一行只有两个字时也两端对齐,毕竟这是不便于阅读的,那么当我们只有一行文本,但要实现单行文本两端对齐怎么解决(如下图的表单项效果)?

立即学习“前端免费学习笔记(深入)”;

根据justify对最后一行无效,我们可以新增一行,使该行文本不是最后一行,实现如下:


//html<div>
    <span>{{item.label}}</span>:    <span>{{item.value}}</span></div>
登录后复制


//scss
.item {
    height: 32px;
    line-height: 32px;
    margin-bottom: 8px;
    .label {
        display: inline-block;
        height: 100%;
        width: 100px;
        text-align: justify;
        vertical-align: top;
        &::after {
            display: inline-block;
            width: 100%;
            content: &#39;&#39;;
            height: 0;
        }
    }
    .value {
        padding-right: 10px;
    }
}
登录后复制

but以上写法可以说是比较麻烦的,重点来啦,最近新了解到的一个属性text-align-last,该属性定义的是一段文本中最后一行在被强制换行之前的对齐规则。


//scss
.item {
    margin-bottom: 8px;
    .label {
        display: inline-block;
        height: 100%;
        min-width: 100px;
        text-align: justify;
        text-align-last: justify;
    }
    .value {
        padding-right: 10px;
    }
}
登录后复制

相比第一种实现,第二种实现方式就简单了不少,不过该属性有兼容性问题,大家可以根据情况决定实现方式。

( 推荐学习:CSS教程 )

以上就是css实现文本两端对齐的方法的详细内容,更多请关注php中文网其它相关文章!

css实现文本图标对齐的方法

css实现文本图标对齐的方法

css实现文本图标对齐的方法

开发中遇见图片跟文字放在一行显示是最常见不过的了,两个行内元素的对齐通常也是最令人头疼,有时候明明使用了最常用的对齐方法,却总还是有些许偏差,先来看一个最基本的示例:

html部分:

<div>
    @@##@@
    xx测试对齐Style-
</div>
登录后复制

推荐教程:css-tutorial.html" target="_blank">CSS入门教程

css部分:

.wrap {
      width: 300px;
      text-align: center;
      margin: 20px auto;
      font-size: 14px;
 }
 .wrap img {
      width: 20px;
 }
登录后复制

未使用对齐方式的效果如下:

立即学习“前端免费学习笔记(深入)”;

默认的对齐方式是 baseline ,也就是x字母的最下面那条线。

这也就回答了第一个问题,浏览器的图片跟文字未额外设置时是基于小写字母x的下边缘为基准,也就是 vertical-align:baseline; 。

常见的几种居中方案

1、使用 vertical-align 居中对齐方式

.wrap {
    vertical-align: middle;
    }
.wrap img {
    vertical-align: middle;
}
登录后复制

当我们使用常用的 vertical-align 对齐文本和图片时,其实也是有一定的偏差的,如下图:

ea948867cf9545ab889d5f8db76bf5e.png

vertical-align 的middle值实际上是相对于小写字母x的一半高度来说的,所以图片会跟x的中间开始对齐,但是其他字符譬如S、中文,就会发现无论如何都会出现稍许偏差,图片会相对而言偏下。

2、使用 vertical-align 同时使用span包裹文本

让我们再稍做改变,将文本部分使用span标签包裹,并且对span使用 vertical-align: middle; 样式对齐。会发现此时图片会上移少许。

效果如下:

d8c555866345ebfb76239c518ceb68a.png

3、使用flex布局

display: flex;
align-items: center;
登录后复制

c3f20badc6c6099fce5bfe3f40cbc8e.png

不过就算是flex布局,有时候也会出现一点儿偏差,比如:图片尺寸为偶数、字体font-size为偶数,line-height为偶数时对齐;奇数时偏上1px。

4、使用ex单位

ex就是小写字母x的高度,可以用在不受字体和字号影响的内联元素的垂直居中对齐效果。

PS:不过这种适用于图标高度跟文字一致,比如字符后面加一个箭头(点击展开)的情况,就很实用。

.wrap img {
    height: 1ex;
}
登录后复制

5、vertical-align 数值方式的使用

vertical-align 属性值可以使用数值型和百分比值,如,还是上面的基本案列:如果图片高度是20px,文字font-size为22px时,默认对齐是文字的基线,那么图片会偏上2px,这时只需要将图片向下偏移2px,就能实现对齐效果,而且 vertical-align 这个属性的数值型具有很好的兼容性。

.wrap {
            width: 100%;
            padding-top: 200px;
            text-align: center;
            margin: 20px auto;
            font-size: 22px;
            height: 40px;
            
        }
        .wrap img {
            width: 20px;
            vertical-align: -2px;
        }
登录后复制

相关视频教程推荐:css视频教程

4e99512ec2d36a08d2862208d2fc12f.png

以上就是css实现文本图标对齐的方法的详细内容,更多请关注php中文网其它相关文章!

HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图_html5教程技巧

HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图_html5教程技巧

html5火的正热,最近有个想法也是要用到html的相关功能,所以也要好好学习一把。

好好看了一下Canvas的功能,感觉HTML5在客户端交互的功能性越来越强了,今天看了一下Canvas绘图,下边是几个实例,记下以备后用。

1、使用Canvas绘制直线:


 

XML/HTML Code复制内容到剪贴板
  1. nbsp;html>  
  2. html>  
  3.     head>  
  4.         meta charset="UTF-8">  
  5.     head>  
  6.     style type="text/css">  
  7.         canvas{border:dashed 2px #CCC}   
  8.     style>  
  9.     script type="text/javascript">  
  10.         function $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         function pageLoad(){   
  14.             var can = $$(''can'');   
  15.             var cancans = can.getContext(''2d'');   
  16.             cans.moveTo(20,30);//第一个起点   
  17.             cans.lineTo(120,90);//第二个点   
  18.             cans.lineTo(220,60);//第三个点(以第二个点为起点)   
  19.             cans.lineWidth=3;   
  20.             cans.strokeStyle = ''red'';   
  21.             cans.stroke();   
  22.         }   
  23.     script>  
  24.     body onload="pageLoad();">  
  25.         canvas id="can" width="400px" height="300px">4canvas>  
  26.     body>  
  27. html>  

这里用到的两个API方法,moveTo和lineTo分别是线段的起点和终点坐标,变量为(X坐标,Y坐标),strokeStyle、stroke分别路径绘制样式和绘制路径。

立即学习“前端免费学习笔记(深入)”;

2、绘制渐变线条

渐变线条就是颜色有渐变的效果,当然渐变的样式可以遵循路径的方向也可以不遵循路径的方向:

XML/HTML Code复制内容到剪贴板
  1. nbsp;html>  
  2. html>  
  3.     head>  
  4.         meta charset="UTF-8">  
  5.     head>  
  6.     style type="text/css">  
  7.         canvas{border:dashed 2px #CCC}   
  8.     style>  
  9.     script type="text/javascript">  
  10.         function $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         function pageLoad(){   
  14.             var can = $$(''can'');   
  15.             var cancans = can.getContext(''2d'');   
  16.             cans.moveTo(0,0);   
  17.             cans.lineTo(400,300);   
  18.             var gnt1 = cans.createLinearGradient(0,0,400,300);//线性渐变的起止坐标   
  19.             gnt1.addColorStop(0,''red'');//创建渐变的开始颜色,0表示偏移量,个人理解为直线上的相对位置,最大为1,一个渐变中可以写任意个渐变颜色   
  20.             gnt1.addColorStop(1,''yellow'');   
  21.             cans.lineWidth=3;   
  22.             cans.strokeStyle = gnt1;   
  23.             cans.stroke();   
  24.         }   
  25.     script>  
  26.     body onload="pageLoad();">  
  27.         canvas id="can" width="400px" height="300px">4canvas>  
  28.     body>  
  29. html>  

3、绘制矩形或正方形:

这种矩形框如果使用HTML4只能使用后台代码才能生成了,现在HTML5提供的Canvas功能却很容易就能绘制,所以说HTML5的优越性是相当高的。

XML/HTML Code复制内容到剪贴板
  1. nbsp;html>  
  2. html>  
  3.     head>  
  4.         meta charset="UTF-8">  
  5.     head>  
  6.     style type="text/css">  
  7.         canvas{border:dashed 2px #CCC}   
  8.     style>  
  9.     script type="text/javascript">  
  10.         function $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         function pageLoad(){   
  14.             var can = $$(''can'');   
  15.             var cancans = can.getContext(''2d'');   
  16.             cans.fillStyle = ''yellow'';   
  17.             cans.fillRect(30,30,340,240);   
  18.         }   
  19.     script>  
  20.     body onload="pageLoad();">  
  21.         canvas id="can" width="400px" height="300px">4canvas>  
  22.     body>  
  23. html>  

这里使用了一个方法——fillRect()从字面意思也能知道这个就是填充一个矩形,这里的参数值得说明一下fillRect(X,Y,Width,Height),这个和数学里的坐标是不一样的,具体请看

这里的X,Y是相对Canvas左上角的起点开始的,谨记!!

4、绘制一个简单的矩形框

上例中讲到要绘制一个矩形块,填充了颜色,这个例子只是简单地绘制一个矩形而不实现填充效果。

XML/HTML Code复制内容到剪贴板
  1. nbsp;html>  
  2. html>  
  3.     head>  
  4.         meta charset="UTF-8">  
  5.     head>  
  6.     style type="text/css">  
  7.         canvas{border:dashed 2px #CCC}   
  8.     style>  
  9.     script type="text/javascript">  
  10.         function $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         function pageLoad(){   
  14.             var can = $$(''can'');   
  15.             var cancans = can.getContext(''2d'');   
  16.             cans.strokeStyle = ''red'';   
  17.             cans.strokeRect(30,30,340,240);   
  18.         }   
  19.     script>  
  20.     body onload="pageLoad();">  
  21.         canvas id="can" width="400px" height="300px">4canvas>  
  22.     body>  
  23. html>  
  24.   

这个很简单,和上例一样,就是将fill替换成了stroke,具体详见上例。

 5、绘制一个线性渐变的矩形

渐变是填充的一种相当不错的效果,结合实例2和实例3,我们可以创建一个渐变的矩形

XML/HTML Code复制内容到剪贴板
  1. nbsp;html>  
  2. html>  
  3.     head>  
  4.         meta charset="UTF-8">  
  5.     head>  
  6.     style type="text/css">  
  7.         canvas{border:dashed 2px #CCC}   
  8.     style>  
  9.     script type="text/javascript">  
  10.         function $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         function pageLoad(){   
  14.             var can = $$(''can'');   
  15.             var cancans = can.getContext(''2d'');   
  16.             var gnt1 = cans.createLinearGradient(10,0,390,0);   
  17.             gnt1.addColorStop(0,''red'');   
  18.             gnt1.addColorStop(0.5,''green'');   
  19.             gnt1.addColorStop(1,''blue'');   
  20.             cans.fillStyle = gnt1;   
  21.             cans.fillRect(10,10,380,280);   
  22.         }   
  23.     script>  
  24.     body onload="pageLoad();">  
  25.         canvas id="can" width="400px" height="300px">4canvas>  
  26.     body>  
  27. html>  
  28.   

不解释了,记住fillRect(X,Y,Width,Height)就行了。

6、填充一个圆形


圆形的用途很广,当然也包含了椭圆。

XML/HTML Code复制内容到剪贴板
  1. nbsp;html>  
  2. html>  
  3.     head>  
  4.         meta charset="UTF-8">  
  5.     head>  
  6.     style type="text/css">  
  7.         canvas{border:dashed 2px #CCC}   
  8.     style>  
  9.     script type="text/javascript">  
  10.         function $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         function pageLoad(){   
  14.             var can = $$(''can'');   
  15.             var cancans = can.getContext(''2d'');   
  16.             cans.beginPath();   
  17.             cans.arc(200,150,100,0,Math.PI*2,true);   
  18.             cans.closePath();   
  19.             cans.fillStyle = ''green'';//本来这里最初使用的是red,截图一看,傻眼了,怕上街被爱国者打啊,其实你懂的~~   
  20.             cans.fill();   
  21.         }   
  22.     script>  
  23.     body onload="pageLoad();">  
  24.         canvas id="can" width="400px" height="300px">4canvas>  
  25.     body>  
  26. html>  
  27.   

这里的arc方法的用法是 arc(X,Y,Radius,startAngle,endAngle,anticlockwise),意思是(圆心X坐标,圆心Y坐标,半径,开始角度(弧度),结束角度弧度,是否按照顺时针画);

arc中各参数比较:

a、cans.arc(200,150,100,0,Math.PI,true);

c、cans.arc(200,150,100,0,Math.PI/2,true);

c、cans.arc(200,150,100,0,Math.PI/2,true);

d、cans.arc(200,150,100,0,Math.PI/2,false);

 

 7、圆形区块

 

XML/HTML Code复制内容到剪贴板
  1. nbsp;html>  
  2. html>  
  3.     head>  
  4.         meta charset="UTF-8">  
  5.     head>  
  6.     style type="text/css">  
  7.         canvas{border:dashed 2px #CCC}   
  8.     style>  
  9.     script type="text/javascript">  
  10.         function $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         function pageLoad(){   
  14.             var can = $$(''can'');   
  15.             var cancans = can.getContext(''2d'');   
  16.             cans.beginPath();   
  17.             cans.arc(200,150,100,0,Math.PI*2,false);   
  18.             cans.closePath();   
  19.             cans.lineWidth = 5;   
  20.             cans.strokeStyle = ''red'';   
  21.             cans.stroke();   
  22.         }   
  23.     script>  
  24.     body onload="pageLoad();">  
  25.         canvas id="can" width="400px" height="300px">4canvas>  
  26.     body>  
  27. html>  

这里不解释了,和上边的例子相同,lineWidth是控制线条的宽度的。

8、圆形渐变

 

XML/HTML Code复制内容到剪贴板
  1. nbsp;html>  
  2. html>  
  3.     head>  
  4.         meta charset="UTF-8">  
  5.     head>  
  6.     style type="text/css">  
  7.         canvas{border:dashed 2px #CCC}   
  8.     style>  
  9.     script type="text/javascript">  
  10.         function $$(id){   
  11.             return document.getElementById(id);   
  12.         }   
  13.         function pageLoad(){   
  14.             var can = $$(''can'');   
  15.             var cancans = can.getContext(''2d'');   
  16.             var gnt = cans.createRadialGradient(200,300,50,200,200,200);   
  17.             gnt.addColorStop(1,''red'');   
  18.             gnt.addColorStop(0,''green'');   
  19.             cans.fillStyle = gnt;   
  20.             cans.fillRect(0,0,800,600);   
  21.         }   
  22.     script>  
  23.     body onload="pageLoad();">  
  24.         canvas id="can" width="800px" height="600px">4canvas>  
  25.     body>  
  26. html>  

这里需要说明的是createRadialGradient方法,参数有(Xstart,Ystart,radiusStart,XEnd,YEnd,radiusEnd),也就是说,它在实行渐变时,使用了两个圆,一个是原始的圆,一个是渐变式圆,其实,这种通过坐标与半径控制的方式可以实现很多样式,比如

立体圆

 

XML/HTML Code复制内容到剪贴板
  1. var gnt = cans.createRadialGradient(200,150,0,200,50,250);   
  2. gnt.addColorStop(0,''red'');   
  3. gnt.addColorStop(1,''#333'');  

html5 canvas-1.canvas介绍(hello canvas)_html5教程技巧

html5 canvas-1.canvas介绍(hello canvas)_html5教程技巧

从今天开始,我们将开始一个关于html5 canvas的系列课程。这个系列是我读《HTML5 Canvas:Native Interactivity and Animation for the Web》后的总结,有兴趣的朋友可以去下载英文原版书籍阅读。这本书通过介绍canvas游戏开发的方式,向我们展现canvas强大的功能,我觉得相当不错,通过阅读这本书我学到了canvas很多的知识。其实canvas本身的api并不多,关键是活学活用,学会对api的组合使用制作出令人难以置信的效果。而这本书就是你学习canvas最好的选择,只可惜他暂时还没有中文版,英文不好的朋友只有再等等了。

大家都知道,目前并不是所有的浏览器中支持html5,就算是支持html5的浏览器,也不见得支持html5所有的新特性。所以大家要选择一款比较新的浏览器作为自己的调试环境,建议大家使用firefox(开发者的最爱)或者是chrome浏览器,我所有的例子都是基于firefox开发的。

html5相关的基础知识这里就不做介绍了,网上有很多关于html5的教程,自行学习吧。学习html5需要大家有比较好的javascript的基础,大家可以去汤姆大叔的博客进行学习:http://www.cnblogs.com/TomXu/archive/2011/12/15/2288411.html。其实他的这个系列课程还是有相当难度的,50多篇全学好你应该算是js专家了。
现在我们正式开始我们的canvas课程,第一个例子:“hello canvas”。
首先需要在body中添加canvas标签,如下

复制代码
代码如下:


Your browser does not support HTML5 Canvas.


canvas中的text部分将会在浏览器不支持canvas对象时显示。
定义了canvas标签,当我们需要通过js对他进行操作的时候,通过getElementById就可以实现。
var theCanvas = document.getElementById("canvasOne");我们现在已经习惯使用jquery来开发任务,那么使用jquery如何获取canvas对象呢?
var canvas = $(''#canvasOne'').get(0);或var canvas = $(''#canvasOne'')[0];不知道大家注意到get(0)和[0]没有,如果没有使用get()方法或者[]下标的话,你的js代码将不能正常对canvas进行操作。因为$(''#canvasOne'')获取到的是一个jquery对象,而我们实际要操作的是一个html dom对象。这里有存在一个jquery对象转变成dom对象的问题,通过get()或者下标的方式就完成了这个转换。如果需要把一个dom对象转换成jquery对象,可以使用$()方法实现。不清楚的朋友只有自己去百度了,这里不做深究。
为了代码的健壮性,我们需要判断你的浏览器是否支持canvas对象,可以通过下面代码实现。

复制代码
代码如下:

if (!theCanvas || !theCanvas.getContext) {
return;
}

不过推荐大家使用modernizr.js库完成这一工作,这是一个很通过的html5 js库,提供了很多有用的方法

复制代码
代码如下:

function canvasSupport () {
return Modernizr.canvas;
}

canvas支持2d渲染,通过如下代码实现
var context = theCanvas.getContext("2d");
下面我们就可以通过context对象在canvas上绘制图像了。

复制代码
代码如下:

//设置区域颜色
context.fill;
//绘制区域
context.fillRect(0, 0, 500, 300);
//设置字体
context.font = "20px _sans";
//设置垂直对齐方式
context.textBaseline = "top";
//绘制文字
context.fillText ("Hello World!", 195, 80);
//设置边框颜色
context.stroke;
//绘制边框
context.strokeRect(5, 5, 490, 290);

下面介绍下图片的绘制。由于图片的异步下载的,为了保证你用canvas绘制一个图片时,该图片已经下载完毕,我们使用下面的方式:

复制代码
代码如下:

var helloWorldImage = new Image();
helloWorldImage.src = "helloworld.gif";
helloWorldImage.onload = function () {
context.drawImage(helloWorldImage, 160, 130);
}

当图片下面完毕时,会触发onload事件,这里再使用context对象绘制图片。
大家下载demo看完整代码,demo下载地址:html5canvas.helloworld.zip

今天关于HTML5 Canvas实现文本对齐的方法总结html canvas 文字的介绍到此结束,谢谢您的阅读,有关css实现文本两端对齐的方法、css实现文本图标对齐的方法、HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图_html5教程技巧、html5 canvas-1.canvas介绍(hello canvas)_html5教程技巧等更多相关知识的信息可以在本站进行查询。

本文标签: