CSS知識點(diǎn)
1? 選擇器的優(yōu)先級
(1)最高優(yōu)先級是 (直接在標(biāo)簽中的設(shè)置樣式栈拖,假設(shè)級別為1000)
(2)次優(yōu)先級是(ID選擇器 ,假設(shè)級別為100)? #myDiv{color:Red;}
(3)其次優(yōu)先級是(類選擇器搏熄,假設(shè)級別為10) .divClass{color:Red;}
(4)最后優(yōu)先級是 (標(biāo)簽選擇器买置,假設(shè)級別是 1)? div{color:Red;}
(5)那么后代選擇器的優(yōu)先級就可以計(jì)算了啊
比如 .divClass? span { color:Red;}? 優(yōu)先級別就是:10+1=11
2 盒子模型
標(biāo)準(zhǔn)盒子模型 = margin + border + padding + content (content =? width | height)
IE盒子模型 = margin + content (content = border + padding + width | height)
3 瀏覽器
-moz代表firefox瀏覽器私有屬性
-ms代表IE瀏覽器私有屬性
-webkit代表chrome、safari私有屬性IE使用的是Trident內(nèi)核失都,F(xiàn)irefox 使用的是Gecko內(nèi)核。目前使用IE內(nèi)核的瀏覽器還有搜狗卸留,遨游白华,360等等慨默。
4 編碼
(1)GBK通常指GB2312編碼 只支持簡體中文字
(2)utf通常指UTF-8,支持簡體中文字弧腥、繁體中文字厦取、英文、日文管搪、韓文等語言(支持文字更廣)
(3)通常國內(nèi)使用utf-8和gb2312虾攻,看自己需求選擇
5 Bootstrap框架的網(wǎng)格系統(tǒng)工作原理如下:
(1)數(shù)據(jù)行(.row)必須包含在容器(.container)中,以便為其賦予合適的對齊方式和內(nèi)距(padding)更鲁。
(2)在行(.row)中可以添加列(.column)霎箍,但列數(shù)之和不能超過平分的總列數(shù),比如12岁经。
(3)具體內(nèi)容應(yīng)當(dāng)放置在列容器(column)之內(nèi)朋沮,而且只有列(column)才可以作為行容器(.row)的直接子元素
(4)通過設(shè)置內(nèi)距(padding)從而創(chuàng)建列與列之間的間距。然后通過為第一列和最后一列設(shè)置負(fù)值的外距(margin)來抵消內(nèi)距(padding)的影響
6 H5新增標(biāo)簽:
article: 標(biāo)簽定義外部的內(nèi)容缀壤。
aside:標(biāo)簽定義 article 以外的內(nèi)容樊拓。
audio:h5新增音頻標(biāo)簽。沒有高寬屬性塘慕。
canvas:h5新增畫布標(biāo)簽筋夏。
command: 定義命令按鈕(未測試)
datalist:標(biāo)簽定義選項(xiàng)列表。 datalist 及其選項(xiàng)不會(huì)被想顯示出來图呢,它僅僅是合法的輸入值列表条篷。 details:標(biāo)簽用于描述文檔或文檔某個(gè)部分的細(xì)節(jié)。
figure:標(biāo)簽用于對元素進(jìn)行組合蛤织。
figcaption:定義 figure 元素的標(biāo)題赴叹。
footer:定義 section 或 document 的頁腳。
header:定義 section 或 document 的頁眉指蚜。
hgroup:用于對網(wǎng)頁或區(qū)段(section)的標(biāo)題進(jìn)行組合乞巧。
keygen:標(biāo)簽規(guī)定用于表單的密鑰對生成器字段
mark:標(biāo)簽定義帶有記號的文本。
meter:通過min="0" max="20"的方式定義度量衡摊鸡。僅用于已知最大和最小值的度量绽媒。
nav:定義document或section或article的導(dǎo)航。
output:定義不同的輸出類型免猾,比如腳本是辕。 progress:定義任何類型的任務(wù)的進(jìn)度。
rp:定義若瀏覽器不支持 ruby 元素顯示的內(nèi)容
rt:定義 ruby 注釋的解釋
ruby:定義 ruby 注釋
section:標(biāo)簽定義文檔中的節(jié)猎提、區(qū)段获三。比如章節(jié)、頁眉、頁腳或文檔中的其他部分石窑。 source:audio和video的屬性之一牌芋。為audio和video定義媒介源。
summary:為details定義標(biāo)題松逊。 time:定義日期或時(shí)間躺屁。
video:h5新增視頻標(biāo)簽。具有高寬屬性经宏。
7 在樣式表定義一個(gè)樣式的時(shí)候犀暑,可以定義id也可以定義class。
(1)在CSS文件里書寫時(shí)烁兰,ID加前綴"#"耐亏;CLASS用"."
(2)id一個(gè)頁面只可以使用一次;class可以多次引用沪斟。
(3)ID是一個(gè)標(biāo)簽广辰,用于區(qū)分不同的結(jié)構(gòu)和內(nèi)容,就象名字主之,如果一個(gè)屋子有2個(gè)人同名择吊,就會(huì)出現(xiàn)混淆;class是一個(gè)樣式槽奕,可以套在任何結(jié)構(gòu)和內(nèi)容上几睛,就象一件衣服;
(4)從概念上說就是不一樣的:id是先找到結(jié)構(gòu)/內(nèi)容粤攒,再給它定義樣式所森;class是先定義好一種樣式,再套給多個(gè)結(jié)構(gòu)/內(nèi)容夯接。
8 CSS的flexbox布局
Flexbox可以簡單快速的創(chuàng)建一個(gè)具有彈性功能的布局焕济,當(dāng)在一個(gè)小屏幕上顯示的時(shí)候,F(xiàn)lexbox可以讓元素在容器(伸縮容器)中進(jìn)行自由擴(kuò)展和收縮盔几,從而容易調(diào)整整個(gè)布局吼蚁。它的目的是使用常見的布局模式,比如說三列布局问欠,可以非常簡單的實(shí)現(xiàn)。
一個(gè)Flexbox布局是由一個(gè)伸縮容器(flex containers)和在這個(gè)容器里的伸縮項(xiàng)目(flex items)組成粒蜈。伸縮容器(flex? containers)是一個(gè)HTML標(biāo)簽元素顺献,并且“display”屬性顯式的設(shè)置了“flex”屬性值。在伸縮容器中的所有子元素都會(huì)自動(dòng)變成伸縮項(xiàng)目(flex? items)枯怖。
9 瀏覽器的內(nèi)核引擎注整,基本上是四分天下:
1)Trident: IE 以Trident 作為內(nèi)核引擎;
2) Gecko: Firefox 是基于 Gecko 開發(fā);
3) WebKit: Safari, Google Chrome,傲游3,獵豹瀏覽器,百度瀏覽器 opera瀏覽器肿轨;
4) Presto: Opera的內(nèi)核寿冕,但由于市場選擇問題,主要應(yīng)用在手機(jī)平臺--Opera mini
注:2013年2月Opera宣布轉(zhuǎn)向WebKit引擎
注:2013年4月Opera宣布放棄WEBKIT椒袍,跟隨GOOGLE的新開發(fā)的blink引擎
10 垂直居中對齊的標(biāo)簽定義是:<vertical-align:center>
11 Web Storage分類
Web Storage實(shí)際上由兩部分組成:sessionStorage與localStorage驼唱。sessionStorage用于本地存儲一個(gè)會(huì)話(session)中的數(shù)據(jù),這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁面才能訪問并且當(dāng)會(huì)話結(jié)束后數(shù)據(jù)也隨之銷毀驹暑。因此sessionStorage不是一種持久化的本地存儲玫恳,僅僅是會(huì)話級別的存儲。localStorage用于持久化的本地存儲优俘,除非主動(dòng)刪除數(shù)據(jù)京办,否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過期的。
12 盒子模型的順序
由內(nèi)到位依次是content帆焕、padding惭婿、border、margin
13 叶雹,設(shè)置一般用 set 開頭财饥, 獲取采用 get 開頭;
對于鍵值的話,一般都是 (key, value)的形式浑娜;
14 btn標(biāo)簽說法
btn-group該class用于形成基本的按鈕組佑力;
.btn-toolbar該 class 有助于把幾組結(jié)合到一個(gè)中,一般獲得更復(fù)雜的組件筋遭。
btn-group-lg, .btn-group-sm, .btn-group-xs這些 class 可應(yīng)用到整個(gè)按鈕組的大小調(diào)整打颤,而不需要對每個(gè)按鈕進(jìn)行大小調(diào)整。
15 <label>標(biāo)簽用法input 元素定義標(biāo)注
label 元素不會(huì)向用戶呈現(xiàn)任何特殊效果漓滔。不過编饺,它為鼠標(biāo)用戶改進(jìn)了可用性。如果您在 label 元素內(nèi)點(diǎn)擊文本响驴,就會(huì)觸發(fā)此控件透且。就是說,當(dāng)用戶選擇該標(biāo)簽時(shí)豁鲤,瀏覽器就會(huì)自動(dòng)將焦點(diǎn)轉(zhuǎn)到和標(biāo)簽相關(guān)的表單控件上秽誊。
16 css的繼承與不繼承分類
不可繼承的:
display、margin琳骡、border锅论、padding、background楣号、height最易、min-height怒坯、max- height、width藻懒、min-width剔猿、max-width、overflow嬉荆、position归敬、left、right员寇、top弄慰、 bottom、z-index蝶锋、float陆爽、clear、table-layout扳缕、vertical-align慌闭、page-break-after、 page-bread-before和unicode-bidi躯舔。
所有元素可繼承:
visibility和cursor
內(nèi)聯(lián)元素可繼承:
letter-spacing驴剔、word-spacing、white-space粥庄、line-height丧失、color、font惜互、 font-family布讹、font-size、font-style训堆、font-variant描验、font-weight、text- decoration坑鱼、text-transform膘流、direction
塊狀元素可繼承:
text-indent和text-align
列表元素可繼承:list-style、list-style-type鲁沥、list-style-position呼股、list-style-image。
表格元素可繼承:border-collapse画恰。
17 bootstrap輔助類
.text-muted:文字的顏色換成灰色
/.text-primary:文字的顏色變成藍(lán)色
/ .text-success:文字的顏色變成綠色
/.text-info:文字的顏色變成暗藍(lán)色
/.text-warning:文字顏色變成暗黃色
/.text-danger:文字的顏色變成紅色
18 html結(jié)構(gòu)
<head>標(biāo)簽用于定義文檔的頭部卖怜,它是所有頭部元素的容器。<head> 中的元素可以引用腳本阐枣、指示瀏覽器在哪里找到樣式表马靠、提供元信息等等。
下面這些標(biāo)簽可用在 head 部分:<base>,<link>,<meta>,<script>,<style>,<title>,, 以及蔼两。
<title>定義文檔的標(biāo)題甩鳄,它是 head 部分中唯一必需的元素。
19 超鏈接的訪問過程
為了符合瀏覽器解析CSS所遵循的就近原則额划,將一般的放在上面妙啃,將特殊的放在下面。
a:link; a:visited; a:hover; a:active;
a:hover必須放在a:link和a:visited之后俊戳;
a:active必須放在a:hover之后揖赴。
a:link是未訪問的鏈接;a:visited是已訪問的鏈接抑胎;a:hover是鼠標(biāo)懸停在鏈接上燥滑;a:active是被選擇的鏈接
執(zhí)行順序是從上向下
20 margin-top、padding-top的值是百分比時(shí)阿逃,分別是如何計(jì)算
可以對元素的margin設(shè)置百分?jǐn)?shù)铭拧,百分?jǐn)?shù)是相對于父元素的width計(jì)算,不管是margin-top/margin-bottom還是margin-left/margin-right恃锉。(padding同理)
如果沒有為元素聲明width搀菩,在這種情況下,元素框的總寬度包括外邊距取決于父元素的width破托,這樣可能得到“流式”頁面肪跋,即元素的外邊距會(huì)擴(kuò)大或縮小以適應(yīng)父元素的實(shí)際大小。如果對這個(gè)文檔設(shè)置樣式土砂,使其元素使用百分?jǐn)?shù)外邊距州既,當(dāng)用戶修改瀏覽窗口的寬度時(shí),外邊距會(huì)隨之?dāng)U大或縮小瘟芝。
為什么margin-top/margin-bottom的百分?jǐn)?shù)也是相對于width而不是height呢易桃?
CSS權(quán)威指南中的解釋:
我們認(rèn)為,正常流中的大多數(shù)元素都會(huì)足夠高以包含其后代元素(包括外邊距)锌俱,如果一個(gè)元素的上下外邊距時(shí)父元素的height的百分?jǐn)?shù)晤郑,就可能導(dǎo)致一個(gè)無限循環(huán),父元素的height會(huì)增加贸宏,以適應(yīng)后代元素上下外邊距的增加造寝,而相應(yīng)的,上下外邊距因?yàn)楦冈豩eight的增加也會(huì)增加吭练,如果循環(huán)诫龙。
21? cookies作用
cookies一般是用于自動(dòng)登錄呀(如淘寶,京東一些可以勾選自動(dòng)登錄),這就相當(dāng)于進(jìn)行從登錄頁到主頁的跳轉(zhuǎn)了,頁面之間傳遞著用戶的信息,以鍵值對的方式存儲著用戶的信息,當(dāng)然登錄跳轉(zhuǎn)也用到了其他以鍵值對存儲的信息,如session(服務(wù)端保持,一些需要登錄以后才可以訪問的就需要session校驗(yàn),如果是大項(xiàng)目開發(fā)的話會(huì)用到過濾器) cookies主要用于客戶端保持,當(dāng)然了,cookies怎么可能對數(shù)據(jù)庫進(jìn)行操作呢,cookies是保存在客戶端的。
22 Doctype不存在或錯(cuò)誤鲫咽,瀏覽器默認(rèn)混雜模式
23 HTML文檔中的圖像格式
常用的頁面的圖片格式有三種签赃,GIF谷异、JPG、PNG锦聊。GIF 意為Graphics Interchange format(圖形交換格式)歹嘹;JPEG 代表Joint Photograhic Experts Group(聯(lián)合圖像專家組),這種格式經(jīng)常寫成JPG孔庭,JPG圖片的擴(kuò)展名為jpg尺上;流式網(wǎng)絡(luò)圖形格式(Portable Network Graphic Format,PNG)名稱來源于非官方的“PNG's Not GIF”圆到,是一種位圖文件(bitmap file)存儲格式怎抛,讀成“ping”。PNG用來存儲灰度圖像時(shí)芽淡,灰度圖像的深度可多到16位马绝,存儲彩色圖像時(shí),彩色圖像的深度可多到48位吐绵,并且還可存儲多到16位的α通道數(shù)據(jù)迹淌。
標(biāo)簽圖像文件格式(Tagged Image File Format,簡寫為TIFF)是一種靈活的位圖格式己单,主要用來存儲包括照片和藝術(shù)圖在內(nèi)的圖像唉窃。TIFF文件格式適用于在應(yīng)用程序之間和計(jì)算機(jī)平臺之間的交換文件,它的出現(xiàn)使得圖像數(shù)據(jù)交換變得簡單纹笼。TIFF文件以.tif為擴(kuò)展名纹份。其數(shù)據(jù)格式是一種3級體系結(jié)構(gòu),從高到低依次為:文件頭廷痘、一個(gè)或多個(gè)稱為IFD的包含標(biāo)記指針的目錄和數(shù)據(jù)蔓涧。
定義文檔的標(biāo)題,它是 head 部分中唯一必需的元素笋额。
24 使用table表現(xiàn)數(shù)據(jù)時(shí)元暴,有時(shí)候表現(xiàn)出來的會(huì)比自己實(shí)際設(shè)置的寬度要寬,為此需要設(shè)置下面哪些屬性值
cellpadding 屬性規(guī)定單元邊沿與其內(nèi)容之間的空白兄猩。
注釋:請勿將該屬性與cellspacing 屬性相混淆茉盏,cellspacing 屬性規(guī)定的是單元之間的空間。
從實(shí)用角度出發(fā)枢冤,最好不要規(guī)定 cellpadding鸠姨,而是使用 CSS 來添加內(nèi)邊距。
25 通過使用 word-break 屬性淹真,可以讓瀏覽器實(shí)現(xiàn)在任意位置的換行讶迁。
26 white-space 屬性設(shè)置如何處理元素內(nèi)的空白。
27 submit 和onsubmit 函數(shù)
submit() 方法觸發(fā) submit 事件核蘸,或規(guī)定當(dāng)發(fā)生 submit 事件時(shí)運(yùn)行的函數(shù)巍糯。
onsubmit只是一種綁定事件的方式啸驯,如果不用這種事件綁定方式,比如addEventListener鳞贷,eventType應(yīng)該是submit而不是onsubmit坯汤。
onsubmit 事件會(huì)在表單中的確認(rèn)按鈕被點(diǎn)擊時(shí)發(fā)生。
語法 onsubmit="SomeJavaScriptCode"
28 Bootstrap 柵格系統(tǒng)
(1)第一步:創(chuàng)建柵格系統(tǒng)的容器
解釋:為了寄予柵格系統(tǒng)合適的排列和padding搀愧,要把每一行“row”包含在一個(gè)容器中,而這個(gè)容器我們用class名為“container”或者“container-fluid”,這兩個(gè)class是Bootstrap為我們事先設(shè)計(jì)好的
.container是固定寬度疆偿,居中顯示:下面是Bootstrap中.container類的代碼
.container-fluid是 100% 寬度:下面是Bootstrap中.container-fluid類的代碼
(2)第二步:創(chuàng)建合適的柵格系統(tǒng)
解釋:上面這段是我從Bootstrap官網(wǎng)復(fù)制下來的咱筛,每一個(gè)“row”代表一行,而內(nèi)部的“col-md-數(shù)字”代表一個(gè)單元格杆故;
Bootstrap把每一行分成12等份迅箩,“col-md-數(shù)字”中的“數(shù)字”從1-12中取,數(shù)字等于幾处铛,就占幾份饲趋;
合理的選擇單元格的數(shù)字配置,再往單元格中添加我們想要的內(nèi)容撤蟆,這樣一個(gè)柵格系統(tǒng)就完成了奕塑!
(3)進(jìn)階:單元格的類還有其他選擇,一共有四種:
.c0l-xs- 無論屏幕寬度如何,單元格都在一行家肯,寬度按照百分比設(shè)置龄砰;試用于手機(jī);
.col-sm- 屏幕大于768px時(shí)讨衣,單元格在一行顯示换棚;屏幕小于768px時(shí),獨(dú)占一行反镇;試用于平板固蚤;
.col-md- 屏幕大于992px時(shí),單元格在一行顯示歹茶;屏幕小于992px時(shí)夕玩,獨(dú)占一行;試用于桌面顯示器辆亏;
.col-lg- 屏幕大于1200px時(shí)风秤,單元格在一行顯示;屏幕小于1200px時(shí)扮叨,獨(dú)占一行缤弦;適用于大型桌面顯示器;
以上的情況可以通過下面的代碼清晰的理解:
屏幕大于992px時(shí):.col-md-8 和.col-md-4 還處于 作用范圍內(nèi)彻磁,如下
屏幕在769px-992px之間時(shí):.col-md-已失效碍沐,而.col-sm- 還處在 作用范圍內(nèi)狸捅,如下
屏幕寬度小于768px時(shí),.col-sm-已失效? 只有.col-xs- 不受屏幕寬度影響累提,這時(shí)候就由.col-xs-起作用尘喝,如下
29 bootstrap的表格屬性
30 CSS Sprites
1.簡介
CSS Sprites在國內(nèi)很多人叫css精靈,是一種網(wǎng)頁圖片應(yīng)用處理方式斋陪。它允許將一個(gè)頁面涉及到的所有零星圖片都包含到一張大圖中朽褪, 利用CSS的“background-image”,“background- repeat”无虚,“background-position”的組合進(jìn)行背景定位缔赠, 訪問頁面時(shí)避免圖片載入緩慢的現(xiàn)象。
2.優(yōu)點(diǎn)
(1)CSS Sprites能很好地減少網(wǎng)頁的http請求友题,從而大大的提高頁面的性能嗤堰,這是CSS Sprites最大的優(yōu)點(diǎn),也是其被廣泛傳播和應(yīng)用的主要原因度宦;
(2)CSS Sprites能減少圖片的字節(jié)踢匣;
(3)CSS Sprites解決了網(wǎng)頁設(shè)計(jì)師在圖片命名上的困擾,只需對一張集合的圖片命名戈抄,不需要對每一個(gè)小圖片進(jìn)行命名离唬,從而提高了網(wǎng)頁制作效率。
(4)CSS Sprites只需要修改一張或少張圖片的顏色或樣式來改變整個(gè)網(wǎng)頁的風(fēng)格呛凶。
3.缺點(diǎn)
(1)圖片合并麻煩:圖片合并時(shí)男娄,需要把多張圖片有序的合理的合并成一張圖片,并留好足夠的空間防止版塊出現(xiàn)不必要的背景漾稀。
(2)圖片適應(yīng)性差:在高分辨的屏幕下自適應(yīng)頁面模闲,若圖片不夠?qū)挄?huì)出現(xiàn)背景斷裂。
(3)圖片定位繁瑣:開發(fā)時(shí)需要通過工具測量計(jì)算每個(gè)背景單元的精確位置崭捍。
(4)可維護(hù)性差:頁面背景需要少許改動(dòng)尸折,可能要修改部分或整張已合并的圖片,進(jìn)而要改動(dòng)css殷蛇。在避免改動(dòng)圖片的前提下梁钾,又只能(最好)往下追加圖片销睁,但這樣增加了圖片字節(jié)份氧。
31 Canvas 對象的方法
1.html5中沒有g(shù)etContent()和getCanvas方法
2.調(diào)用canvas對象的getContext()方法來獲取繪圖環(huán)境
31 border-style:none和border-width:0的比較
1.效果
border-style:none;//無邊框
border-width:0;//邊框?qū)挾葹?px
2.區(qū)別
(1)性能差異
border:0;瀏覽器對border-width同辣、border-color進(jìn)行渲染,占用內(nèi)存匀们。
border:none;瀏覽器不進(jìn)行渲染缴淋,不占用內(nèi)存。
Chrome:
border:none;>> border:initial none initial;
border:0;>> border:0 initial? initial ;
Firefox、360:
border:none; >>border:medium none;
border:0;>> border:0 none;
計(jì)算出的樣式:
border:0px none 元素color屬性值;
(2)瀏覽器兼容
IE7-不支持border:none;
W3C提示:請始終把border-style屬性聲明到border-color屬性之前重抖,元素必須在改變顏色之前獲得邊框露氮。
32 getCurrentPosition()獲取用戶當(dāng)前位置放入一個(gè)值中保存,getLocation()地圖定位
33 瀏覽器引擎
瀏覽器解析渲染頁面原理
瀏覽器 最重要 最核心的部分是“解釋引擎”钟沛,也就是“瀏覽器內(nèi)核”: 負(fù)責(zé)對網(wǎng)頁語法的解釋(如HTML畔规、JavaScript)并渲染(顯示)網(wǎng)頁。
網(wǎng)頁的工作過程需要使用到兩個(gè)引擎:渲染引擎和javascript引擎
什么是JavaScript引擎恨统?簡單來講叁扫,就是能夠提供執(zhí)行JavaScript代碼的運(yùn)行環(huán)境
所以,通常所謂的瀏覽器內(nèi)核也就是瀏覽器所采用的渲染引擎畜埋,排版引擎(Rendering Engine陌兑,也有稱渲染引擎),渲染引擎決定了瀏覽器如何顯示網(wǎng)頁的內(nèi)容以及頁面的格式信息由捎。不同的瀏覽器內(nèi)核對網(wǎng)頁編寫語法的解釋也有不同,因此同一網(wǎng)頁在不同的內(nèi)核的瀏覽器里的渲染(顯示)效果也可能不同饿凛,這也是網(wǎng)頁編寫者需要在不同內(nèi)核的瀏覽器中測試網(wǎng)頁顯示效果的原因狞玛。
瀏覽器內(nèi)核很多,如果加上所有的幾乎沒有什么人在用的非商業(yè)的免費(fèi)內(nèi)核涧窒,那么可能大約有10款以上甚至更多心肪,不過通常我們比較常見的大約只有以下四種:
- Trident :[?tra?dnt]
IE瀏覽器(遨游、世界之窗纠吴、騰訊TT…都是IE)Trident內(nèi)核最慢
IE 以Trident 作為內(nèi)核引擎 ,前綴為–ms硬鞍。
- Gecko:[?gek??]
- 開放源代碼、以C++編寫的網(wǎng)頁排版引擎戴已,是跨平臺的
FireFox是基于 Gecko 開發(fā);
-presto:[?prest??]
目前公認(rèn)網(wǎng)頁瀏覽速度最快的瀏覽器內(nèi)核固该,然而代價(jià)是犧牲了網(wǎng)頁的兼容性。由Opera Software開發(fā)的瀏覽器排版引擎糖儡,Opera(歐朋瀏覽器)伐坏,但由于市場選擇問題,主要應(yīng)用在手機(jī)平臺–Opera mini
- Webkit:
蘋果公司自己的內(nèi)核握联,google的chrome也使用webkit作為內(nèi)核桦沉。
是一個(gè)開源的瀏覽器引擎,同時(shí)WebKit 也是蘋果Mac OS X 系統(tǒng)引擎框架版本的名稱金闽,它擁有清晰的源碼結(jié)構(gòu)纯露、極快的渲染速度,包含的 WebCore 排版引擎和 JavaScriptCore解析引擎代芜,均是從KDE的KHTML及KJS引擎衍生而來埠褪。
許多網(wǎng)站都是按照IE來架設(shè)的,很多網(wǎng)站不兼容Webkit內(nèi)核,比如登錄界面组橄、網(wǎng)銀等網(wǎng)頁均不可使用Webkit內(nèi)核的瀏覽器荞膘。
Safari([s??fɑri]), Google Chrome, 傲游3, 獵豹瀏覽器, 百度瀏覽器 opera瀏覽器 基于 Webkit 開發(fā)。
注:2013年2月Opera宣布轉(zhuǎn)向WebKit引擎
注:2013年4月Opera宣布放棄WEBKIT玉工,跟隨GOOGLE的新開發(fā)的blink引擎
34 innerHTML 屬性
innerHTML 屬性設(shè)置或返回表格行的開始和結(jié)束標(biāo)簽之間的 HTML羽资。
Javascript知識點(diǎn)
1 call函數(shù)和apply函數(shù)
作用
在特定的作用域總調(diào)用函數(shù),等于設(shè)置函數(shù)體內(nèi)this對象的值遵班,以擴(kuò)充函數(shù)賴以運(yùn)行的作用域屠升。
window.color="red";
var o={color:"blue"};
function getColor(){
console.log(this.color);
}
getColor.call(this);
getColor.call(window);
getColor.call(o);
2.call()和apply()區(qū)別
接收參數(shù)的方式不同:
對于call(),第一個(gè)參數(shù)是運(yùn)行函數(shù)的作用域狭郑,其余參數(shù)都直接傳遞給函數(shù)即傳遞給函數(shù)的參數(shù)必須逐個(gè)列舉出來腹暖。
對于apply(),第一個(gè)參數(shù)是運(yùn)行函數(shù)的作用域翰萨,另一個(gè)參數(shù)是參數(shù)數(shù)組,可以是Array實(shí)例或arguments對象脏答。
function sum(num1,num2){
return num1+num2;
}
function callSum(num1,num2){
return sum.call(this,num1,num2);
}
function callSum(num1,num2){
return sum.apply(this,arguments);
}
function callSum(num1,num2){
return sum.apply(this,[num1,num2]);
}
2? js對象是否是Array,arr為要判斷的對象
3 angularjs1中的服務(wù)實(shí)質(zhì)上是
單例模式是一種常用的軟件設(shè)計(jì)模式。在它的核心結(jié)構(gòu)中只包含一個(gè)被稱為單例的特殊類亩鬼。通過單例模式可以保證系統(tǒng)中一個(gè)類只有一個(gè)實(shí)例而且該實(shí)例易于外界訪問殖告,從而方便對實(shí)例個(gè)數(shù)的控制并節(jié)約系統(tǒng)資源。如果希望在系統(tǒng)中某個(gè)類的對象只能存在一個(gè)雳锋,單例模式是最好的解決方案黄绩。
單例模式的要點(diǎn)有三個(gè);一是某個(gè)類只能有一個(gè)實(shí)例玷过;二是它必須自行創(chuàng)建這個(gè)實(shí)例爽丹;三是它必須自行向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
angularjs的服務(wù)是一個(gè)單例對象或函數(shù)辛蚊,對外提供特定的功能粤蝎。
4 原生的js的禁用
①disabled和readOnly都是表單的公有屬性,readOnly是只讀嚼隘,disabled是禁用诽里。這里問的是禁用,所以是disabled飞蛹。
②還有就是題目中的readOnly寫成了readolny
③小知識點(diǎn):setArrtibute在ie7以前是不能通過style和class設(shè)置屬性的
5 JavaScript的prototype屬性
prototype 屬性使您有能力向?qū)ο筇砑訉傩院头椒ā?/p>
6 標(biāo)準(zhǔn)的JavaScript中谤狡,Ajax異步執(zhí)行調(diào)用基于下面哪一個(gè)機(jī)制才能實(shí)現(xiàn)
(1)Event和callback
(2)多線程操作
(3)Deferral和promise
7 文本框事件的屬性
click是點(diǎn)擊時(shí)觸發(fā)的方法;
change是改變文本框的內(nèi)容時(shí)觸發(fā)的方法
select是選中時(shí)觸發(fā)的方法
bind是被選元素(class或id)添加一個(gè)或多個(gè)事件處理程序卧檐,并規(guī)定事件發(fā)生時(shí)運(yùn)行的函數(shù)墓懂。
8 變量
javascript 一般使用var key = val;的形式復(fù)制霉囚,聲明變量的時(shí)候也要用var key捕仔; 如果不用var關(guān)鍵字,聲明的就是全局變量,一般不要這么做榜跌;
變量重復(fù)聲明也不會(huì)錯(cuò)闪唆,js里有聲明提前,如果兩次聲明都有賦值钓葫,如:var a=10; var a=100; 則變量a的值是100悄蕾; 若var a=10; var a; 則變量a的值是10;第二次的var a础浮;沒什么用帆调。
9 可以用作javascript異步模式的編程
回調(diào)函數(shù)、事件監(jiān)聽豆同、發(fā)布/訂閱番刊、Promises對象
10 instanceof 運(yùn)算符簡介
instanceof 運(yùn)算符與 typeof 運(yùn)算符相似,用于識別正在處理的對象的類型影锈。與 typeof 方法不同的是芹务,instanceof 方法要求開發(fā)者明確地確認(rèn)對象為某特定類型。
通常來講鸭廷,使用 instanceof 就是判斷一個(gè)實(shí)例是否屬于某種類型锄禽。
// 判斷 foo 是否是 Foo 類的實(shí)例
function Foo(){}
var foo = new Foo();
console.log(foo instanceof Foo) //true
另外,更重的一點(diǎn)是 instanceof 可以在繼承關(guān)系中用來判斷一個(gè)實(shí)例是否屬于它的父類型
// 判斷 foo 是否是 Foo 類的實(shí)例 , 并且是否是其父類型的實(shí)例
function Aoo(){}
function Foo(){}
Foo.prototype = new Aoo();//JavaScript 原型繼承
var foo = new Foo();
console.log(foo instanceof Foo)//true
console.log(foo instanceof Aoo)//true
11 number 類
console.log(Number(""));//0
console.log(Number(null));//0
console.log(Number(undefined));//NaN
console.log(parseInt(""));//NaN
console.log(parseInt(null));//NaN
console.log(parseInt(undefined));//NaN
console.log(null== 0);//false
console.log(undefined == 0);//false
12 數(shù)組的返回類型
push返回?cái)?shù)組的新的長度
reverse靴姿、sort返回?cái)?shù)組本身
concat返回被連接數(shù)組的一個(gè)副本
13 Angular 提供了3種方法來創(chuàng)建并注冊我們自己的 service。
Factory Service Provider
14 瀏覽器中使用js跨域獲取數(shù)據(jù)的描述
1.CORS
CORS(Corss-Origin Resource Sharing,跨資源共享)磁滚,基本思想是使用自定義的HTTP頭部讓瀏覽器與服務(wù)器進(jìn)行溝通佛吓,從而決定請求或響應(yīng)的成功或失敗。即給請求附加一個(gè)額外的Origin頭部垂攘,其中包含請求頁面的源信息(協(xié)議维雇、域名和端口),以便服務(wù)器根據(jù)這個(gè)頭部決定是否給予響應(yīng)晒他。
2.document.domain
將頁面的document.domain設(shè)置為相同的值吱型,頁面間可以互相訪問對方的JavaScript對象。
注意:
不能將值設(shè)置為URL中不包含的域陨仅;
松散的域名不能再設(shè)置為緊繃的域名津滞。
3.圖像Ping
var img=new Image();
img.onload=img.onerror=function(){
... ...
}
img.src="url?name=value";
請求數(shù)據(jù)通過查詢字符串的形式發(fā)送,響應(yīng)可以是任意內(nèi)容灼伤,通常是像素圖或204響應(yīng)触徐。
圖像Ping最常用于跟蹤用戶點(diǎn)擊頁面或動(dòng)態(tài)廣告曝光次數(shù)。
缺點(diǎn):
只能發(fā)送GET請求狐赡;
無法訪問服務(wù)器的響應(yīng)文本撞鹉,只能用于瀏覽器與服務(wù)器間的單向通信。
4. Jsonp
var script=document.createElement("script");
script.src="url?callback=handleResponse";
document.body.insertBefore(script,document.body.firstChild);
JSONP由兩部分組成:回調(diào)函數(shù)和數(shù)據(jù)
回調(diào)函數(shù)是接收到響應(yīng)時(shí)應(yīng)該在頁面中調(diào)用的函數(shù),其名字一般在請求中指定鸟雏。
數(shù)據(jù)是傳入回調(diào)函數(shù)中的JSON數(shù)據(jù)享郊。
優(yōu)點(diǎn):
能夠直接訪問響應(yīng)文本,可用于瀏覽器與服務(wù)器間的雙向通信孝鹊。
缺點(diǎn):
JSONP從其他域中加載代碼執(zhí)行炊琉,其他域可能不安全;
難以確定JSONP請求是否失敗惶室。
5.Comet
Comet可實(shí)現(xiàn)服務(wù)器向?yàn)g覽器推送數(shù)據(jù)温自。
Comet是實(shí)現(xiàn)方式:長輪詢和流
短輪詢即瀏覽器定時(shí)向服務(wù)器發(fā)送請求,看有沒有數(shù)據(jù)更新皇钞。
長輪詢即瀏覽器向服務(wù)器發(fā)送一個(gè)請求悼泌,然后服務(wù)器一直保持連接打開,直到有數(shù)據(jù)可發(fā)送夹界。發(fā)送完數(shù)據(jù)后馆里,瀏覽器關(guān)閉連接,隨即又向服務(wù)器發(fā)起一個(gè)新請求可柿。其優(yōu)點(diǎn)是所有瀏覽器都支持鸠踪,使用XHR對象和setTimeout()即可實(shí)現(xiàn)。
流即瀏覽器向服務(wù)器發(fā)送一個(gè)請求复斥,而服務(wù)器保持連接打開营密,然后周期性地向?yàn)g覽器發(fā)送數(shù)據(jù),頁面的整個(gè)生命周期內(nèi)只使用一個(gè)HTTP連接目锭。
6.WebSocket
WebSocket可在一個(gè)單獨(dú)的持久連接上提供全雙工评汰、雙向通信。
WebSocket使用自定義協(xié)議痢虹,未加密的連接時(shí)ws://被去;加密的鏈接是wss://。
var webSocket=new WebSocket("ws://");
webSocket.send(message);
webSocket.onmessage=function(event){
var data=event.data;
... ....
}
注意:
必須給WebSocket構(gòu)造函數(shù)傳入絕對URL奖唯;
WebSocket可以打開任何站點(diǎn)的連接惨缆,是否會(huì)與某個(gè)域中的頁面通信,完全取決于服務(wù)器丰捷;
WebSocket只能發(fā)送純文本數(shù)據(jù)坯墨,對于復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在發(fā)送之前必須進(jìn)行序列化JSON.stringify(message))病往。
優(yōu)點(diǎn):
在客戶端和服務(wù)器之間發(fā)送非常少的數(shù)據(jù)畅蹂,減少字節(jié)開銷。
15 AngularJS1中頁面中用于數(shù)據(jù)綁定的占位符是{{ }}
16 JavaScript 中包含以下全局函數(shù)
17 Angular關(guān)于服務(wù)的說法
Angular大大減少了對DOM的訪問荣恐。
jQuery極大的豐富了DOM操作
依賴注入(Dependency Injection)液斜,是這樣一個(gè)過程:由于某客戶類只依賴于服務(wù)類的一個(gè)接口累贤,而不依賴于具體服務(wù)類,所以客戶類只定義一個(gè)注入點(diǎn)少漆。在程序運(yùn)行過程中臼膏,客戶類不直接實(shí)例化具體服務(wù)類實(shí)例,而是客戶類的運(yùn)行上下文環(huán)境或?qū)iT組件負(fù)責(zé)實(shí)例化服務(wù)類示损,然后將其注入到客戶類中渗磅,保證客戶類的正常運(yùn)行。
angular 指令的link函數(shù)中進(jìn)行dom操作和事件綁定检访,服務(wù)主要是封裝與后臺交互的數(shù)據(jù)接口提供復(fù)用性始鱼。
18 下列不屬于javascript內(nèi)置對象的是
Arguments 函數(shù)參數(shù)集合、Array 數(shù)組脆贵、Boolean 布爾對象医清、Date 日期時(shí)間、Error 異常對象卖氨、Function 函數(shù)構(gòu)造器会烙、Math 數(shù)學(xué)對象、Number 數(shù)值對象筒捺、Object 基礎(chǔ)對象柏腻、RegExp 正則表達(dá)式對象、String 字符串對象
19 說一說常見的請求頭和相應(yīng)頭都有什么呢系吭?
1)請求(客戶端->服務(wù)端[request])
GET(請求的方式) /newcoder/hello.html(請求的目標(biāo)資源) HTTP/1.1(請求采用的協(xié)議和版本號)
Accept: */*(客戶端能接收的資源類型)
Accept-Language: en-us(客戶端接收的語言類型)
Connection: Keep-Alive(維護(hù)客戶端和服務(wù)端的連接關(guān)系)
Host: localhost:8080(連接的目標(biāo)主機(jī)和端口號)
Referer: http://localhost/links.asp(告訴服務(wù)器我來自于哪里)
User-Agent: Mozilla/4.0(客戶端版本號的名字)
Accept-Encoding: gzip, deflate(客戶端能接收的壓縮數(shù)據(jù)的類型)
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT(緩存時(shí)間)
Cookie(客戶端暫存服務(wù)端的信息)
Date: Tue, 11 Jul 2000 18:23:51 GMT(客戶端請求服務(wù)端的時(shí)間)
2)響應(yīng)(服務(wù)端->客戶端[response])
HTTP/1.1(響應(yīng)采用的協(xié)議和版本號) 200(狀態(tài)碼) OK(描述信息)
Location: http://www.baidu.com(服務(wù)端需要客戶端訪問的頁面路徑)
Server:apache tomcat(服務(wù)端的Web服務(wù)端名)
Content-Encoding: gzip(服務(wù)端能夠發(fā)送壓縮編碼類型)
Content-Length: 80(服務(wù)端發(fā)送的壓縮數(shù)據(jù)的長度)
Content-Language: zh-cn(服務(wù)端發(fā)送的語言類型)
Content-Type: text/html; charset=GB2312(服務(wù)端發(fā)送的類型及采用的編碼方式)
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT(服務(wù)端對該資源最后修改的時(shí)間)
Refresh: 1;url=http://www.it315.org(服務(wù)端要求客戶端1秒鐘后五嫂,刷新,然后訪問指定的頁面路徑)
Content-Disposition: attachment; filename=aaa.zip(服務(wù)端要求客戶端以下載文件的方式打開該文件)
Transfer-Encoding: chunked(分塊傳遞數(shù)據(jù)到客戶端)
Set-Cookie:SS=Q0=5Lb_nQ; path=/search(服務(wù)端發(fā)送到客戶端的暫存數(shù)據(jù))
Expires: -1//3種(服務(wù)端禁止客戶端緩存頁面數(shù)據(jù))
Cache-Control: no-cache(服務(wù)端禁止客戶端緩存頁面數(shù)據(jù))
Pragma: no-cache(服務(wù)端禁止客戶端緩存頁面數(shù)據(jù))
Connection: close(1.0)/(1.1)Keep-Alive(維護(hù)客戶端和服務(wù)端的連接關(guān)系)
Date: Tue, 11 Jul 2000 18:23:51 GMT(服務(wù)端響應(yīng)客戶端的時(shí)間)
在服務(wù)器響應(yīng)客戶端的時(shí)候肯尺,帶上Access-Control-Allow-Origin頭信息贫导,解決跨域的一種方法。
20 hasOwnProperty和isPrototypeOf的作用
hasOwnProperty:是用來判斷一個(gè)對象是否有你給出名稱的屬性或?qū)ο篌№铩2贿^需要注意的是,此方法無法檢查該對象的原型鏈中是否具有該屬性闺金,該屬性必須是對象本身的一個(gè)成員逾滥。
isPrototypeOf :是用來判斷要檢查其原型鏈的對象是否存在于指定對象實(shí)例中,是則返回true败匹,否則返回false寨昙。
21 JavaScript RegExp 對象有 3 個(gè)方法:test()、exec() 和 compile()掀亩。
(1) test() 方法用來檢測一個(gè)字符串是否匹配某個(gè)正則表達(dá)式舔哪,如果匹配成功,返回 true 槽棍,否則返回 false捉蚤;
(2) exec() 方法用來檢索字符串中與正則表達(dá)式匹配的值抬驴。exec() 方法返回一個(gè)數(shù)組,其中存放匹配的結(jié)果缆巧。如果未找到匹配的值布持,則返回 null;
(3)compile() 方法可以在腳本執(zhí)行過程中編譯正則表達(dá)式陕悬,也可以改變已有表達(dá)式题暖。
22 JS中操作數(shù)組方法的比較
pop()方法用于刪除數(shù)組的最后一個(gè)元素,并返回被刪除的最后一個(gè)元素捉超,這樣的話數(shù)組就被改變了胧卤。
splice()方法可以對數(shù)組中已經(jīng)存在元素進(jìn)行刪除,也可以添加元素到數(shù)組中拼岳。
sort()方法對數(shù)組中所有的元素都進(jìn)行排序枝誊,如果沒有提供比較函數(shù)compareFunction,則按照字符串的Unicode碼的順序進(jìn)行排序裂问。
所以以上三種方法都改變了數(shù)組侧啼。
而 concat()方法用于連接兩個(gè)或多個(gè)數(shù)組。該方法不會(huì)改變現(xiàn)有的數(shù)組堪簿,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本痊乾,返回一個(gè)新的數(shù)組。該數(shù)組是通過把所有的arrayX參數(shù)添加到arryaObject中生成的椭更,如果要進(jìn)行 concat()操作的參數(shù)是數(shù)組哪审,那么添加的是數(shù)組中的元素,而不是數(shù)組虑瀑。
23 操作符知識點(diǎn)
《JavaScript權(quán)威指南》的部分相關(guān)知識點(diǎn)
“==”運(yùn)算符(兩個(gè)操作數(shù)的類型不相同時(shí))
如果一個(gè)值是null湿滓,另一個(gè)值是undefined舌狗,則它們相等
如果一個(gè)值是數(shù)字叽奥,另一個(gè)值是字符串,先將字符串轉(zhuǎn)換為數(shù)學(xué)痛侍,然后使用轉(zhuǎn)換后的值進(jìn)行比較朝氓。
如果其中一個(gè)值是true,則將其轉(zhuǎn)換為1再進(jìn)行比較主届。如果其中的一個(gè)值是false赵哲,則將其轉(zhuǎn)換為0再進(jìn)行比較。
如果一個(gè)值是對象君丁,另一個(gè)值是數(shù)字或字符串枫夺,則將對象轉(zhuǎn)換為原始值,再進(jìn)行比較绘闷。
對象到數(shù)字的轉(zhuǎn)換
如果對象具有valueOf()方法橡庞,后者返回一個(gè)原始值较坛,則JavaScript將這個(gè)原始值轉(zhuǎn)換為數(shù)字(如果需要的話)并返回一個(gè)數(shù)字。
否則毙死,如果對象具有toString()方法燎潮,后者返回一個(gè)原始值,則JavaScript將其轉(zhuǎn)換并返回扼倘。(對象的toString()方法返回一個(gè)字符串直接量(作者所說的原始值)确封,JavaScript將這個(gè)字符串轉(zhuǎn)換為數(shù)字類型,并返回這個(gè)數(shù)字)再菊。
否則爪喘,JavaScript拋出一個(gè)類型錯(cuò)誤異常。
空數(shù)組轉(zhuǎn)換為數(shù)字0
數(shù)組繼承了默認(rèn)的valueOf()方法纠拔,這個(gè)方法返回一個(gè)對象而不是一個(gè)原始值秉剑,因此,數(shù)組到數(shù)學(xué)的轉(zhuǎn)換則調(diào)用toString()方法稠诲≌炫簦空數(shù)組轉(zhuǎn)換為空字符串,空字符串轉(zhuǎn)換為數(shù)字0.
24 History 對象屬性
length 返回歷史列表中的網(wǎng)址數(shù)
back() 加載 history 列表中的前一個(gè) URL
forward() 加載 history 列表中的下一個(gè) URL
go() 加載 history 列表中的某個(gè)具體頁面
25 給網(wǎng)頁添加javascript的方式有
(1) 使用script標(biāo)簽臀叙,將javascript代碼寫到<script></script>之間
(2)添加外部javascript文件
(3)使用行內(nèi)javascript
26 javascirpt中的數(shù)字在計(jì)算機(jī)內(nèi)存儲為多少Byte
1.Javascript中略水,由于其變量內(nèi)容不同,變量被分為基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量劝萤≡ɡ裕基本類型變量用八字節(jié)內(nèi)存,存儲基本數(shù)據(jù)類型(數(shù)值床嫌、布爾值跨释、null和未定義)的值,引用類型變量則只保存對對象厌处、數(shù)組和函數(shù)等引用類型的值的引用(即內(nèi)存地址)鳖谈。
2.JS中的數(shù)字是不分類型的,也就是沒有byte/int/float/double等的差異阔涉。
27 哪些函數(shù)能用來驗(yàn)證字符串的完整性
? ? ?md5()函數(shù)將一個(gè)字符串進(jìn)行md5加密計(jì)算缆娃,md5()函數(shù)使用RSA數(shù)據(jù)安全,包括MD5報(bào)文摘要算法洒敏。 語法:md5(string,raw),第一個(gè)參數(shù)string必需疙驾,表示待處理字符串凶伙,第二個(gè)參數(shù)raw可選,布爾型數(shù)值它碎,默認(rèn)為false函荣,false表示返回32位的十六進(jìn)制字符串显押,true表示返回16位二進(jìn)制數(shù)。 ? ? ? ??
? ? ? ?sha1()函數(shù)計(jì)算字符串sha-1散列傻挂,使用哈希安全算法乘碑。 語法:sha1(string,raw),同md5金拒。 ?
? ? ? ?str_rot13()函數(shù)對字符串執(zhí)行rot13編碼兽肤。
? ? ? ?crc32()函數(shù)計(jì)算字符串的32位crc(循環(huán)冗余校驗(yàn)),該函數(shù)可以用于驗(yàn)證數(shù)據(jù)完整性绪抛。
28 數(shù)組
arr是個(gè)對象數(shù)組资铡,reverse和sort只是改了arr的內(nèi)容,返回的依然是arr對象本身幢码,而concat返回的是新的對象笤休,這里考的點(diǎn)是淺拷貝和深度拷貝,concat和slice常用來做深度拷貝
29 下列函數(shù)的用法
hover(over ,out):模仿懸停事件症副,即當(dāng)鼠標(biāo)移動(dòng)到一個(gè)匹配的元素上面時(shí)店雅,會(huì)觸發(fā)指定的第一個(gè)函數(shù)。當(dāng)鼠標(biāo)移出這個(gè)元素時(shí)贞铣,會(huì)觸發(fā)指定的第二個(gè)函數(shù)闹啦。
keypress(fn):在每一個(gè)匹配元素的keypress事件中綁定一個(gè)處理函數(shù)
change():調(diào)用執(zhí)行綁定到change事件的所有函數(shù),包括瀏覽器的默認(rèn)行為咕娄。
change(fn)是文本框的內(nèi)容發(fā)生變化時(shí)執(zhí)行的操作亥揖、給所有的文本框增加輸入驗(yàn)證
select(fn)是文本框的內(nèi)容被選擇時(shí)執(zhí)行的操作。
click():是點(diǎn)擊時(shí)觸發(fā)的方法圣勒;
bind():是被選元素(class或id)添加一個(gè)或多個(gè)綁定事件處理程序费变,并規(guī)定事件發(fā)生時(shí)運(yùn)行的函數(shù)。
30 數(shù)組方法
push返回?cái)?shù)組的新的長度
reverse圣贸、sort返回?cái)?shù)組本身
concat返回被連接數(shù)組的一個(gè)副本挚歧。
31 Angular 的知識,沒有$send.
$emit只能向parent controller傳遞event與data
$broadcast只能向child controller傳遞event與data
$on用于接收event與data
32 需要匹配包含文本的元素
text()是jQuery中的方法吁峻,可是設(shè)置或返回被選元素的文本內(nèi)容
contains選擇器滑负,選取包含指定字符串的元素,字符串也可以是文本
input()選擇器用含,選取表單元素
attr(name,value)屬性操作矮慕,設(shè)置或返回被選元素的屬性和屬性值
33 promise三種狀態(tài)
一個(gè)promise可能有三種狀態(tài):等待(pending)、已完成(fulfilled)啄骇、已拒絕(rejected)
一個(gè)promise的狀態(tài)只可能從“等待”轉(zhuǎn)到“完成”態(tài)或者“拒絕”態(tài)痴鳄,不能逆向轉(zhuǎn)換,同時(shí)“完成”態(tài)和“拒絕”態(tài)不能相互轉(zhuǎn)換
promise必須實(shí)現(xiàn)then方法(可以說缸夹,then就是promise的核心)痪寻,而且then必須返回一個(gè)promise螺句,同一個(gè)promise的then可以調(diào)用多次,并且回調(diào)的執(zhí)行順序跟它們被定義時(shí)的順序一致
then方法接受兩個(gè)參數(shù)橡类,第一個(gè)參數(shù)是成功時(shí)的回調(diào)蛇尚,在promise由“等待”態(tài)轉(zhuǎn)換到“完成”態(tài)時(shí)調(diào)用,另一個(gè)是失敗時(shí)的回調(diào)顾画,在promise由“等待”態(tài)轉(zhuǎn)換到“拒絕”態(tài)時(shí)調(diào)用取劫。同時(shí),then可以接受另一個(gè)promise傳入亲雪,也接受一個(gè)“類then”的對象或方法勇凭,即thenable對象。
34 AngularJS1元素過濾
filter的兩種使用方法
1. 在模板中使用filter
我們可以直接在{{}}中使用filter义辕,跟在表達(dá)式后面用 | 分割虾标,語法如下:
{{ expression | filter }}
也可以多個(gè)filter連用,上一個(gè)filter的輸出將作為下一個(gè)filter的輸入
{{ expression | filter1 | filter2 | ... }}
filter可以接收參數(shù)灌砖,參數(shù)用 : 進(jìn)行分割璧函,如下:
{{ expression | filter:argument1:argument2:... }}
除了對{{}}中的數(shù)據(jù)進(jìn)行格式化,我們還可以在指令中使用filter基显,例如先對數(shù)組array進(jìn)行過濾處理蘸吓,然后再循環(huán)輸出:
2. 在controller和service中使用filter
我們的js代碼中也可以使用過濾器,方式就是我們熟悉的依賴注入撩幽,例如我要在controller中使用currency過濾器库继,只需將它注入到該controller中即可,代碼如下:
app.controller('testC',function($scope,currencyFilter){
$scope.num = currencyFilter(123534);
}
在模板中使用{{num}}就可以直接輸出 $123,534.00了窜醉!在服務(wù)中使用filter也是同樣的道理宪萄。
ng提供了一個(gè)$filter服務(wù)可以來調(diào)用所需的filter,你只需注入一個(gè)$filter就夠了榨惰,使用方法如下:
app.controller('testC',function($scope,$filter){
$scope.num = $filter('currency')(123534);
$scope.date = $filter('date')(new Date());
}
可以達(dá)到同樣的效果拜英。好處是你可以方便使用不同的filter了。
阻止事件的默認(rèn)操作琅催,用stopPropagation居凶;而阻止瀏覽器的默認(rèn)操作時(shí)preventDefault。