PC端網(wǎng)頁(yè)特效

元素偏移量offset系列

返回值都不帶單位

element.offsetParent? 返回作為該元素帶有定位的父級(jí)元素旋廷,如果父級(jí)都沒定位則返回body

element.offsetTop? 返回元素相對(duì)帶有定位父元素上方的偏移

element.offsetLeft? 返回元素相對(duì)帶有定位父元素左邊框的偏移

element.offsetWidth? 返回自身包括padding俺驶、邊框男摧、內(nèi)容區(qū)的寬度索绪,返回?cái)?shù)值不帶單位

element.offsetHeight? 返回自身包括padding契吉、邊框宅荤、內(nèi)容區(qū)的高度屑迂,返回?cái)?shù)值不帶單位

offset與style區(qū)別

offset可以得到任意樣式表中的樣式值

offset系列獲得的數(shù)值是沒有單位的

offsetWidth包含padding+border+width

offsetWidth等屬性是只讀屬性,智能獲取不能賦值

所以我們想要獲取元素的大小位置冯键,用offset更合適

style只能得到行內(nèi)樣式表中的樣式值

style.width獲得的是帶有單位的字符串

style.width獲得不包含padding惹盼、border

style.width是可讀寫屬性,可以獲取也可以賦值

所以我們想要給元素更改值惫确,則需要用style改變

鼠標(biāo)在頁(yè)面中的坐標(biāo)(e.pageX,e.pageY)

元素可視區(qū)client系列

element.clientTop? 返回元素上邊框的大小

element.clientLeft? 返回元素左邊框的大小

element.clientWidth? 返回自身包括padding手报、內(nèi)容區(qū)的寬度蚯舱,不含邊框,返回值不帶單位

element.clientHeigth? 返回自身包括padding掩蛤、內(nèi)容區(qū)的高度枉昏,不含邊框,返回值不帶單位

元素滾動(dòng)scroll 系列屬性

element.scrollTop? 返回被卷去的上側(cè)距離盏档,返回?cái)?shù)值不帶單位

element.scrollLeft? 返回被卷去的左側(cè)距離凶掰,返回?cái)?shù)值不帶單位

element.scrollWidth? 返回自身實(shí)際的寬度,不含邊框蜈亩,返回?cái)?shù)值不帶單位

element.scrollHeight? 返回自身實(shí)際的高度懦窘,不含邊框,返回?cái)?shù)值不帶單位

頁(yè)面被卷去的頭部稚配,滾動(dòng)條在滾動(dòng)時(shí)會(huì)觸發(fā)onscroll事件畅涂。

頁(yè)面被卷去的頭部兼容性解決方案:

聲明了DTD,使用document.documentElement.scrollTop

未聲明DTD道川,使用document.body.scrollTop

新方法午衰,window.pageXOffset和window.pageYOffset

function getScroll (){

? ? return {

? ? ? left : window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0,

? ? ? top : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0

? ? ? };

}

getScroll().left調(diào)用

offset系列經(jīng)常用來(lái)獲取元素位置offsetLeft 、offsetTop

client 系列經(jīng)常用來(lái)獲取元素大小clientWidth冒萄、clientHeight

scroll系列經(jīng)常用來(lái)獲取滾動(dòng)的距離scrollTop臊岸、scrollLeft

頁(yè)面的滾動(dòng)距離通過window.pageXOffset獲得

mouseenter和mouseover的區(qū)別

當(dāng)鼠標(biāo)移動(dòng)元素上時(shí)就會(huì)觸發(fā)mouseenter事件

類似mouseover,他們兩者之前的差別是:

mouseover鼠標(biāo)經(jīng)過自身盒子會(huì)觸發(fā),經(jīng)過子盒子也會(huì)觸發(fā)尊流,mouseenter只經(jīng)過自身盒子觸發(fā)帅戒,之所以這樣是因?yàn)閙ouseenter不會(huì)冒泡,跟mouseenter搭配崖技,mouseleave同樣不會(huì)冒泡逻住。

動(dòng)畫函數(shù)封裝

核心原理:通過定時(shí)器setInterval()不斷的移動(dòng)盒子的位置

實(shí)現(xiàn)步驟:獲得盒子當(dāng)前位置

讓盒子在當(dāng)前位置加上一個(gè)移動(dòng)距離

利用定時(shí)器不斷重復(fù)這個(gè)操作

加一個(gè)結(jié)束定時(shí)器的條件

注意此元素需要添加定位,才能使用element.style.left

動(dòng)畫函數(shù)簡(jiǎn)單封裝-需要傳遞兩個(gè)參數(shù)迎献,動(dòng)畫對(duì)象和移動(dòng)到的距離

function animate(obj,target) {

? ? clearInterval(obj.timer);

? ? obj.timer = setInterval(function () {

? ? ? ? if(obj.offsetLeft >= target) {

? ? ? ? ? ? clearInterval(obj.timer);

? ? ? ? }

? ? ? ? ? obj.style.left = obj.offsetLeft + 1 +'px';

? ? ? },30);

}

緩動(dòng)效果原理:讓盒子每次移動(dòng)的距離變小瞎访,速度快就會(huì)慢下來(lái)

核心算法:(目標(biāo)值-現(xiàn)在的位置)/10? 作為每次移動(dòng)距離的步長(zhǎng)

停止的條件:讓當(dāng)前盒子位置等于目前位置就停止定時(shí)器

注意步長(zhǎng)值需要取整,一般向上取整Math.ceil()

function animate(obj,target,callback) {

? ? clearInterval(obj.timer);

? ? obj.timer = setInterval(function () {

? ? var step = (target-obj.offsetLeft)/10;

? ? step = step>0?Math.ceil(step):Math.floor(step);

? ? ? ? if(obj.offsetLeft == target) {

? ? ? ? ? ? clearInterval(obj.timer);

? ? ? ? ? ? //if(callback) {

? ? ? ? ? ? //? callback();

? ? ? ? ? // }

? ? ? ? ? ? callback&&callback();

? ? ? ? }

? ? ? ? ? obj.style.left = obj.offsetLeft + step +'px';

? ? ? },15);

}

節(jié)流閥吁恍,防止輪播圖連續(xù)點(diǎn)擊造成播放過快扒秸。

核心原理:利用回調(diào)函數(shù),添加一個(gè)變量來(lái)控制践盼,鎖住函數(shù)或解鎖函數(shù)鸦采。

開始聲明一個(gè)變量? var flag=true;

if (flag) {flag=false; do something);關(guān)閉水龍頭

利用回調(diào)函數(shù):動(dòng)畫執(zhí)行完畢,flag=true;打開水龍頭

在動(dòng)畫函數(shù)animate里面添加回調(diào)函數(shù)function (){ flag=true;}

返回頂部? window.scroll(x,y)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咕幻,一起剝皮案震驚了整個(gè)濱河市渔伯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肄程,老刑警劉巖锣吼,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件选浑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡玄叠,警方通過查閱死者的電腦和手機(jī)古徒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)读恃,“玉大人隧膘,你說(shuō)我怎么就攤上這事∷卤梗” “怎么了疹吃?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)西雀。 經(jīng)常有香客問我萨驶,道長(zhǎng),這世上最難降的妖魔是什么艇肴? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任腔呜,我火速辦了婚禮,結(jié)果婚禮上再悼,老公的妹妹穿的比我還像新娘核畴。我一直安慰自己,他們只是感情好冲九,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布膛檀。 她就那樣靜靜地躺著,像睡著了一般娘侍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泳炉,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天憾筏,我揣著相機(jī)與錄音,去河邊找鬼花鹅。 笑死氧腰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刨肃。 我是一名探鬼主播古拴,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼真友!你這毒婦竟也來(lái)了黄痪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤盔然,失蹤者是張志新(化名)和其女友劉穎桅打,沒想到半個(gè)月后是嗜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挺尾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年鹅搪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遭铺。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡丽柿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出魂挂,到底是詐尸還是另有隱情甫题,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布锰蓬,位于F島的核電站幔睬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏芹扭。R本人自食惡果不足惜麻顶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舱卡。 院中可真熱鬧辅肾,春花似錦、人聲如沸轮锥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)舍杜。三九已至新娜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間既绩,已是汗流浹背概龄。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饲握,地道東北人私杜。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像救欧,于是被迫代替她去往敵國(guó)和親衰粹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355