TML可以将文档分割为若干段落
段落通过<p>标签定义,注意不要忘记结束标签
THML折行
可以使用如下例子测试
HTML输出-使用提醒
对于 HTML,您无法通过在 HTML 代码中添加额外的空格或换行来改变输出的效果。
当显示页面时,浏览器会移除源代码中多余的空格和空行。所有连续的空格或空行都会被算作一个空格。需要注意的是,HTML 代码中的所有连续的空行(换行)也被显示为一个空格。
家在用canvas绘制文本时,经常会碰到怎么解决文本折行的问题。今天,老K为大家分享一种实现方法。
实现的基本思路:
先将输入的每个字拆分成单个元素,再将这些元素插入到一个隐藏的元素中,该元素宽度和目标canvas的宽度相等,接下来只需要遍历插入容器中的子元素,然后根据子元素相对插入容器的相对距离绘制文字到canvas里。
<!DOCTYPE html> <head> <meta charset="utf-8"> <title>canvas-text-wrap</title> <style type="text/css"> * { margin: 0 } #main { width: 400px; margin: 20px auto 0; } #canvas, #editableWarp, #editable, #hideText { width: 400px; height: 125px; padding: 0; border: 0; background: #333; color: #FFF; font-size: 14px; font-family: 'sans-serif'; position: relative; z-index: 1 } #hideText { z-index: 0; position: absolute; word-break: break-word; word-wrap: break-word; } p { line-height: 32px; } </style> </head> <body> <div id="main"> <p> 输入: </p> <div id="editableWarp"> <div id="hideText"></div> <textarea id="editable" placeholder="请输入文字..."></textarea> </div> <p> canvas输出: </p> </div> <script type="text/javascript"> function addEvent(obj,type,handle){//封装绑定事件方法 try{ // Chrome、FireFox、Opera、Safari、IE9.0及其以上版本 obj.addEventListener(type,handle,false); }catch(e){ try{ // IE8.0及其以下版本 obj.attachEvent('on' + type,handle); }catch(e){ // 早期浏览器 obj['on' + type]=handle; } } }; function getStyle(node, styleType){//获取标签样式方法 return node.currentStyle? node.currentStyle[styleType]: getComputedStyle(node)[styleType];//浏览器中有node.currentStyle方法就用,没有就用另一个 }; var $editable=document.getElementById('editable'), $hideText=document.getElementById('hideText'), $main=document.getElementById('main'), editable_pos=$editable.getBoundingClientRect(); function initCanvasDom(){//创建canvas标签 var $canvas=document.createElement('canvas'); $canvas.innerHTML='您的浏览器不支持canvas'; $canvas.width='400'; $canvas.height='125'; $canvas.id='canvas'; $main.appendChild($canvas); return $canvas; } var $canvas=initCanvasDom(); var ctx=$canvas.getContext('2d'); addEvent($editable,'blur',function(){//绑定方法 var txt=$editable.value, html=converText(txt); $hideText.innerHTML=''; $hideText.innerHTML=html; drawText(); }); function converText(txt) { var html=txt.replace(/(\S)/ig, '<span>$1</span>'); html=html.replace(/\n|\r/ig,'<br>'); html=html.replace(/\s/ig,' '); return html; } function drawText() { $main.removeChild($canvas);//删除旧的canvas标签 $canvas=initCanvasDom();//创建新的canvas标签 ctx=$canvas.getContext('2d'); var canvas_width=getStyle($canvas,'width'), canvas_height=getStyle($canvas,'height'); ctx.clearRect(0,0,canvas_width,canvas_height); var fontSize=getStyle($hideText,'fontSize'); ctx.font=fontSize + ' sans-serif'; ctx.textAlign='center'; ctx.textBaseline='top'; ctx.fillStyle='#FFFFFF'; var text_span_list=$hideText.getElementsByTagName('span'), i=0,text_span_list_length=text_span_list.length,pos=null, tex='',item_left=0,item_top=0; for(;i<text_span_list_length;i++){ pos=text_span_list[i].getBoundingClientRect(); txt=text_span_list[i].innerHTML; item_left=parseInt(pos.left-editable_pos.left); item_top=parseInt(pos.top-editable_pos.top); ctx.fillText(txt,item_left,item_top); } } </script> </body> </html>
这样基本实现了这个功能。大家可以参考一下代码,自己亲自试一下。为了实现canvas里的文字时时更新,需要动态创建canvas标签,并且每次执行drawText方法时要删掉上一次创建的canvas标签,重新创建一个新的。
本文为原创内容,若转载请注明出处,转发感激不尽。
HTML 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的。
实例
<h1>This is a heading</h1> <h2>This is a heading</h2> <h3>This is a heading</h3>
HTML基础教程:元素属性标题段落
HTML 段落是通过 <p> 标签进行定义的。
实例
<p>This is a paragraph.</p> <p>This is another paragraph.</p>
HTML 链接是通过 <a> 标签进行定义的。
实例
<a href="http://www.toutiao.com">This is a link</a>
注释:在 href 属性中指定链接的地址。
HTML 图像是通过 <img> 标签进行定义的。
实例
<img src="aaaa.jpg" width="104" height="142" />
<p>This is my first paragraph.</p>
这个 <p> 元素定义了 HTML 文档中的一个段落。
这个元素拥有一个开始标签 <p>,以及一个结束标签 </p>。
元素内容是:This is my first paragraph。
<body> <p>This is my first paragraph.</p> </body>
<body> 元素定义了 HTML 文档的主体。
这个元素拥有一个开始标签 <body>,以及一个结束标签 </body>。
元素内容是另一个 HTML 元素(p 元素)。
<html> <body> <p>This is my first paragraph.</p> </body> </html>
<html> 元素定义了整个 HTML 文档。
这个元素拥有一个开始标签 <html>,以及一个结束标签 </html>。
元素内容是另一个 HTML 元素(body 元素)。
<hr /> 标签在 HTML 页面中创建水平线。
hr 元素可用于分隔内容。
实例
<p>This is a paragraph</p> <hr /> <p>This is a paragraph</p> <hr /> <p>This is a paragraph</p>
提示:使用水平线 (<hr> 标签) 来分隔文章中的小节是一个办法(但并不是唯一的办法)。HTML 注释
可以将注释插入 HTML 代码中,这样可以提高其可读性,使代码更易被人理解。浏览器会忽略注释,也不会显示它们。
实例
<!-- This is a comment -->
注释:开始括号之后(左边的括号)需要紧跟一个叹号,结束括号之前(右边的括号)不需要。
提示:合理地使用注释可以对未来的代码编辑工作产生帮助。HTML 折行
如果您希望在不产生一个新段落的情况下进行换行(新行),请使用 <br /> 标签:
*请认真填写需求信息,我们会在24小时内与您取得联系。