[前端學(xué)習(xí)]js特效部分學(xué)習(xí)筆記蛤肌,第一天

offset

  • 元素.offsetHeight獲取元素的客觀高度,返回值為數(shù)值沒(méi)有單位披坏,它獲取到的包括:元素內(nèi)容高度+上下padding+上下border
  • 元素.offsetWidth獲取元素的客觀寬度原献,返回值為數(shù)值沒(méi)有單位馏慨,它獲取到的包括:元素內(nèi)容寬度+左右padding+左右border
  • offsetHeight|offsetWidth與style對(duì)象的區(qū)別
    • offset是只讀屬性,它可以獲取到元素在頁(yè)面中的寬高姑隅,但是不能設(shè)置
    • style.height或者style.width只能獲取到行內(nèi)樣式写隶,寫在其他地方的樣式不能獲取,返回值是帶單位的字符串讲仰。同時(shí)也可以設(shè)置值樟澜,設(shè)置在行內(nèi)樣式中。
    • 因此叮盘,offset一般用來(lái)獲取元素的真實(shí)寬度和高度,而設(shè)置就用style對(duì)象
  • 元素.offsetParent 找到距離自身最近且有定位的節(jié)點(diǎn)霹俺。如果上一級(jí)沒(méi)有定位柔吼,那么他會(huì)一直往上找,都找不到就返回body
  • 元素.offsetLeft計(jì)算從自身border左側(cè)到offsetParent內(nèi)邊距左側(cè)的距離丙唧,就是自身左邊框最外側(cè)offsetParent左內(nèi)邊距最外側(cè)的距離愈魏,如果不好理解可用畫圖理解
  • 元素.offsetTop計(jì)算從自身border上側(cè)到offsetParent內(nèi)邊距上側(cè)的距離,就是自身上邊框最外側(cè)offsetParent上內(nèi)邊距最外側(cè)的距離
    • 注意:計(jì)算時(shí)想际,元素自身不會(huì)計(jì)算margin培漏,offsetParent不會(huì)計(jì)算border和margin,如果包含在內(nèi)的沒(méi)有設(shè)置就忽略不算
  • offsetLeft|offsetRight與style對(duì)象的區(qū)別
    • 前三點(diǎn)區(qū)別可以看上面胡本,是一樣的
    • 因?yàn)閟tyle是直接獲取行內(nèi)樣式的值牌柄,所以你寫多少邊偏移值獲取到的就是多少,但是如果沒(méi)有該元素沒(méi)有設(shè)置定位侧甫,它設(shè)置的邊偏移值實(shí)際上是無(wú)效的珊佣,style不管這個(gè)蹋宦,直接返回設(shè)置的值。offset獲取的是頁(yè)面客觀值咒锻,因?yàn)樵O(shè)置無(wú)效冷冗,所以返回0
    • 獲取左邊偏移值或者上邊偏移值,style對(duì)象獲取時(shí)會(huì)把margin劃入元素惑艇,整體來(lái)計(jì)算蒿辙。而offset永遠(yuǎn)只會(huì)把內(nèi)容內(nèi)邊距邊框看作元素,整體來(lái)計(jì)算滨巴。
  • 總結(jié)思灌,光用文字描述很難說(shuō)清楚,一定要去看教案里的圖示就很容易理解

幾個(gè)常用Math方法

  • Math.ceil(數(shù)值) 向上取整兢卵,例如1.9返回2习瑰,1.1也返回2
  • Math.floor(數(shù)值) 向下取整,例如1.9返回1秽荤,1.1也返回1
  • Math.round(數(shù)值) 四舍五入甜奄,例如1.9返回2,1.1也返回1窃款,1.5返回2
  • Math.abs(數(shù)值) 取絕對(duì)值

js勻速動(dòng)畫公式

  • 原理公式:當(dāng)前位置 = 當(dāng)前位置 + 移動(dòng)距離
  • 在配合定時(shí)器實(shí)現(xiàn)動(dòng)畫時(shí)课兄,定時(shí)器執(zhí)行間隔最好是15毫秒,能保證動(dòng)畫幀率在60左右

完整輪播圖案例總結(jié)

  • 總的來(lái)說(shuō)晨继,就是通過(guò)圖片對(duì)應(yīng)索引來(lái)控制移動(dòng)距離烟阐。
  • 在輪播圖案例中,索引使用得非常頻繁紊扬,包括集合索引蜒茄、自定義索引,用它們來(lái)乘以每張圖片的寬度餐屎,就能獲取需要移動(dòng)的距離檀葛。
  • 自定義索引是用來(lái)記錄左右按鈕焦點(diǎn)圖時(shí)當(dāng)前的位置。集合索引用來(lái)實(shí)現(xiàn)點(diǎn)擊數(shù)字按鈕實(shí)現(xiàn)對(duì)應(yīng)圖片的切換腹缩。然后再調(diào)用動(dòng)畫效果函數(shù)就能實(shí)現(xiàn)大部分輪播圖功能屿聋。
  • 另外還有一些小細(xì)節(jié),這里就不作多說(shuō)藏鹊,這個(gè)案例非常重要润讥,一定要多看幾遍理解。

scroll

  • 元素.scrollWidth 獲取元素內(nèi)部?jī)?nèi)容的寬度
  • 元素.scrollHeight 獲取元素內(nèi)部?jī)?nèi)容的高度
  • 元素.scrollLeft 獲取拖動(dòng)X軸滾動(dòng)條時(shí)盘寡,內(nèi)容被卷去的左側(cè)距離
  • 元素.scrollTop 獲取拖動(dòng)Y軸滾動(dòng)條時(shí)楚殿,內(nèi)容被卷去的頂側(cè)距離
  • 獲取瀏覽器頁(yè)面被卷去距離兼容寫法
    • 縱坐標(biāo)三種:window.pageYOffset || document.documentElement.scrollTop||document.body.scrollTop
    • 橫坐標(biāo)三種:window.pageXOffset || document.documentElement.scrollLeft||document.body.scrollLeft

固定導(dǎo)航案例總結(jié)

  • 固定導(dǎo)航案例有兩個(gè)重點(diǎn)
    • 一是用到了window.onscroll窗體滾動(dòng)事件
    • 二是用到了scrollTop,通過(guò)卷去頂側(cè)距離和實(shí)際模塊高度來(lái)比較宴抚,判斷什么時(shí)候設(shè)置導(dǎo)航欄的樣式
  • 并且因?yàn)閷?dǎo)航欄使用固定定位后勒魔,會(huì)出現(xiàn)不占位的情況甫煞,下方盒子會(huì)頂上來(lái),所以在設(shè)置固定定位的同時(shí)冠绢,還要給下面的盒子設(shè)置padding或者margin來(lái)保證導(dǎo)航欄原位置的距離存在抚吠。

js緩動(dòng)動(dòng)畫公式

  • step = (target - leader) / 10
  • leader = leader + step
  • 可以看到緩動(dòng)動(dòng)畫和勻速動(dòng)畫,就是step的值有所出入弟胀。勻速動(dòng)畫step是一個(gè)定值楷力,而緩動(dòng)動(dòng)畫step是一個(gè)差值,剛開(kāi)始很大孵户,但隨著它們差距越來(lái)越小萧朝,step就越來(lái)越小

訪問(wèn)屬性的兩種方式

  • 對(duì)象.style.width使用點(diǎn)語(yǔ)法訪問(wèn)屬性是最基本的方式
  • 對(duì)象.style["width"] 使用中括號(hào)語(yǔ)法訪問(wèn)屬性這種方式,更加靈活夏哭,但是注意內(nèi)部傳入變量是不需要雙引號(hào)的检柬,字符串才需要

獲取樣式的另一種方法

  • 通過(guò)style對(duì)象只能獲取到行內(nèi)樣式,那么寫在其他地方的樣式怎么獲取呢竖配?
  • 主流瀏覽器使用的是window.getComputedStyle(元素對(duì)象何址,偽數(shù)組).樣式名
  • ie6-8使用的是元素對(duì)象.currentStyle.樣式名
  • 這兩種方法獲取到就是實(shí)際在元素上生效的樣式,不分書寫位置

client

  • 元素.clientWidth獲取元素內(nèi)部的高度
  • 元素.clientHeight獲取元素內(nèi)部的寬度
  • 它和scroll的區(qū)別进胯,同樣它們獲取的都是盒子內(nèi)部的高和寬(即不包括邊框)用爪,但是scroll獲取的是內(nèi)容,就是說(shuō)內(nèi)容如果超出了盒子胁镐,它依然會(huì)計(jì)算偎血。但client就只單純獲取盒子內(nèi)部的padding和設(shè)置的高度。
  • 元素.clientTop獲取頂部邊框的高度盯漂,就是borderTop的粗細(xì)
  • 元素.clientLeft獲取左邊邊框的寬度颇玷,就是borderLeftd粗細(xì)
  • client的top和left屬性基本沒(méi)有用,只做了解

獲取頁(yè)面可視區(qū)寬高

  • window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0獲取頁(yè)面可視區(qū)域的寬度
  • window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0獲取頁(yè)面可視區(qū)域的高度
  • 上面的寫法是兼容了所有瀏覽器的寫法就缆,如果想要在頁(yè)面大小發(fā)生改變的時(shí)候亚隙,動(dòng)態(tài)獲取新的可視區(qū)域?qū)捀撸枰褂?code>window.onresize窗體大小發(fā)生改變事件來(lái)配合實(shí)現(xiàn)违崇。

旋轉(zhuǎn)木馬案例總結(jié)

  • 在選擇木馬的案例中,我們要從之前案例的固定思維中跳出來(lái)诊霹,是移動(dòng)整個(gè)ul元素羞延,來(lái)實(shí)現(xiàn)里面每個(gè)li的輪播顯示。但是在選擇木馬中脾还,直接給li進(jìn)行樣式賦值來(lái)移動(dòng)位置伴箩。
  • 實(shí)際上圖片的移動(dòng)就是給定位了的圖片設(shè)置left和top值,這個(gè)概念一定要記住鄙漏。所以這個(gè)案例中用到數(shù)組來(lái)里存放對(duì)象的形式嗤谚,來(lái)保存每個(gè)li的樣式屬性鍵值對(duì)棺蛛。通過(guò)操作每個(gè)對(duì)象的索引讓每個(gè)li的樣式變化,從而達(dá)到旋轉(zhuǎn)的效果巩步。
  • 最后再次用到了變量引入旁赊,來(lái)實(shí)現(xiàn)節(jié)流閥的功能。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末椅野,一起剝皮案震驚了整個(gè)濱河市终畅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竟闪,老刑警劉巖离福,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異炼蛤,居然都是意外死亡妖爷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門理朋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)絮识,“玉大人,你說(shuō)我怎么就攤上這事暗挑∷癯” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵炸裆,是天一觀的道長(zhǎng)垃它。 經(jīng)常有香客問(wèn)我,道長(zhǎng)烹看,這世上最難降的妖魔是什么国拇? 我笑而不...
    開(kāi)封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮惯殊,結(jié)果婚禮上酱吝,老公的妹妹穿的比我還像新娘。我一直安慰自己土思,他們只是感情好务热,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著己儒,像睡著了一般崎岂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上闪湾,一...
    開(kāi)封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天冲甘,我揣著相機(jī)與錄音,去河邊找鬼。 笑死江醇,一個(gè)胖子當(dāng)著我的面吹牛濒憋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陶夜,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼凛驮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了律适?” 一聲冷哼從身側(cè)響起辐烂,我...
    開(kāi)封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎捂贿,沒(méi)想到半個(gè)月后纠修,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡厂僧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年扣草,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颜屠。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辰妙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甫窟,到底是詐尸還是另有隱情密浑,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布粗井,位于F島的核電站尔破,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏浇衬。R本人自食惡果不足惜懒构,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耘擂。 院中可真熱鬧胆剧,春花似錦、人聲如沸醉冤。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)蚁阳。三九已至前域,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間韵吨,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留归粉,地道東北人椿疗。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像糠悼,于是被迫代替她去往敵國(guó)和親届榄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • HTML標(biāo)簽解釋大全 一倔喂、HTML標(biāo)記 標(biāo)簽:!DOCTYPE 說(shuō)明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,229評(píng)論 1 41
  • 一铝条、JS前言 (1)認(rèn)識(shí)JS 也許你已經(jīng)了解HTML標(biāo)記(也稱為結(jié)構(gòu)),知道了CSS樣式(也稱為表示)席噩,會(huì)使用HT...
    凜0_0閱讀 2,755評(píng)論 0 8
  • DOM 變化 如何確認(rèn)瀏覽器是否支持 DOM 2 和 DOM 3 新增的模塊:var supportsDOM2Co...
    云之外閱讀 464評(píng)論 0 0
  • “你應(yīng)該清楚他已經(jīng)不記得你了班缰,忘記了你們之間所有的事情,既然如此悼枢,你就別再纏著他了埠忘,你們,不可能在一起馒索,我也不會(huì)允...
    Ba糖豆Aa閱讀 263評(píng)論 0 0
  • 做為一個(gè)愛(ài)讀書的人绰上,讀書的前提是得有書旨怠。 從人類發(fā)明文字至今,世上可讀的書太多了蜈块,你不可能一下子把所有的書都拿來(lái)讀...
    陳曉蓮閱讀 949評(píng)論 3 11