在本文中,我们将带你了解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 文字)
- css实现文本两端对齐的方法
- css实现文本图标对齐的方法
- HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图_html5教程技巧
- html5 canvas-1.canvas介绍(hello canvas)_html5教程技巧
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>
运行结果:
垂直对齐textBaseline
JavaScript Code复制内容到剪贴板
context.textBaseline=alphabetic|top|hanging|middle|ideographic|bottom;
其中各值及意义如下表。
值 | 描述 |
---|---|
alphabetic | 默认。文本基线是普通的字母基线。 |
top | 文本基线是em方框的顶端。 |
hanging | 文本基线是悬挂基线。 |
middle | 文本基线是em方框的正中。 |
ideographic | 文本基线是表意基线。 |
bottom | 文本基线是em方框的底端。 |
首先咱们通过一个图来看一下各个基线代表的位置。
我们通过一个例子来直观的感受一下。
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>
运行结果:
相关推荐:
HTML5 canvas基本绘图之绘制线条
html5生成柱状图(条形图)效果的实例代码
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: ''; 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实现文本图标对齐的方法
开发中遇见图片跟文字放在一行显示是最常见不过的了,两个行内元素的对齐通常也是最令人头疼,有时候明明使用了最常用的对齐方法,却总还是有些许偏差,先来看一个最基本的示例:
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 对齐文本和图片时,其实也是有一定的偏差的,如下图:
vertical-align 的middle值实际上是相对于小写字母x的一半高度来说的,所以图片会跟x的中间开始对齐,但是其他字符譬如S、中文,就会发现无论如何都会出现稍许偏差,图片会相对而言偏下。
2、使用 vertical-align 同时使用span包裹文本
让我们再稍做改变,将文本部分使用span标签包裹,并且对span使用 vertical-align: middle; 样式对齐。会发现此时图片会上移少许。
效果如下:
3、使用flex布局
display: flex; align-items: center;
不过就算是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视频教程

以上就是
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图_html5教程技巧
html5火的正热,最近有个想法也是要用到html的相关功能,所以也要好好学习一把。
好好看了一下Canvas的功能,感觉HTML5在客户端交互的功能性越来越强了,今天看了一下Canvas绘图,下边是几个实例,记下以备后用。
1、使用Canvas绘制直线:
- nbsp;html>
- html>
- head>
- meta charset="UTF-8">
- head>
- style type="text/css">
- canvas{border:dashed 2px #CCC}
- style>
- script type="text/javascript">
- function $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
- var can = $$(''can'');
- var cancans = can.getContext(''2d'');
- cans.moveTo(20,30);//第一个起点
- cans.lineTo(120,90);//第二个点
- cans.lineTo(220,60);//第三个点(以第二个点为起点)
- cans.lineWidth=3;
- cans.strokeStyle = ''red'';
- cans.stroke();
- }
- script>
- body onload="pageLoad();">
- canvas id="can" width="400px" height="300px">4canvas>
- body>
- html>
这里用到的两个API方法,moveTo和lineTo分别是线段的起点和终点坐标,变量为(X坐标,Y坐标),strokeStyle、stroke分别路径绘制样式和绘制路径。
立即学习“前端免费学习笔记(深入)”;
2、绘制渐变线条
渐变线条就是颜色有渐变的效果,当然渐变的样式可以遵循路径的方向也可以不遵循路径的方向:
- nbsp;html>
- html>
- head>
- meta charset="UTF-8">
- head>
- style type="text/css">
- canvas{border:dashed 2px #CCC}
- style>
- script type="text/javascript">
- function $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
- var can = $$(''can'');
- var cancans = can.getContext(''2d'');
- cans.moveTo(0,0);
- cans.lineTo(400,300);
- var gnt1 = cans.createLinearGradient(0,0,400,300);//线性渐变的起止坐标
- gnt1.addColorStop(0,''red'');//创建渐变的开始颜色,0表示偏移量,个人理解为直线上的相对位置,最大为1,一个渐变中可以写任意个渐变颜色
- gnt1.addColorStop(1,''yellow'');
- cans.lineWidth=3;
- cans.strokeStyle = gnt1;
- cans.stroke();
- }
- script>
- body onload="pageLoad();">
- canvas id="can" width="400px" height="300px">4canvas>
- body>
- html>
3、绘制矩形或正方形:
这种矩形框如果使用HTML4只能使用后台代码才能生成了,现在HTML5提供的Canvas功能却很容易就能绘制,所以说HTML5的优越性是相当高的。
- nbsp;html>
- html>
- head>
- meta charset="UTF-8">
- head>
- style type="text/css">
- canvas{border:dashed 2px #CCC}
- style>
- script type="text/javascript">
- function $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
- var can = $$(''can'');
- var cancans = can.getContext(''2d'');
- cans.fillStyle = ''yellow'';
- cans.fillRect(30,30,340,240);
- }
- script>
- body onload="pageLoad();">
- canvas id="can" width="400px" height="300px">4canvas>
- body>
- html>
这里使用了一个方法——fillRect()从字面意思也能知道这个就是填充一个矩形,这里的参数值得说明一下fillRect(X,Y,Width,Height),这个和数学里的坐标是不一样的,具体请看
这里的X,Y是相对Canvas左上角的起点开始的,谨记!!
4、绘制一个简单的矩形框
上例中讲到要绘制一个矩形块,填充了颜色,这个例子只是简单地绘制一个矩形而不实现填充效果。
- nbsp;html>
- html>
- head>
- meta charset="UTF-8">
- head>
- style type="text/css">
- canvas{border:dashed 2px #CCC}
- style>
- script type="text/javascript">
- function $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
- var can = $$(''can'');
- var cancans = can.getContext(''2d'');
- cans.strokeStyle = ''red'';
- cans.strokeRect(30,30,340,240);
- }
- script>
- body onload="pageLoad();">
- canvas id="can" width="400px" height="300px">4canvas>
- body>
- html>
这个很简单,和上例一样,就是将fill替换成了stroke,具体详见上例。
5、绘制一个线性渐变的矩形
渐变是填充的一种相当不错的效果,结合实例2和实例3,我们可以创建一个渐变的矩形
- nbsp;html>
- html>
- head>
- meta charset="UTF-8">
- head>
- style type="text/css">
- canvas{border:dashed 2px #CCC}
- style>
- script type="text/javascript">
- function $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
- var can = $$(''can'');
- var cancans = can.getContext(''2d'');
- var gnt1 = cans.createLinearGradient(10,0,390,0);
- gnt1.addColorStop(0,''red'');
- gnt1.addColorStop(0.5,''green'');
- gnt1.addColorStop(1,''blue'');
- cans.fillStyle = gnt1;
- cans.fillRect(10,10,380,280);
- }
- script>
- body onload="pageLoad();">
- canvas id="can" width="400px" height="300px">4canvas>
- body>
- html>
不解释了,记住fillRect(X,Y,Width,Height)就行了。
6、填充一个圆形
圆形的用途很广,当然也包含了椭圆。
- nbsp;html>
- html>
- head>
- meta charset="UTF-8">
- head>
- style type="text/css">
- canvas{border:dashed 2px #CCC}
- style>
- script type="text/javascript">
- function $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
- var can = $$(''can'');
- var cancans = can.getContext(''2d'');
- cans.beginPath();
- cans.arc(200,150,100,0,Math.PI*2,true);
- cans.closePath();
- cans.fillStyle = ''green'';//本来这里最初使用的是red,截图一看,傻眼了,怕上街被爱国者打啊,其实你懂的~~
- cans.fill();
- }
- script>
- body onload="pageLoad();">
- canvas id="can" width="400px" height="300px">4canvas>
- body>
- html>
这里的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、圆形区块
- nbsp;html>
- html>
- head>
- meta charset="UTF-8">
- head>
- style type="text/css">
- canvas{border:dashed 2px #CCC}
- style>
- script type="text/javascript">
- function $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
- var can = $$(''can'');
- var cancans = can.getContext(''2d'');
- cans.beginPath();
- cans.arc(200,150,100,0,Math.PI*2,false);
- cans.closePath();
- cans.lineWidth = 5;
- cans.strokeStyle = ''red'';
- cans.stroke();
- }
- script>
- body onload="pageLoad();">
- canvas id="can" width="400px" height="300px">4canvas>
- body>
- html>
这里不解释了,和上边的例子相同,lineWidth是控制线条的宽度的。
8、圆形渐变
- nbsp;html>
- html>
- head>
- meta charset="UTF-8">
- head>
- style type="text/css">
- canvas{border:dashed 2px #CCC}
- style>
- script type="text/javascript">
- function $$(id){
- return document.getElementById(id);
- }
- function pageLoad(){
- var can = $$(''can'');
- var cancans = can.getContext(''2d'');
- var gnt = cans.createRadialGradient(200,300,50,200,200,200);
- gnt.addColorStop(1,''red'');
- gnt.addColorStop(0,''green'');
- cans.fillStyle = gnt;
- cans.fillRect(0,0,800,600);
- }
- script>
- body onload="pageLoad();">
- canvas id="can" width="800px" height="600px">4canvas>
- body>
- html>
这里需要说明的是createRadialGradient方法,参数有(Xstart,Ystart,radiusStart,XEnd,YEnd,radiusEnd),也就是说,它在实行渐变时,使用了两个圆,一个是原始的圆,一个是渐变式圆,其实,这种通过坐标与半径控制的方式可以实现很多样式,比如
立体圆
- var gnt = cans.createRadialGradient(200,150,0,200,50,250);
- gnt.addColorStop(0,''red'');
- gnt.addColorStop(1,''#333'');
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标签,如下:
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;
}