欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

html5樹形,html5樹形菜單

html5中怎么在canvas中畫一個二叉樹

用html5開發(fā)隨機生成的大樹,你應(yīng)該沒想到40+行代碼就可以搞定了吧~接下來就跟大家說說這棵大樹是如何在html5開發(fā)中實現(xiàn)的。

成都創(chuàng)新互聯(lián)成立于2013年,我們提供高端重慶網(wǎng)站建設(shè)成都網(wǎng)站制作網(wǎng)站設(shè)計、網(wǎng)站定制、成都全網(wǎng)營銷推廣小程序開發(fā)、微信公眾號開發(fā)、seo優(yōu)化服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計、程序開發(fā)來完成項目落地,為成都電動窗簾企業(yè)提供源源不斷的流量和訂單咨詢。

同樣必須要有html容器。新建Index.html,代碼如下:

、html

1 、head

2 、meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /

3 、titlecanvas tree

4 、/head

5 、body

6 、script type="text/javascript" src="tree.js"

7 、/body

8 、/html

接下來咱們開始tree.js:

、var canvas = document.createElement("canvas");

9 var ctx = canvas.getContext("2d");

10 canvas.width = 640;

11 canvas.height = 480;

12 document.body.appendChild(canvas);

代碼很好理解,創(chuàng)建一個canvas畫布,然后選擇為2d畫布,設(shè)置長寬,最后將這個畫布添加到body標(biāo)簽下。

這個腳本最重要的函數(shù)在下面,大樹就是遞歸調(diào)用這個函數(shù)實現(xiàn)的,調(diào)用一次畫一條線段:

var drawTree = function (ctx, startX, startY, length, angle, depth, branchWidth){

13 var rand = Math.random,

14 newLength, newAngle, newDepth, maxBranch = 3,

15 endX, endY, maxAngle = 2 * Math.PI / 4,

16 subBraches;

17 ctx.beginPath();

18 ctx.moveTo(startX, startY);

19 endX = startX + length * Math.cos(angle);

20 endY = startY + length * Math.sin(angle);

21 ctx.lineCap = 'round';

22 ctx.lineWidth = branchWidth;

23 ctx.lineTo(endX, endY);

24 if (depth = 2){

25 ctx.strokeStyle = 'rgb(0,' + (((rand() * 64) + 128) 0) + ',0)';

26 } else {

27 ctx.strokeStyle = 'rgb(' + (((rand() * 64) + 64) 0) + ',50,25)';

28 }

29 ctx.stroke();

30 newDepth = depth - 1;

31 if (!newDepth)

32 return;

33 subBranches = (rand() * (maxBranch - 1)) + 1;

34 branchWidth *= 0.7;

35 for (var i = 0; i subBranches; i++){

36 newAngle = angle + rand() * maxAngle - maxAngle * 0.5;

37 newLength = length * (0.7 + rand() * 0.3);

38 drawTree(ctx, endX, endY, newLength, newAngle, newDepth, branchWidth);

39 }

40 }

接下來一點點解釋:

首先,解釋下各個變量的含義。ctx就是前面我們的2d畫布;startX是線段開始的橫坐標(biāo),同理startY是縱坐標(biāo);length是線段長度;angle是角度;depth是深度,葉子深度為1,樹干為12(可自己設(shè)定);branchWidth就線段的粗細(xì)。有了這些信息,其實就描述了一個線段,通過這些信息我們才能畫一個線段。

接下來又很可恥地一大段定義:

var rand = Math.random,

41 newLength, newAngle, newDepth, maxBranch = 3,

42 endX, endY, maxAngle = 2 * Math.PI / 4,

43 subBraches;

rand其實就是隨機一個0~1之間的實數(shù),顧名思義,接下來這些new的就是下一節(jié)線段的各種參數(shù)。maxBranch就是最多有3個分叉,最大的角度 PI/2 即為,下一級調(diào)整角度在90%范圍內(nèi)。subBranches就是分叉的個數(shù)。

好了,重要可以畫了:

ctx.beginPath();

44 ctx.moveTo(startX, startY);

45 endX = startX + length * Math.cos(angle);

46 endY = startY + length * Math.sin(angle);

47 ctx.lineCap = 'round';

48 ctx.lineWidth = branchWidth;

49 ctx.lineTo(endX, endY);

beginPath()表示告訴瀏覽器“我要開始畫了!”,把之前的記錄放棄了,這點有點像ps。moveTo()把光標(biāo)移動到(startX, startY),再計算終點坐標(biāo),endX,endY,有點像高中學(xué)的參數(shù)方程。然后告訴瀏覽器,lineCap要round,線段的兩頭要是圓形的。有多粗呢?等于branchWidth。線段一直畫到(endX, endY)。

if (depth = 2){

50 ctx.strokeStyle = 'rgb(0,' + (((rand() * 64) + 128) 0) + ',0)';

51 } else {

52 ctx.strokeStyle = 'rgb(' + (((rand() * 64) + 64) 0) + ',50,25)';

53 }

如果是已經(jīng)畫到了最后兩級,即為葉子,那么就rgb就為(0, 128~192, 0)(rgb代表顏色,分別為紅綠藍(lán),red green blue)。還沒的話,就在(64~128, 50 ,25)中取。大家可能發(fā)現(xiàn)了,rgb必須為整數(shù),但是rand()只能rand實數(shù)。大家其實也注意到了有個” 0″,js當(dāng)中表示位運算,整體向右移動n位,0就是移動0位。其實它的作用和Math.floor()一樣,但是速度更快。

動手畫!

ctx.stroke();

這個線段就畫好了,是時候準(zhǔn)備下它的分叉的時候了。

newDepth = depth - 1;

54 if (!newDepth)

55 return;

如果這個線段是最后一級,就沒有分叉了,也是一個遞歸的終止條件。

subBranches = (rand() * (maxBranch - 1)) + 1;

56 branchWidth *= 0.7;

57 for (var i = 0; i subBranches; i++){

58 newAngle = angle + rand() * maxAngle - maxAngle * 0.5;

59 newLength = length * (0.7 + rand() * 0.3);

60 drawTree(ctx, endX, endY, newLength, newAngle, newDepth, branchWidth);

61 }

分叉數(shù)是1~3中的一個數(shù)。然后有多少個分叉,就畫幾條線段,newAngle為原角度調(diào)整90度之內(nèi),新長度為原長度的0.7~1.0之間。

最后畫出主干,這棵樹就可以開始畫了。

drawTree(ctx, 320, 470, 60, -Math.PI / 2, 12, 12);

大家可能注意到角度為負(fù),不符合傳統(tǒng)觀念。但你要知道,畫布的縱坐標(biāo)和傳統(tǒng)的坐標(biāo)軸正好是相反的。

好了,html5開發(fā)隨機生成的大樹代碼就這樣完成了,怎么樣,一點都難吧!

html5課件有沒有用思維導(dǎo)圖寫出來的

制作思維導(dǎo)圖應(yīng)用

Qunee組件本身支持樹形布局,所以對于思維導(dǎo)圖的大體結(jié)構(gòu)是可以呈現(xiàn)的,到細(xì)節(jié)的地方就比較多了,包括線條的走向,節(jié)點的樣式,布局交互,自動吸附,雙擊編輯等等,本示例沒辦法面面俱到,所以參照XMind的效果,只實現(xiàn)了部分功能,供用戶參考和擴(kuò)展

連線定制

默認(rèn)連線為直線,通過定制EdgeUI可以實現(xiàn)曲線效果

function FlexEdgeUI(edge, graph){

Q.doSuperConstructor(this, FlexEdgeUI, arguments);

}

FlexEdgeUI.prototype = { drawEdge: function(path, fromUI, toUI, edgeType, fromBounds, toBounds){ var from = fromBounds.center; var to = toBounds.center; var cx = (from.x + to.x) / 2; var cy = (from.y + to.y) / 2;

path.curveTo(from.x, cy, cx, to.y);

}

}

Q.extend(FlexEdgeUI, Q.EdgeUI);

使用方式

通過圖元的#uiClass屬性,與定制的EdgeUI相關(guān)聯(lián)

function createEdge(name, from, to){

var edge = graph.createEdge(name, from, to);

edge.uiClass = FlexEdgeUI;

}

HTML5元素

h5元素大致的分為下面幾大類:

1.內(nèi)嵌------在文檔中添加其他類型的內(nèi)容,如audio,video,canvas,iframe等

2.流------在文檔和應(yīng)用的body中使用的元素,如form,h1,small等

3.標(biāo)題------段落標(biāo)題,如h1,h2,hgroup等

4.交互------與用戶交互的內(nèi)容,如音頻和視頻的空間,button,textarea等

5.元數(shù)據(jù)------通常出現(xiàn)在頁面的head中,設(shè)置頁面其他部分的表現(xiàn)和行為,如script,style,title等

6.短語------文本和文本標(biāo)記元素,如mark,kbd,sub,sup等

以上所有類型的元素都可以通過css來設(shè)定樣式。

HTML5定義類一組新的語義化標(biāo)記來描述元素的內(nèi)容。簡化了HTML頁面設(shè)計。

這些分別是

1.header------標(biāo)記頭部區(qū)域的內(nèi)容(用于整個頁面或頁面中的一塊區(qū)域)

2.footer------標(biāo)記腳部區(qū)域的內(nèi)容(用于整個頁面或頁面中的一塊區(qū)域)

3.section------Web頁面中的一塊區(qū)域

4.article------獨立的文章內(nèi)容

5.aside------相關(guān)內(nèi)容或者引文

6.nav------導(dǎo)航類輔助內(nèi)容

1.hgroup------用于對整個頁面或頁面中一個內(nèi)容區(qū)塊的標(biāo)題進(jìn)行組合

2.figure------表示一段獨立的流內(nèi)容,一般表示文檔主體流內(nèi)容中的一個獨立單元,使用figcaption元素可為figure元素組添加標(biāo)題

3.vedio------定義視頻,比如電影片段或其他視頻流

4.audio------定義音頻,比如音樂或其他音頻流

5.embed------用來插入各種多媒體,格式可以使MIDI,WAV,AIFF,AU,MP3等

6.mark------主要用來在視覺上向用戶呈現(xiàn)那些需要突出顯示和高亮顯示的文字。

7.time------表示日期或時間,也可以同時表示兩者

8.canvas------表示圖形,這個元素本身沒有行為,僅提供一塊畫布,但它把一個繪圖API展現(xiàn)給客戶端JavaScript,以使腳本能夠把想繪制的東西回執(zhí)到這塊畫布上。

9.output------表示不同類型的輸出,比如腳本的輸出

10.source------為媒介元素

11.menu------表示菜單列表。當(dāng)希望列出表單控件時使用的該標(biāo)簽

12.ruby------表示ruby注釋(中文注音或字符)

13.rt------表示字符的解釋或發(fā)音

14.rp------在ruby注釋中使用,以定義不支持ruby元素的瀏覽器所顯示的內(nèi)容

15.wbr------表示軟換行。與br的區(qū)別在于br表示此處必須換行,而wbr意思是瀏覽器窗口或父級元素的寬度足夠?qū)挄r,不進(jìn)行換行,寬度不夠時,主動在此處進(jìn)行換行。

16.command------表示命令按鈕,如單選按鈕,復(fù)選按鈕或按鈕框。

17.details------表示用戶要求得到并且可以得到的細(xì)節(jié)信息,可以與summary元素配合使用,summary元素提供標(biāo)題或圖例,標(biāo)題是可見的,用戶單機標(biāo)題時,會顯示細(xì)節(jié)信息。summary應(yīng)該是details元素的第一個子元素

18.datalist------表示可選數(shù)據(jù)的列表,與input元素配合使用,可以制作出輸入值的下拉列表。

19.datagrid------表示可選數(shù)據(jù)的列表,它以樹形列表形式來顯示

20.keygen------表示生成密鑰

21.progress------表示運行中的進(jìn)程,可以使用progress元素來顯示JavaScript中耗費時間函數(shù)的進(jìn)程

22.email------表示必須輸入email地址的文本輸入框

23.url------表示必須輸入url地址的文本輸入框

24.number------表示必須輸入數(shù)值地址的文本輸入框

25.range------表示必須輸入一定范圍內(nèi)數(shù)字值址的文本輸入框

26.Date Pickers------HTML5擁有多個可供選取日期和時間的新型輸入文本框

這個就不說了。

html5與傳統(tǒng)html區(qū)別

html5與傳統(tǒng)html區(qū)別

一. HTML5語法的改變

該知識點所說變化指的是基于HTML4基礎(chǔ)上所定義的改變,主要有如下:

1.HTML5的文件擴(kuò)展符(.html或.htm)與內(nèi)容類型(text/html)保持不變。

2.HTML5中,刻意不使用版本聲明,一份文檔將會適用于所有版本的HTML。

3.從HTML5開始,對于文件的字符編碼推薦使用UTF-8。

4.HTML5確保了與之前HTML版本的最大程度的兼容性。

為了保證兼容性,需從元素說起,在HTML5.中,元素的標(biāo)記可以省略。其體來說,元素的標(biāo)記分為“不允許寫結(jié)束標(biāo)記”、“可以省略結(jié)束標(biāo)記”和‘“開始標(biāo)記和結(jié)束標(biāo)記全部可以省略”三種類型。

不允許寫結(jié)束標(biāo)記元素有:area、base、br、col.....

可以省略結(jié)束標(biāo)記:li、dt、dd、p、rt......

開始標(biāo)記和結(jié)束標(biāo)記全部可以省略:html、head、body.....

二.新增的結(jié)構(gòu)元素

section元素表示頁面中的一個內(nèi)容區(qū)塊,比如章節(jié)、頁眉、頁腳或頁面中的其他部分;

article元素表示頁面中的一塊與上下文不相關(guān)的獨立內(nèi)容,譬如博客中的一篇文章或報紙中的一篇文章;

aside元素表示article元素的內(nèi)容之外的、與article元素的內(nèi)容相關(guān)的輔助信息;

header元素表示頁面中一個內(nèi)容區(qū)塊或整個頁面的標(biāo)題;

hgroup元素用于對整個頁面或頁面中一個內(nèi)容區(qū)塊的標(biāo)題進(jìn)行組合;

footer元素表示整個頁面或頁面中一個內(nèi)容區(qū)塊的腳注。一般來說,它會包含創(chuàng)作者的姓名、創(chuàng)作日期以及創(chuàng)作者聯(lián)系信息;

nav元素表示頁面中導(dǎo)航鏈接的.部分;

figure元素表示一段獨立的流內(nèi)容,一般表示文檔主體流內(nèi)容中的一個獨立單元,使用figcaption元素為figure元素組添加標(biāo)題

2、新增的其他元素

audio元素定義音頻,比如音樂或其他音頻流;

embed元素用來插入各種多媒體,格式可以是Midi、Wav、AU、MP3等;

mark元素上要用來在視覺上向用戶呈現(xiàn)那些需要突出顯示或高亮顯示的文字,典型應(yīng)用就是在搜索結(jié)果中向用戶高亮顯示搜素關(guān)鍵詞;

progress元素表示運行中的進(jìn)程

ruby元素表示ruby注釋(中文注音或字符)

rt元素表示字符(中文注音或字符)的解釋或發(fā)音

rp元素在ruby注釋中使用,以定義不支持ruby素的瀏覽器所顯示的內(nèi)容。

wbr元素表示軟換行,而當(dāng)寬度不夠時,主動在此處進(jìn)行換行

canvas元素表示圖形,比如圖表和其他圖像

cammand元素表示命令按鈕,比如單選按鈕、復(fù)選框或按鈕

details元素表示用戶要求得到并且可以得到的細(xì)節(jié)信息

datagrid元素表示可選數(shù)據(jù)的列表,它以樹形列表的形式來顯示

keygen元素表示生成密鑰

output元素表示不同類型的輸出,比如腳本的輸出

source元素為媒介元素(比如和)定義媒介資源

menu元素表示菜單列表

3、新增的input元素

email 類型表示必須輸入E-main地址的文本輸入框

url 類型表示必須輸入URL地址的文本輸入框

number類型表示必須輸人數(shù)值的文本輸入框

range 類型表示必須輸入一定范圍內(nèi)數(shù)字值的文本輸人框

HTML5擁有多個可供選取日期和時間的新型輸入文本框:

date ——選取日、月、年

month ——選取月、年

week ——選取周和年

time ——選取時間(小時和分鐘)

datetime ——一選取時間、日、月、年(UTC 時間)

datetime.local ——選取時間、日、月、年(本地時間)

三.廢除元素

1、能使用CSS替代的元素

對干basefont、big、center、font、s、strike、tt、u這些元素,由于它們的功能都是純粹去畫面展示服務(wù)的,而HTML5中提倡把畫面展示性功能放在CSS樣式表中統(tǒng)一編輯,所以這些元素廢除了

2、不再使用frame框架

對于frameset元素、frame元素與noframes元素,由于frame框架對網(wǎng)頁可用性存在負(fù)面影響,在HTML5中已不支持frame框架,只支持iframe框架,或者用服務(wù)器方創(chuàng)建的由多個頁面組成的復(fù)合頁面的形式,同時將以上這三個元素廢除。

3、只有部分瀏覽器支持的元素

對于applet、bgsound、blink、marquee等元素,由于只有部分瀏覽器支持這些元素,特別是bgsound元素以及marquee元素,只被Internet Explorer所支持,所以在HTML 5中被廢除。其中applet元素可由ernedd元素或object元素替代,bgsound元素可由audio元素替代,marquee可以由JavaScript編程的方式所替代

4、其他被廢除的元素:

廢除rb元素,使用ruby元素替代

廢除acronym元素,使用abbr元素替代

廢除dir元素,使用ul元素替代

廢除isindex元素,使用form元素與input元素相結(jié)合的方式替代

廢除listing元素,使用pre元素替代

廢除xmp元素,使用code元素替代

廢除nextid元素,使用GUIDS替代

廢除plaintext元素,使用“ text/plian” MIME類型替代

四.新增屬性和廢除屬性

一、新增屬性

1、與表單相關(guān)屬性

新增autofocus屬性,它以指定屬性的方式讓元素在畫面打開時自動獲得焦點;

新增placeholder屬性,它會對用戶的輸入進(jìn)行提示,提示用戶可以輸入的內(nèi)容;

新增form屬性,聲明它屬于哪個表單,然后將其放置在頁面上任何位置,而不是表單之內(nèi);

新增required屬性,該屬性表示在用戶提交的時候進(jìn)行檢查,檢查該元素內(nèi)一定要有輸入內(nèi)容;

2、與鏈接相關(guān)屬性

增加media屬性,該屬性規(guī)定目標(biāo)URL是為什么類型的媒介/設(shè)備進(jìn)行優(yōu)化的,只能在href屬性存在時使用;

增加hreflang屬性與rel屬性,以保持與a元素、link元素的一致;

3、其他屬性

屬性reverend,它指定列表倒序顯示;

為script元素增加async屬性,它定義腳本是否異步執(zhí)行;

二、廢除屬性

能被CSS樣式表替代的屬性全部廢除掉;

多余屬性,例如:target、profile、version等被廢除掉;

五.全局屬性

在HTML5中,新增了一個’‘全局屬性“的概念。所謂全局屬性,是指可以對任何元素都使用的屬性。

1、contentEditable 屬性

該屬性允許用戶編輯元素中的內(nèi)容,可以獲得鼠標(biāo)焦點,屬性為布爾值,可被指定為true或false。另外,該屬性還有個隱藏inherit狀態(tài),為true時,允許編輯,為false時,不允許編輯,未指定時,由inherit決定。

2、designMode 屬性

該屬性用來決定整個頁面是否可編輯。有兩個屬性“on”與"off"。屬性為"on"時,可編輯,為“off”時,不可編輯。

3、hidden屬性

所有元素都允許使用一個hidden屬性,該屬性類似于input元素中的hidden元素,功能是通知瀏覽器不渲染該元素,使該元素處于不可見狀態(tài)。該屬性值為布爾值,為true時,不可見,為false時,可見。

4、spellcheck屬性

該屬性是HTML 5針對input元素(type=text) 與textarea這兩個文本輸入框提供的一個新屬性,主要對用戶輸入內(nèi)容進(jìn)行拼寫與語法檢查。屬性值為布爾值,書寫時必須明確聲明屬性值為true或false書寫方式如下:

詳解form屬性

在HTML4中,表單內(nèi)的從屬元素必須書寫在表單內(nèi)部,但是在HTML5中,可以把他們書寫在頁面上任何地方,然后給元素制定一個form屬性,屬性值為該表單單位的id,這樣就可以聲明該元素從屬于指定表單了。

input元素從屬于表單,它唄書寫在表單內(nèi)部,用不著再對它制定form屬性。textarea元素唄書寫在表單之外,但它從屬于表單,所以表單的id制定給textareea元素的form屬性。

這樣做的好處是當(dāng)需要給頁面中的元素添加樣式時可以更方便地添加,因為它們不是被分散在各表單之內(nèi)的了。

;

網(wǎng)頁標(biāo)題:html5樹形,html5樹形菜單
文章URL:http://chinadenli.net/article35/dsioopi.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司動態(tài)網(wǎng)站服務(wù)器托管營銷型網(wǎng)站建設(shè)品牌網(wǎng)站建設(shè)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營