web前端

1褒傅、WEB前端是神馬

Web前端開發(fā)是從網(wǎng)頁(yè)制作演變而來(lái)的弃锐,名稱上有很明顯的時(shí)代特征。在互聯(lián)網(wǎng)的演化進(jìn)程中殿托,網(wǎng)頁(yè)制作是Web1.0時(shí)代的產(chǎn)物霹菊,那時(shí)網(wǎng)站的主要內(nèi)容都是靜態(tài)的,用戶使用網(wǎng)站的行為也以瀏覽為主支竹。2005年以后旋廷,互聯(lián)網(wǎng)進(jìn)入Web2.0時(shí)代鸠按,各種類似桌面軟件的Web應(yīng)用大量涌現(xiàn),網(wǎng)站的前端由此發(fā)生了翻天覆地的變化饶碘。網(wǎng)頁(yè)不再只是承載單一的文字和圖片目尖,各種富媒體讓網(wǎng)頁(yè)的內(nèi)容更加生動(dòng),網(wǎng)頁(yè)上軟件化的交互形式為用戶提供了更好的使用體驗(yàn)扎运,這些都是基于前端技術(shù)實(shí)現(xiàn)的瑟曲。 以前會(huì)Photoshop和Dreamweaver就可以制作網(wǎng)頁(yè),現(xiàn)在只掌握這些已經(jīng)遠(yuǎn)遠(yuǎn)不夠了绪囱。無(wú)論是開發(fā)難度上测蹲,還是開發(fā)方式上,現(xiàn)在的網(wǎng)頁(yè)制作都更接近傳統(tǒng)的網(wǎng)站后臺(tái)開發(fā)鬼吵,所以現(xiàn)在不再叫網(wǎng)頁(yè)制作扣甲,而是叫Web前端開發(fā)。Web前端開發(fā)在產(chǎn)品開發(fā)環(huán)節(jié)中的作用變得越來(lái)越重要齿椅,而且需要專業(yè)的前端工程師才能做好琉挖。Web前端開發(fā)是一項(xiàng)很特殊的工作,涵蓋的知識(shí)面非常廣,既有具體的技術(shù),又有抽象的理念碴巾。簡(jiǎn)單地說(shuō)断楷,它的主要職能就是把網(wǎng)站(Web App網(wǎng)頁(yè)應(yīng)用和Hybrid App混合應(yīng)用)的界面更好地呈現(xiàn)給用戶斋枢。

2、前端技術(shù)

W3C標(biāo)準(zhǔn)

W3C標(biāo)準(zhǔn)不是某一個(gè)標(biāo)準(zhǔn),而是一系列標(biāo)準(zhǔn)的集合。網(wǎng)頁(yè)主要由三部分組成:結(jié)構(gòu)(Structure)险耀、表現(xiàn)(Presentation)和行為(Behavior)。對(duì)應(yīng)的標(biāo)準(zhǔn)也分三方面:結(jié)構(gòu)化標(biāo)準(zhǔn)語(yǔ)言主要包括HTML玖喘,表現(xiàn)標(biāo)準(zhǔn)語(yǔ)言主要包括CSS甩牺,行為標(biāo)準(zhǔn)主要包括對(duì)象模型(如W3C DOM)、ECMAScript等累奈。

簡(jiǎn)單來(lái)說(shuō)就是: html(結(jié)構(gòu)) + css(表現(xiàn)) + js(行為)

學(xué)習(xí)資源:http://www.w3school.com.cn/
名詞解釋:W3C——萬(wàn)維網(wǎng)聯(lián)盟(World Wide Web Consortium)

HTML——WEB應(yīng)用的基石

HyperText Markup Language 超文本標(biāo)記語(yǔ)言贬派。超文本是用超鏈接的方法,將各種不同空間的信息組織在一起的網(wǎng)狀文本澎媒。信息可以包含圖片搞乏、鏈接,甚至音樂(lè)戒努、程序等非文字元素查描。

html文件示例如下:

標(biāo)簽的基本格式如下:

示例中的標(biāo)簽是個(gè)閉合標(biāo)簽,有部分標(biāo)簽不是閉合標(biāo)簽。例如:<input type="text" name="test" value="test"/>

一個(gè)標(biāo)準(zhǔn)的html文件主要包括如下常用的標(biāo)簽:

  • !DOCTYPE:文檔類型聲明冬三,它的目的是要告訴瀏覽器,它應(yīng)該使用什么樣的文檔類型定義來(lái)解析文檔缘缚。示例中所示的文檔類型是html5勾笆。文檔類型一般是向下兼容的,html5基本兼容html4.01.
  • html:文檔的根節(jié)點(diǎn)桥滨。<html> 與 </html> 標(biāo)簽限定了文檔的開始點(diǎn)和結(jié)束點(diǎn)窝爪,在它們之間是文檔的頭部和主體。
  • head:<head> 標(biāo)簽用于定義文檔的頭部齐媒,它是所有頭部元素的容器蒲每。<head> 中的元素可以引用腳本、指示瀏覽器在哪里找到樣式表喻括、提供元信息等等邀杏。
  • meta:<meta> 元素可提供有關(guān)頁(yè)面的元信息(meta-information),比如針對(duì)搜索引擎的關(guān)鍵詞唬血,文件編碼類型望蜡,瀏覽器版本等。
  • title:文檔標(biāo)題拷恨,瀏覽器的標(biāo)簽頁(yè)顯示的內(nèi)容脖律。
  • link:<link>標(biāo)簽定義文檔與外部資源的關(guān)系,最常見的用途是鏈接樣式表(css文件)腕侄,ICON小泉。
  • script:<script>標(biāo)簽用于定義客戶端腳本,比如 JavaScript冕杠。既可以包含腳本語(yǔ)句微姊,也可以通過(guò) src 屬性指向外部腳本文件。
  • style:<style> 標(biāo)簽用于為 HTML 文檔定義樣式信息拌汇。
  • body:body 元素定義文檔的主體柒桑。
  • h1~h6:<h1> 定義最大的標(biāo)題。<h6> 定義最小的標(biāo)題噪舀。
  • div:<div> 可定義文檔中的分區(qū)或節(jié)魁淳,可以把文檔分割為獨(dú)立的、不同的部分
  • p:<p> 標(biāo)簽定義段落与倡。
  • span:<span> 標(biāo)簽被用來(lái)組合文檔中的行內(nèi)元素界逛。
  • a:<a> 標(biāo)簽定義超鏈接,用于從一張頁(yè)面鏈接到另一張頁(yè)面纺座,最重要的屬性是 href 屬性息拜,它指示鏈接的目標(biāo)。
  • button:<button> 標(biāo)簽定義一個(gè)按鈕。
  • img:img 元素向網(wǎng)頁(yè)中嵌入一幅圖像少欺。
  • input:<input> 標(biāo)簽用于搜集用戶信息喳瓣。根據(jù)不同的 type 屬性值,輸入字段擁有很多種形式赞别。輸入字段可以是文本字段畏陕、復(fù)選框、單選按鈕仿滔、按鈕等等惠毁。

其他更多標(biāo)簽,請(qǐng)見:http://www.w3school.com.cn/tags/tag_doctype.asp

文檔流

冷知識(shí):W3C規(guī)范中沒有document flow這個(gè)概念崎页,只有normal-flow, 文檔流的叫法主要還是多數(shù)中文譯者的翻譯方式問(wèn)題鞠绰。據(jù)說(shuō)來(lái)源于報(bào)紙的排版。

什么是文檔流飒焦?簡(jiǎn)單說(shuō)就是元素按照其在HTML中決定標(biāo)簽位置順序排布的過(guò)程蜈膨。并且這種過(guò)程遵循標(biāo)準(zhǔn)的描述。html的文檔流規(guī)則是將窗體自上而下分成一行行, 并在每行中按從左至右的順序排放元素荒给。

塊級(jí)標(biāo)簽和內(nèi)聯(lián)標(biāo)簽

HTML中的標(biāo)簽主要是塊級(jí)標(biāo)簽或內(nèi)聯(lián)標(biāo)簽丈挟。塊級(jí)標(biāo)簽一般是其他標(biāo)簽的容器標(biāo)簽,能容納其他塊標(biāo)簽或內(nèi)聯(lián)標(biāo)簽志电。簡(jiǎn)單來(lái)說(shuō)曙咽,塊標(biāo)簽就好比一個(gè)四方塊,可以放其他的四方塊挑辆,并可以呈現(xiàn)在頁(yè)面上任何地方例朱。默認(rèn)情況下塊標(biāo)簽,是獨(dú)占一行的鱼蝉。常見的塊標(biāo)簽:div洒嗤、h1-h6標(biāo)題、form(只能用來(lái)容納其他塊標(biāo)簽)魁亦、hr渔隶、p、table洁奈、ul间唉、ol等。內(nèi)聯(lián)標(biāo)簽也叫內(nèi)嵌標(biāo)簽或行內(nèi)標(biāo)簽利术,一般都是基于語(yǔ)義級(jí)(semantic)的基本標(biāo)簽呈野。內(nèi)聯(lián)標(biāo)簽只能容納文本或者其他內(nèi)聯(lián)標(biāo)簽,常見內(nèi)聯(lián)標(biāo)簽有a和span印叁。

塊標(biāo)簽與內(nèi)聯(lián)標(biāo)簽的區(qū)別被冒?

  1. 塊級(jí)標(biāo)簽军掂,總是在新行上開始;內(nèi)聯(lián)標(biāo)簽昨悼,和其他標(biāo)簽都在一行上蝗锥。
  2. 塊級(jí)標(biāo)簽,能容納其他塊標(biāo)簽或內(nèi)聯(lián)標(biāo)簽幔戏;內(nèi)聯(lián)標(biāo)簽玛追,只能容納文本或者其他內(nèi)聯(lián)標(biāo)簽。
  3. 塊級(jí)標(biāo)簽中高度闲延,行高以及頂和底邊距都可控制;內(nèi)聯(lián)標(biāo)簽中高韩玩,行高及頂和底邊距不可改變垒玲。

在實(shí)際應(yīng)用中,可以通過(guò)CSS修改標(biāo)簽的display屬性轉(zhuǎn)變標(biāo)簽的性質(zhì)找颓,進(jìn)行相互轉(zhuǎn)換合愈。建議按照原始性質(zhì)使用,盡量不進(jìn)行轉(zhuǎn)換击狮。

如何設(shè)計(jì)html佛析?

如下圖,通常先設(shè)計(jì)好結(jié)構(gòu)圖彪蓬,然后根據(jù)結(jié)構(gòu)圖再進(jìn)行標(biāo)簽的書寫寸莫。


HTML5

HTML4.01版本誕生于 1999 年。自從那以后档冬,Web 世界已經(jīng)經(jīng)歷了巨變膘茎。多媒體的大量應(yīng)用,各類app不斷涌現(xiàn)酷誓。不同于HTML4.01完全由W3C制定披坏。HTML5 是 W3C 與 WHATWG 合作的結(jié)果。WHATWG 致力于 web 表單和應(yīng)用程序盐数,而 W3C 專注于 XHTML 2.0棒拂。HTML5草案的前身名為 Web Applications 1.0,于2004年被WHATWG提出玫氢,于2007年被W3C接納帚屉,并成立了新的 HTML 工作團(tuán)隊(duì)。HTML5 的第一份正式草案已于2008年1月22日公布琐旁。最終在2014年定稿涮阔。

注:W3C 指 World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟灰殴。
注:WHATWG 指 Web Hypertext Application Technology Working Group敬特,Web超文本應(yīng)用技術(shù)工作組掰邢。

HTML5建立的一些規(guī)則:

  1. 新特性應(yīng)該基于 HTML、CSS伟阔、DOM 以及 JavaScript辣之。
  2. 減少對(duì)外部插件的需求(比如 Flash)
  3. 更優(yōu)秀的錯(cuò)誤處理
  4. 更多取代腳本的標(biāo)記
  5. HTML5應(yīng)該獨(dú)立于設(shè)備

HTML5中的新特性

  1. 用于繪畫的 canvas 元素
  2. 用于多媒體的 video 和 audio 元素
  3. 對(duì)本地離線存儲(chǔ)的更好的支持
  4. 新的特殊內(nèi)容元素,比如 article皱炉、footer怀估、header、nav合搅、section
  5. 新的表單控件多搀,比如 calendar、date灾部、time康铭、email、url赌髓、search

瀏覽器支持

最新版本的 Chrome从藤、Firefox、Safari 以及 Opera 基本上完全支持 HTML5 特性锁蠕。IE9開始支持某些 HTML5 特性夷野。詳細(xì)對(duì)比:
http://caniuse.com/#comparison
http://html5test.com/compare/browser/firefoxmobile-35/chrome-39/ie-8.html

HTML4.01和HTML5結(jié)構(gòu)區(qū)別

HTML5新特性簡(jiǎn)單示例

canvas

canvas標(biāo)簽使用 JavaScript 在網(wǎng)頁(yè)上繪制圖像。畫布是一個(gè)矩形區(qū)域荣倾,您可以控制其每一像素悯搔。canvas 擁有多種繪制路徑、矩形逃呼、圓形鳖孤、字符以及添加圖像的方法。
代碼示例:

<!DOCTYPE html>
 <html>
     <body>
         <canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;">
             Your browser does not support the canvas element.
         </canvas>
         <script type="text/javascript">
             var c=document.getElementById("myCanvas");
             var cxt=c.getContext("2d");//指定二維繪圖抡笼,目前只支持2D繪圖苏揣,后續(xù)可能會(huì)支持3D
             cxt.moveTo(10,10);//繪制起點(diǎn)。(0推姻,0)對(duì)應(yīng)左上角平匈,向右和向下遞增
             cxt.lineTo(150,50);//畫一條直線(10,10)到(150,50)
             cxt.lineTo(10,50);//畫一條直線(150,50)到(10,50)
             cxt.strokeStyle="green"; //指定線條顏色
             cxt.stroke();//顯示繪圖結(jié)果
         </script>
     </body>
 </html>

vedio/audio

在HTML5以前,如果您想在網(wǎng)頁(yè)中嵌入在線觀看的視頻藏古,一般都需要使用Flash視頻流增炭,通過(guò)使用 <object> 和 <embed> 標(biāo)簽,就可以通過(guò)瀏覽器播放swf拧晕、flv等格式視頻文件隙姿,但是前提是瀏覽器必須安裝第三方插件:Adobe Flash Player。而現(xiàn)代智能手機(jī)和iPad等一般都不支持Flash厂捞,所以無(wú)法瀏覽網(wǎng)頁(yè)上的視頻输玷。而 HTML 5 改變了這一事實(shí)队丝,Web開發(fā)者只需要使用 <video> 標(biāo)簽就可以輕松加載視頻文件,而不需要任何第三方插件欲鹏。

vedio支持的視頻格式有三種:

  1. Ogg 帶有 Theora 視頻編碼和 Vorbis 音頻編碼的 Ogg 文件
  2. MPEG4(MP4)帶有 H.264 視頻編碼和 AAC 音頻編碼的 MPEG 4 文件
  3. WebM 帶有 VP8 視頻編碼和 Vorbis 音頻編碼的 WebM 文件

代碼示例:

 <video id="coures-video" class="vjs-tech" preload="none" 
     poster="http://demo.com/upload/course/20160104/1451886552971.jpg"
     controls="controls" loop="loop" width="640px" height="480px;"> 
      <source src="http://demo.com/upload/course/20160104/1451886551972.mp4" type="video/mp4">
 </video>

audio與vedio基本相同,不再贅述机久。

Drag 和 Drop

拖放是一種常見的特性,即抓取對(duì)象以后拖到另一個(gè)位置赔嚎。在 HTML5 中膘盖,拖放是標(biāo)準(zhǔn)的一部分,任何元素都能夠拖放尤误。只需要簡(jiǎn)單的幾個(gè)屬性和響應(yīng)函數(shù)即可實(shí)現(xiàn)拖放侠畔。

代碼示例:

<div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
     <img src="http://demo.com/images/11.jpg" draggable="true"     ondragstart="drag(event)" id="drag1" />
 </div>
 <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
 //ondragover 事件規(guī)定在何處放置被拖動(dòng)的數(shù)據(jù)。
 function allowDrop(ev){
     ev.preventDefault();
 }
 //移動(dòng)響應(yīng)事件损晤,獲取正在移動(dòng)的標(biāo)簽ID
 function drag(ev){
     ev.dataTransfer.setData("Text",ev.target.id);
 }
 //進(jìn)行放置 響應(yīng)事件
 function drop(ev) {
     ev.preventDefault();
     var data=ev.dataTransfer.getData("Text");
     ev.target.appendChild(document.getElementById(data));
 }

INPUT新類型

HTML5 擁有多個(gè)新的表單輸入類型践图,這些新特性提供了更好的輸入控制和驗(yàn)證。email沉馆,url,number德崭,range斥黑,Date pickers (date, month, week, time, datetime, datetime-local),search眉厨,color 锌奴。

  • email 類型用于應(yīng)該包含 e-mail 地址的輸入域,在提交表單時(shí)憾股,會(huì)自動(dòng)驗(yàn)證 email 域的值:
    <input type="email" name="user_email" />
  • number 類型用于應(yīng)該包含數(shù)值的輸入域鹿蜀,還能夠設(shè)定對(duì)所接受的數(shù)字的限定:
    <input type="number" name="points" min="1" max="10" />
  • Date Pickers(日期選擇器)擁有多個(gè)可供選取日期和時(shí)間的新輸入類型:
    date - 選取日、月服球、年
    month - 選取月茴恰、年
    week - 選取周和年
    time - 選取時(shí)間(小時(shí)和分鐘)
    datetime - 選取時(shí)間、日斩熊、月往枣、年(UTC 時(shí)間)
    datetime-local - 選取時(shí)間、日粉渠、月分冈、年(本地時(shí)間)
    <input type="date" name="user_date" />

本地存儲(chǔ)

說(shuō)到本地存儲(chǔ),真是歷盡千辛萬(wàn)苦才走到HTML5這一步霸株,之前的歷史大概如下圖所示:


最早的Cookies大小約4KB雕沉,而且IE6只支持每個(gè)域名20個(gè)cookies。優(yōu)勢(shì)就是大家都支持去件,而且支持得還比較好坡椒。后來(lái)IE又推出了userData扰路,現(xiàn)在用的比較多的是Flash,空間是Cookie的25倍肠牲,基本夠用幼衰。再之后Google推出了Gears,雖然沒有限制缀雳,但是要裝額外的插件渡嚣。到了HTML5把這些都統(tǒng)一了,官方建議是每個(gè)網(wǎng)站5MB肥印。所有支持的瀏覽器目前都采用的5MB识椰,盡管有一些瀏覽器可以讓用戶設(shè)置,但對(duì)于網(wǎng)頁(yè)制作者來(lái)說(shuō)深碱,目前的形勢(shì)就5MB來(lái)考慮是比較適合的腹鹉。

對(duì)于重復(fù)的數(shù)據(jù),HTML5可以直接從本地存儲(chǔ)中讀取數(shù)據(jù)敷硅,不必每次都向服務(wù)器發(fā)起請(qǐng)求從服務(wù)器獲取功咒。從而大幅提高網(wǎng)站性能和支持離線運(yùn)行。對(duì)于不同的網(wǎng)站绞蹦,數(shù)據(jù)存儲(chǔ)于不同的區(qū)域力奋,并且一個(gè)網(wǎng)站只能訪問(wèn)其自身的數(shù)據(jù)。

HTML5 提供了兩種在客戶端存儲(chǔ)數(shù)據(jù)的方法:

  1. localStorage - 沒有時(shí)間限制的數(shù)據(jù)存儲(chǔ)
  2. sessionStorage - 針對(duì)一個(gè) session 的數(shù)據(jù)存儲(chǔ)

HTML5 使用 JavaScript 來(lái)存儲(chǔ)和訪問(wèn)數(shù)據(jù)幽七。使用方法如下:

if (localStorage.pagecount){ 
    localStorage.pagecount=Number(localStorage.pagecount) +1;
 } else {
     localStorage.pagecount=1;
 }
 document.write("Visits: " + localStorage.pagecount + " time(s).");

CSS

層疊樣式表 (Cascading Style Sheets)是一種用來(lái)表現(xiàn)HTML或XML等文件樣式的計(jì)算機(jī)語(yǔ)言景殷。CSS目前最新版本為CSS3,是能夠真正做到網(wǎng)頁(yè)表現(xiàn)與內(nèi)容分離的一種樣式設(shè)計(jì)語(yǔ)言澡屡。相對(duì)于傳統(tǒng)HTML的表現(xiàn)而言猿挚,CSS能夠?qū)W(wǎng)頁(yè)中的對(duì)象的位置排版進(jìn)行像素級(jí)的精確控制,支持幾乎所有的字體字號(hào)樣式驶鹉,擁有對(duì)網(wǎng)頁(yè)對(duì)象和模型樣式編輯的能力绩蜻,并能夠進(jìn)行初步交互設(shè)計(jì),有較強(qiáng)的易讀性梁厉,被稱為程序員的畫筆辜羊。

如何使用樣式表?

有三種方法可以在網(wǎng)頁(yè)上使用樣式表:

  1. 外聯(lián)式Linking(也叫外部樣式)
    當(dāng)樣式需要被應(yīng)用到很多頁(yè)面的時(shí)候词顾,外部樣式表將是理想的選擇八秃。使用外部樣式表,你就可以通過(guò)更改一個(gè)文件來(lái)改變整個(gè)站點(diǎn)的外觀肉盹。
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
  1. 嵌入式Embedding(也叫內(nèi)頁(yè)樣式)
    當(dāng)單個(gè)文件需要特別樣式時(shí)昔驱,就可以使用內(nèi)部樣式表。你可以在 head 部分通過(guò) <style> 標(biāo)簽定義內(nèi)部樣式表上忍。
<head>
  <style type="text/css"> 
    body {background-color: red} 
    p {margin-left: 20px}
  </style>
</head>
  1. 內(nèi)聯(lián)式Inline(也叫行內(nèi)樣式)
    當(dāng)特殊的樣式需要應(yīng)用到個(gè)別元素時(shí)骤肛,就可以使用內(nèi)聯(lián)樣式纳本。 使用內(nèi)聯(lián)樣式的方法是在相關(guān)的標(biāo)簽中使用樣式屬性。樣式屬性可以包含任何 CSS 屬性腋颠。以下實(shí)例顯示出如何改變段落的顏色和左外邊距繁成。
<p style="color: red; margin-left: 20px"> 
This is a paragraph 
</p>

如何定義樣式表

CSS 規(guī)則由兩個(gè)主要的部分構(gòu)成:選擇器,以及一條或多條聲明淑玫。如下圖所示

選擇器類型:

  1. 標(biāo)簽選擇器 p <p></p>
  2. 類選擇器 .my-class <p class="my-class"></p>
  3. ID選擇器 #myDiv <div id="myDiv"></div>
  4. 屬性選擇器 [type="radio"] <input type="radio" />
  5. 偽類/偽元素選擇器 a:hover
  6. 以及上述各種選擇器的組合巾腕。

更多介紹,詳見:http://www.w3school.com.cn/cssref/css_selectors.asp

盒模型

網(wǎng)頁(yè)設(shè)計(jì)中常聽的屬性名:內(nèi)容(content)絮蒿、填充(padding)尊搬、邊框(border)、邊界(margin)土涝。這些屬性我們可以把它轉(zhuǎn)移到我們?nèi)粘I钪械暮凶樱ㄏ渥樱┥蟻?lái)理解佛寿,日常生活中所見的盒子也就是能裝東西的一種箱子,也具有這些屬性但壮,所以叫它盒子模式冀泻。CSS盒子模型就是在網(wǎng)頁(yè)設(shè)計(jì)中經(jīng)常用到的CSS技術(shù)所使用的一種思維模型。盒模型的模型如下圖


display屬性

描述
none 此元素不會(huì)被顯示蜡饵。
block 此元素將顯示為塊級(jí)元素腔长,此元素前后會(huì)帶有換行符。
inline 默認(rèn)验残。此元素會(huì)被顯示為內(nèi)聯(lián)元素,元素前后沒有換行符巾乳。
inline-block 行內(nèi)塊元素您没。(CSS2.1 新增的值)
table 此元素會(huì)作為塊級(jí)表格來(lái)顯示(類似 <table>),表格前后帶有換行符胆绊。

display 屬性規(guī)定了元素應(yīng)該生成的框的類型氨鹏。在上面html章節(jié)中我們提到了塊級(jí)標(biāo)簽和內(nèi)聯(lián)標(biāo)簽,這只是默認(rèn)屬性压状,通過(guò)CSS中的display進(jìn)行修改仆抵。還可以通過(guò)display控制標(biāo)簽是否顯示。
display常見的屬性值如下:

描述
none 此元素不會(huì)被顯示种冬。
block 此元素將顯示為塊級(jí)元素镣丑,此元素前后會(huì)帶有換行符。
inline 默認(rèn)娱两。此元素會(huì)被顯示為內(nèi)聯(lián)元素莺匠,元素前后沒有換行符。
inline-block 行內(nèi)塊元素十兢。(CSS2.1 新增的值)
table 此元素會(huì)作為塊級(jí)表格來(lái)顯示(類似 <table>)趣竣,表格前后帶有換行符摇庙。

position屬性

描述
absolute 生成絕對(duì)定位的元素,相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位遥缕。元素的位置通過(guò) "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定卫袒。
fixed 生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位单匣。元素的位置通過(guò) "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定夕凝。
relative 生成相對(duì)定位的元素,相對(duì)于其正常位置進(jìn)行定位封孙。因此迹冤,"left:20" 會(huì)向元素的 LEFT 位置添加 20 像素。
static 默認(rèn)值虎忌。沒有定位泡徙,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值膜蠢。

position 屬性規(guī)定元素的定位類型堪藐。這個(gè)屬性定義建立元素布局所用的定位機(jī)制。任何元素都可以定位挑围,不過(guò)絕對(duì)或固定元素會(huì)生成一個(gè)塊級(jí)框礁竞,而不論該元素本身是什么類型。相對(duì)定位元素會(huì)相對(duì)于它在文檔流中的默認(rèn)位置偏移杉辙。

描述
absolute 生成絕對(duì)定位的元素模捂,相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位。元素的位置通過(guò) "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定蜘矢。
fixed 生成絕對(duì)定位的元素狂男,相對(duì)于瀏覽器窗口進(jìn)行定位。元素的位置通過(guò) "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定品腹。
relative 生成相對(duì)定位的元素岖食,相對(duì)于其正常位置進(jìn)行定位。因此舞吭,"left:20" 會(huì)向元素的 LEFT 位置添加 20 像素泡垃。
static 默認(rèn)值。沒有定位羡鸥,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)蔑穴。
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值。

示例:



參考資料:http://blog.jobbole.com/49320/

float屬性

描述
left 元素向左浮動(dòng)惧浴。
right 元素向右浮動(dòng)澎剥。
none 默認(rèn)值。元素不浮動(dòng),并會(huì)顯示在其在文本中出現(xiàn)的位置哑姚。
inherit 規(guī)定應(yīng)該從父元素繼承 float 屬性的值祭饭。

float 屬性定義元素在哪個(gè)方向浮動(dòng)。以往這個(gè)屬性總應(yīng)用于圖像叙量,使文本圍繞在圖像周圍倡蝙,不過(guò)在 CSS 中,任何元素都可以浮動(dòng)绞佩。浮動(dòng)元素會(huì)生成一個(gè)塊級(jí)框寺鸥,而不論它本身是何種元素。如果浮動(dòng)非替換元素品山,則要指定一個(gè)明確的寬度胆建;否則,它們會(huì)盡可能地窄肘交。假如在一行之上只有極少的空間可供浮動(dòng)元素笆载,那么這個(gè)元素會(huì)跳至下一行,這個(gè)過(guò)程會(huì)持續(xù)到某一行擁有足夠的空間為止涯呻。

描述
left 元素向左浮動(dòng)凉驻。
right 元素向右浮動(dòng)。
none 默認(rèn)值复罐。元素不浮動(dòng)涝登,并會(huì)顯示在其在文本中出現(xiàn)的位置。
inherit 規(guī)定應(yīng)該從父元素繼承 float 屬性的值效诅。

示例:

  • 正常文檔流


  • 設(shè)置float胀滚,瀏覽器的寬度“不夠長(zhǎng)”時(shí)
    圖片18.png
  • 設(shè)置float,瀏覽器的寬度“足夠長(zhǎng)”時(shí)


    圖片19.png

參考資料:http://www.cnblogs.com/polk6/archive/2013/07/25/3142187.html

浮動(dòng)子標(biāo)簽撐開父標(biāo)簽

子標(biāo)簽如果都設(shè)置為float乱投,會(huì)導(dǎo)致父標(biāo)簽沒有高度值蛛淋。導(dǎo)致結(jié)構(gòu)錯(cuò)亂。

如下兩種方法可以解決:

  1. 添加一個(gè)空的div篡腌,設(shè)置clear屬性為both


  2. 父標(biāo)簽增加偽類,設(shè)置clear屬性為both


    圖片21.png

其他常用屬性

 background-color: gray;  /*背景顏色*/
border: 2px solid #e4e4e4; /*邊框尺寸勾效、類型嘹悼、顏色*/
 font-family: 宋體;  /*字體*/
color: #234567; /*文字顏色*/
font-size: 13px;  /*文字大小*/
width: 70px;  /*寬度*/
height: 70px;  /*高度*/

CSS優(yōu)先級(jí)

由于CSS選擇器可以有多種形式,可以繼承层宫,可以重復(fù)定義杨伙。所以具體哪個(gè)樣式生效需要計(jì)算優(yōu)先級(jí)。注意:優(yōu)先級(jí)相同時(shí)萌腿,晚定義的樣式有效限匣。
通常情況下,給每個(gè)選擇器設(shè)置一個(gè)數(shù)值毁菱,數(shù)值越大米死,優(yōu)先級(jí)越高锌历。實(shí)際沒有這個(gè)數(shù)值,只是一種近似峦筒。
html標(biāo)簽 (1)
class (10)
id (100)
計(jì)算示例:
div p 1+1 = 2
span.test 1+10 = 11

id.test 100 + 10 = 110

不同引入方式引入的CSS究西,優(yōu)先級(jí)也不同。排序規(guī)則如下:!important > inline >id > class > tag

CSS3

CSS3是CSS技術(shù)的升級(jí)版本物喷,CSS3語(yǔ)言開發(fā)是朝著模塊化發(fā)展的卤材。以前的規(guī)范作為一個(gè)模塊實(shí)在是太龐大而且比較復(fù)雜,所以峦失,把它分解為一些小的模塊扇丛,更多新的模塊也被加入進(jìn)來(lái)。這些模塊包括: 盒子模型尉辑、列表模塊帆精、超鏈接方式 、語(yǔ)言模塊 材蹬、背景和邊框 实幕、文字特效 、多欄布局等堤器。

參考:http://www.w3school.com.cn/css3/

javascript

java ≠ javascript 就像 馬 ≠ 海馬

JavaScript是一種屬于網(wǎng)絡(luò)的腳本語(yǔ)言,已經(jīng)被廣泛用于Web應(yīng)用開發(fā),常用來(lái)為網(wǎng)頁(yè)添加各式各樣的動(dòng)態(tài)功能,為用戶提供更流暢美觀的瀏覽效果昆庇。JavaScript是甲骨文公司的注冊(cè)商標(biāo),最初由Netscape的Brendan Eich設(shè)計(jì)闸溃。Netscape在最初將其腳本語(yǔ)言命名為L(zhǎng)iveScript整吆,后來(lái)Netscape在與Sun合作之后將其改名為JavaScript。JavaScript最初受Java啟發(fā)而開始設(shè)計(jì)的辉川,目的之一就是“看上去像Java”表蝙,因此語(yǔ)法上有類似之處,一些名稱和命名規(guī)范也借自Java乓旗。但JavaScript的主要設(shè)計(jì)原則源自Self和Scheme府蛇。JavaScript與Java名稱上的近似,是當(dāng)時(shí)Netscape為了營(yíng)銷考慮與Sun微系統(tǒng)達(dá)成協(xié)議的結(jié)果屿愚。

JavaScript腳本語(yǔ)言具有以下特點(diǎn):

  1. 腳本語(yǔ)言汇跨。JavaScript是一種解釋型的腳本語(yǔ)言,C、C++等語(yǔ)言先編譯后執(zhí)行,而JavaScript是在程序的運(yùn)行過(guò)程中逐行進(jìn)行解釋妆距。
  2. 基于對(duì)象穷遂。JavaScript是一種基于對(duì)象的腳本語(yǔ)言,它不僅可以創(chuàng)建對(duì)象,也能使用現(xiàn)有的對(duì)象。
  3. 簡(jiǎn)單娱据。JavaScript語(yǔ)言中采用的是弱類型的變量類型,對(duì)使用的數(shù)據(jù)類型未做出嚴(yán)格的要求,是基于Java基本語(yǔ)句和控制的腳本語(yǔ)言,其設(shè)計(jì)簡(jiǎn)單緊湊蚪黑。
  4. 動(dòng)態(tài)性。JavaScript是一種采用事件驅(qū)動(dòng)的腳本語(yǔ)言,它不需要經(jīng)過(guò)Web服務(wù)器就可以對(duì)用戶的輸入做出響應(yīng)。在訪問(wèn)一個(gè)網(wǎng)頁(yè)時(shí),鼠標(biāo)在網(wǎng)頁(yè)中進(jìn)行鼠標(biāo)點(diǎn)擊或上下移忌穿、窗口移動(dòng)等操作JavaScript都可直接對(duì)這些事件給出相應(yīng)的響應(yīng)抒寂。
  5. 跨平臺(tái)性。JavaScript腳本語(yǔ)言不依賴于操作系統(tǒng),僅需要瀏覽器的支持伴网。因此一個(gè)JavaScript腳本在編寫后可以帶到任意機(jī)器上使用蓬推,部署成本小。

不同于服務(wù)器端腳本語(yǔ)言澡腾,例如PHP與ASP沸伏,JavaScript主要被作為客戶端腳本語(yǔ)言在用戶的瀏覽器上運(yùn)行,不需要服務(wù)器的支持动分。所以在早期程序員比較青睞于JavaScript以減少對(duì)服務(wù)器的負(fù)擔(dān)毅糟,而與此同時(shí)也帶來(lái)另一個(gè)問(wèn)題:安全性。

而隨著服務(wù)器的強(qiáng)壯澜公,雖然程序員更喜歡運(yùn)行于服務(wù)端的腳本以保證安全姆另,但JavaScript仍然以其跨平臺(tái)、容易上手等優(yōu)勢(shì)大行其道坟乾。同時(shí)迹辐,有些特殊功能(如AJAX)必須依賴Javascript在客戶端進(jìn)行支持。隨著引擎如V8和框架如Node.js的發(fā)展甚侣,及其事件驅(qū)動(dòng)及異步IO等特性明吩,JavaScript逐漸被用來(lái)編寫服務(wù)器端程序。

JavaScript被Netscape公司提交給ECMA(European Computer Manufacturers Association)制定為標(biāo)準(zhǔn)殷费,稱之為ECMAScript印荔,標(biāo)準(zhǔn)編號(hào)ECMA-262。目前最新版為2015年發(fā)布的ECMAScript 6详羡。

下面對(duì)javascript的常用操作進(jìn)行舉例:

寫入 HTML 輸出

document.write("<h1>This is a heading</h1>");
document.write("<p>This is a paragraph</p>");

對(duì)事件作出反應(yīng)

<button type="button" onclick="alert('Welcome!')">點(diǎn)擊這里</button>

alert() 函數(shù)在 JavaScript 中并不常用仍律,但它對(duì)于代碼測(cè)試非常方便。
onclick 鼠標(biāo)點(diǎn)擊事件实柠。

改變 HTML 內(nèi)容

x=document.getElementById("demo")  //查找元素
x.innerHTML="Hello JavaScript";    //改變內(nèi)容
var img=document.getElementById("myImg")  //查找元素
img.src="/i/eg_bulbon.gif";

您會(huì)經(jīng)乘看到 document.getElementByID("some id")。這個(gè)方法是 HTML DOM 中定義的窒盐。DOM(文檔對(duì)象模型)是用以訪問(wèn) HTML 元素的正式 W3C 標(biāo)準(zhǔn)草则。

改變 HTML 樣式

x=document.getElementById("demo")  //找到元素
x.style.color="#ff0000";           //改變樣式

驗(yàn)證輸入

if isNaN(x) {alert("Not Numeric")};

詳細(xì)的語(yǔ)言特性,參考:http://www.w3school.com.cn/js/index.asp

jQuery

JQuery一個(gè)優(yōu)秀的輕量級(jí)的Javascript庫(kù)登钥。它兼容CSS3,還兼容各種瀏覽器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+)娶靡,jQuery2.0及后續(xù)版本不再支持IE6/7/8瀏覽器牧牢。jQuery使用戶能更方便地處理HTML、events、實(shí)現(xiàn)動(dòng)畫效果塔鳍,并且方便地為網(wǎng)站提供AJAX交互伯铣。jQuery還有一個(gè)比較大的優(yōu)勢(shì)是,它的文檔說(shuō)明很全轮纫,而且各種應(yīng)用也說(shuō)得很詳細(xì)腔寡,同時(shí)還有許多成熟的插件可供選擇。目前掌唾,絕大多數(shù)網(wǎng)站都在使用jQuery放前。

示例:

$("#h01").attr("style","color:red").html("Hello jQuery")

詳細(xì)的語(yǔ)言特性,參考:http://www.w3school.com.cn/jquery/

瀏覽器兼容

瀏覽器兼容性問(wèn)題又被稱為網(wǎng)頁(yè)兼容性或網(wǎng)站兼容性問(wèn)題糯彬,指網(wǎng)頁(yè)在各種瀏覽器上的顯示效果可能不一致而產(chǎn)生瀏覽器和網(wǎng)頁(yè)間的兼容問(wèn)題凭语。在網(wǎng)站的設(shè)計(jì)和制作中,做好瀏覽器兼容撩扒,才能夠讓網(wǎng)站在不同的瀏覽器下都正常顯示似扔。因?yàn)椴煌瑸g覽器使用內(nèi)核及所支持的HTML,JS搓谆,CSS標(biāo)準(zhǔn)不同炒辉;以及用戶客戶端的環(huán)境不同(如分辨率不同)造成的顯示效果不能達(dá)到理想效果。最常見的問(wèn)題就是網(wǎng)頁(yè)元素位置混亂泉手,錯(cuò)位黔寇,動(dòng)態(tài)效果失效等等。

舉例:

  1. IE的盒模型與W3C標(biāo)準(zhǔn)不符螃诅。
  2. IE8不支持html5的vedio啡氢,只能使用flash播放視頻。
  3. IE8不支持圖片圓角
  4. DOM 個(gè)別操作不一致
var obj = document.getElementById('objId');
obj.setAttribute('onclick','funcitonname();'); //FIREFOX支持术裸,IE不支持 
obj.onclick=function(){fucntionname();}; //都支持

前端調(diào)試工具

推薦使用Chrome devtools倘是。

關(guān)于UX和前端

在前端開發(fā)過(guò)程中一般會(huì)引入比較成熟的前端框架,例如:Bootstarp(http://v3.bootcss.com/getting-started/)袭艺。所以在UI設(shè)計(jì)時(shí)需要進(jìn)行溝通搀崭,一旦選擇了框架,盡量能和框架風(fēng)格保持一致猾编。當(dāng)然也可以完全重新定義風(fēng)格和自己開發(fā)瘤睹。

同樣在圖標(biāo)使用上,一般也會(huì)選擇成熟的圖標(biāo)庫(kù)答倡,例如:Font Awesome轰传,Glyphicons。(http://www.bootcss.com/p/font-awesome/

上面提到的兼容性設(shè)計(jì)問(wèn)題瘪撇。如果要支持IE8這類古董瀏覽器获茬。再設(shè)計(jì)時(shí)很多新特性都無(wú)法支持港庄,如果一定要支持,成本會(huì)很大恕曲。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鹏氧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子佩谣,更是在濱河造成了極大的恐慌把还,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茸俭,死亡現(xiàn)場(chǎng)離奇詭異吊履,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瓣履,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門率翅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人袖迎,你說(shuō)我怎么就攤上這事冕臭。” “怎么了燕锥?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵辜贵,是天一觀的道長(zhǎng)抄课。 經(jīng)常有香客問(wèn)我砾层,道長(zhǎng),這世上最難降的妖魔是什么担钮? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任暇榴,我火速辦了婚禮厚棵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蔼紧。我一直安慰自己婆硬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布奸例。 她就那樣靜靜地躺著彬犯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查吊。 梳的紋絲不亂的頭發(fā)上谐区,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音逻卖,去河邊找鬼宋列。 笑死,一個(gè)胖子當(dāng)著我的面吹牛评也,可吹牛的內(nèi)容都是我干的炼杖。 我是一名探鬼主播戈鲁,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嘹叫!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起诈乒,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤罩扇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后怕磨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喂饥,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年肠鲫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了员帮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡导饲,死狀恐怖捞高,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情渣锦,我是刑警寧澤硝岗,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站袋毙,受9級(jí)特大地震影響型檀,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜听盖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一胀溺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧皆看,春花似錦仓坞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蝎困,卻和暖如春录语,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背禾乘。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工澎埠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人始藕。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓蒲稳,卻偏偏與公主長(zhǎng)得像氮趋,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子江耀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見瀏覽器兼容性問(wèn)題與解決方案剩胁? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,754評(píng)論 1 92
  • 第一部分HTML&CSS整理答案1.什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)祥国。 注意:講述HTML5...
    Programmer客棧閱讀 2,013評(píng)論 0 12
  • 姓名:岳沁 學(xué)號(hào):17101223458 轉(zhuǎn)載自:http://www.cnblogs.com/fsyz/p/80...
    丘之心閱讀 489評(píng)論 0 0
  • Web前端技術(shù)由html昵观、css和 javascript 三大部分構(gòu)成,是一個(gè)龐大而復(fù)雜的技術(shù)體系舌稀,其復(fù)雜程度不低...
    WEB攻程獅閱讀 1,878評(píng)論 2 116
  • 很早之前就在看web前端面試題啊犬,一直想總結(jié)一個(gè)比較全面又詳細(xì)的面試題庫(kù),現(xiàn)在總結(jié)了一些壁查,分享給大家觉至,以后還會(huì)持續(xù)更...
    櫻桃小丸子兒閱讀 85,543評(píng)論 32 691