TML可以將文檔分割為若干段落
段落通過(guò)<p>標(biāo)簽定義,注意不要忘記結(jié)束標(biāo)簽
THML折行
可以使用如下例子測(cè)試
HTML輸出-使用提醒
對(duì)于 HTML,您無(wú)法通過(guò)在 HTML 代碼中添加額外的空格或換行來(lái)改變輸出的效果。
當(dāng)顯示頁(yè)面時(shí),瀏覽器會(huì)移除源代碼中多余的空格和空行。所有連續(xù)的空格或空行都會(huì)被算作一個(gè)空格。需要注意的是,HTML 代碼中的所有連續(xù)的空行(換行)也被顯示為一個(gè)空格。
家在用canvas繪制文本時(shí),經(jīng)常會(huì)碰到怎么解決文本折行的問(wèn)題。今天,老K為大家分享一種實(shí)現(xiàn)方法。
實(shí)現(xiàn)的基本思路:
先將輸入的每個(gè)字拆分成單個(gè)元素,再將這些元素插入到一個(gè)隱藏的元素中,該元素寬度和目標(biāo)canvas的寬度相等,接下來(lái)只需要遍歷插入容器中的子元素,然后根據(jù)子元素相對(duì)插入容器的相對(duì)距離繪制文字到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="請(qǐng)輸入文字..."></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){//獲取標(biāo)簽樣式方法 return node.currentStyle? node.currentStyle[styleType]: getComputedStyle(node)[styleType];//瀏覽器中有node.currentStyle方法就用,沒(méi)有就用另一個(gè) }; var $editable=document.getElementById('editable'), $hideText=document.getElementById('hideText'), $main=document.getElementById('main'), editable_pos=$editable.getBoundingClientRect(); function initCanvasDom(){//創(chuàng)建canvas標(biāo)簽 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標(biāo)簽 $canvas=initCanvasDom();//創(chuàng)建新的canvas標(biāo)簽 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>
這樣基本實(shí)現(xiàn)了這個(gè)功能。大家可以參考一下代碼,自己親自試一下。為了實(shí)現(xiàn)canvas里的文字時(shí)時(shí)更新,需要?jiǎng)討B(tài)創(chuàng)建canvas標(biāo)簽,并且每次執(zhí)行drawText方法時(shí)要?jiǎng)h掉上一次創(chuàng)建的canvas標(biāo)簽,重新創(chuàng)建一個(gè)新的。
本文為原創(chuàng)內(nèi)容,若轉(zhuǎn)載請(qǐng)注明出處,轉(zhuǎn)發(fā)感激不盡。
HTML 標(biāo)題(Heading)是通過(guò) <h1> - <h6> 等標(biāo)簽進(jìn)行定義的。
實(shí)例
<h1>This is a heading</h1> <h2>This is a heading</h2> <h3>This is a heading</h3>
HTML基礎(chǔ)教程:元素屬性標(biāo)題段落
HTML 段落是通過(guò) <p> 標(biāo)簽進(jìn)行定義的。
實(shí)例
<p>This is a paragraph.</p> <p>This is another paragraph.</p>
HTML 鏈接是通過(guò) <a> 標(biāo)簽進(jìn)行定義的。
實(shí)例
<a >This is a link</a>
注釋:在 href 屬性中指定鏈接的地址。
HTML 圖像是通過(guò) <img> 標(biāo)簽進(jìn)行定義的。
實(shí)例
<img src="aaaa.jpg" width="104" height="142" />
<p>This is my first paragraph.</p>
這個(gè) <p> 元素定義了 HTML 文檔中的一個(gè)段落。
這個(gè)元素?fù)碛幸粋€(gè)開始標(biāo)簽 <p>,以及一個(gè)結(jié)束標(biāo)簽 </p>。
元素內(nèi)容是:This is my first paragraph。
<body> <p>This is my first paragraph.</p> </body>
<body> 元素定義了 HTML 文檔的主體。
這個(gè)元素?fù)碛幸粋€(gè)開始標(biāo)簽 <body>,以及一個(gè)結(jié)束標(biāo)簽 </body>。
元素內(nèi)容是另一個(gè) HTML 元素(p 元素)。
<html> <body> <p>This is my first paragraph.</p> </body> </html>
<html> 元素定義了整個(gè) HTML 文檔。
這個(gè)元素?fù)碛幸粋€(gè)開始標(biāo)簽 <html>,以及一個(gè)結(jié)束標(biāo)簽 </html>。
元素內(nèi)容是另一個(gè) HTML 元素(body 元素)。
<hr /> 標(biāo)簽在 HTML 頁(yè)面中創(chuàng)建水平線。
hr 元素可用于分隔內(nèi)容。
實(shí)例
<p>This is a paragraph</p> <hr /> <p>This is a paragraph</p> <hr /> <p>This is a paragraph</p>
提示:使用水平線 (<hr> 標(biāo)簽) 來(lái)分隔文章中的小節(jié)是一個(gè)辦法(但并不是唯一的辦法)。HTML 注釋
可以將注釋插入 HTML 代碼中,這樣可以提高其可讀性,使代碼更易被人理解。瀏覽器會(huì)忽略注釋,也不會(huì)顯示它們。
實(shí)例
<!-- This is a comment -->
注釋:開始括號(hào)之后(左邊的括號(hào))需要緊跟一個(gè)嘆號(hào),結(jié)束括號(hào)之前(右邊的括號(hào))不需要。
提示:合理地使用注釋可以對(duì)未來(lái)的代碼編輯工作產(chǎn)生幫助。HTML 折行
如果您希望在不產(chǎn)生一個(gè)新段落的情況下進(jìn)行換行(新行),請(qǐng)使用 <br /> 標(biāo)簽:
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。