面試中,應(yīng)該會經(jīng)常被問到樣式的寫法以及如何使用原生JS獲取及操作樣式的問題吧,讓我給大家總結(jié)一下~

成都創(chuàng)新互聯(lián)公司專注于蓋州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供蓋州營銷型網(wǎng)站建設(shè),蓋州網(wǎng)站制作、蓋州網(wǎng)頁設(shè)計、蓋州網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造蓋州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供蓋州網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
HTML + 行內(nèi)樣式
JS
嘿嘿~
盒子 原來的位置 0 + 10 盒子現(xiàn)在的offsetLeft 10
|-5| = 5
這三個函數(shù)都是 數(shù)學(xué)函數(shù)
Math
比如說 console.log(Math.ceil(1.01)) 結(jié)果 是 2
console.log(Math.ceil(1.9)) 結(jié)果 2
console.log(Math.ceil(-1.3)) 結(jié)果 是 -1
比如說 console.log(Math.floor(1.01)) 結(jié)果 是 1
console.log(Math.floor(1.9)) 結(jié)果 1
console.log(Math.floor(-1.3)) 結(jié)果 是 -2
console.log(Math.round(1.01)) 結(jié)果 是 1
console.log(Math.round(1.9)) 結(jié)果 是 2
勻速動畫的原理: 盒子本身的位置 + 步長
緩動動畫的原理: 盒子本身的位置 + 步長 (不斷變化的)
( 缺陷:只能水平方向!隨后的“封裝運動框架單個屬性會進(jìn)一步改進(jìn)” )
我們訪問得到css 屬性,比較常用的有兩種:
點語法可以得到 width 屬性 和 top屬性 ** 帶有單位的 。 100px
但是這個語法有非常大的 缺陷**, 不變的。
后面的width 和 top 沒有辦法傳遞參數(shù)的。
var w = width;
box.style.w
最大的優(yōu)點 : 可以給屬性傳遞參數(shù)
我們想要獲得css 的樣式, box.style.left 和 box.style.backgorundColor
但是它只能得到 行內(nèi)的樣式。
但是我們工作最多用的是 內(nèi)嵌式 或者 外鏈?zhǔn)?。
怎么辦?
核心: 我們怎么才能得到內(nèi)嵌或者外鏈的樣式呢?
外部(使用link)和內(nèi)嵌(使用style)樣式表中的樣式(ie和opera)
兩個選項是必須的, 沒有偽類 用 null 替代
我們這個元素里面的屬性很多, left top width ===
我們想要某個屬性, 就應(yīng)該 返回該屬性,所有繼續(xù)封裝 返回當(dāng)前樣式的 函數(shù)。
千萬要記得 每個 的意思 : 那是相當(dāng)重要
flag在js中一般作為開關(guān),進(jìn)行判斷。
等動畫執(zhí)行完畢再去執(zhí)行的函數(shù) 回調(diào)函數(shù)
我們怎么知道動畫就執(zhí)行完畢了呢?
很簡單 當(dāng)定時器停止了。 動畫就結(jié)束了
案例源碼:
in運算符也是一個二元運算符,但是對運算符左右兩個操作數(shù)的要求比較嚴(yán)格。in運算符要求第1個(左邊的)操作數(shù)必須是字符串類型或可以轉(zhuǎn)換為字符串類型的其他類型,而第2個(右邊的)操作數(shù)必須是數(shù)組或?qū)ο蟆V挥械?個操作數(shù)的值是第2個操作數(shù)的屬性名,才會返回true,否則返回false
案例源碼:
鏈接:
密碼:7fv8
1 Javascript獲取頁面的元素的樣式常見的兩個方法是 document.getElementById(),?document.querySelector("");方法。
2 在下面的實例中是使用Javascript來改變標(biāo)簽的背景顏色,使用的是document.querySelector()方法。代碼可以直接復(fù)制到瀏覽器上面運行;document.querySelector("#demo").style.background = "red";是獲取元素,使用css改變標(biāo)簽的北京顏色;button onclick="myFunction()"點我/button是點擊事件觸發(fā),點擊之后有相應(yīng)的代碼執(zhí)行。
!DOCTYPE html
html
head
meta charset="utf-8"
titlejavascript改變背景顏色/title
/head
body
p id="demo"id="demo" 的 p 元素/p
button onclick="myFunction()"點我/button
script
function myFunction() {
document.querySelector("#demo").style.background = "red";
}
/script
/body
/html
3 ?案例加載之后的頁面效果截圖 :
4 點擊點我按鈕之后,北京顏色變?yōu)榧t色的效果截圖:
用document.getElementById(‘element’).style.xxx可以獲取元素的樣式信息,可是它獲取的只是DOM元素style屬性里的樣式規(guī)則,對于通過class屬性引用的外部樣式表,就拿不到我們要的信息了。
DOM標(biāo)準(zhǔn)里有個全局方法getComputedStyle,可以獲取到當(dāng)前對象樣式規(guī)則信息,如:getComputedStyle(obj,null).paddingLeft,就能獲取到對象的左內(nèi)邊距。但是IE不支持此方法,它有自己的一個實現(xiàn)方式,那就是currentStyle,不同于全局方法getComputedStyle,它是作為DOM元素屬性存在的,如:obj.currentStyle.paddingLeft,在IE中就獲取到對象的左內(nèi)邊距了,兼容性的寫法如下:
return window.getComputedStyle ? window.getComputedStyle(obj,null).paddingLeft : obj.currentStyle.paddingLeft;
一、獲取內(nèi)聯(lián)樣式
div
id
="myDiv"
style="width:100px;height:100px;background-color:red;
border:1px
solid
black;"/div
script
var
myDiv
=
document.getElementById("myDiv");
alert(myDiv.style.width);//100px
alert(myDiv.style['height']);//100px
var
style=myDiv.style;
alert(style.backgroundColor);//red
myDiv.style.backgroundColor='green';//myDiv背景色變?yōu)榫G色
/script
在這種情況下,獲取和設(shè)置樣式只靠style屬性就可以,因為element.style屬性返回的是類似數(shù)組的一組樣式屬性及對應(yīng)值,因此訪問具體樣式的時候可以采取兩種方式即“ele.style.屬性名稱”和“ele.style['屬性名稱']”。但是,要注意的是,針對css樣式里background-color;margin-left之類的短杠相接的屬性名稱,在使用style屬性獲取設(shè)置樣式的時候名稱要改為駝峰式,如ele.style.backgroundColor.
二、因為第一種方法,即使用style屬性只能獲取到內(nèi)聯(lián)樣式。但是,實際情況是文檔在現(xiàn)在都基本遵循分離思想,樣式基本都是外部鏈接,所以三種樣式都要考慮到的,這時就要使用其他方法進(jìn)行獲取,而在這種情況下進(jìn)行樣式獲取時,不同的瀏覽器又有不同的處理方式(主要是ie和非ie),因此根據(jù)瀏覽器可以分為兩種方式:
(2.1)非ie瀏覽器中,使用document.defaultView對象的getComputedStyle(ele,null/偽類)方法,該方法接受兩個參數(shù),第一個為要考察的元素,第二個則要根據(jù)情況,如果只是考察元素本身則為null,如果要
考察偽類,則為響應(yīng)的偽類。該方法獲取到的為元素應(yīng)用的最終樣式組合,同樣是類似數(shù)組的一個實例。
(2.2)在ie瀏覽器中,對getComputedStyle()方法不支持,但是針對每個標(biāo)簽元素都有一個近似于style屬性的currentStyle的屬性,且用法和style用法相同。只不過獲取到的樣式范圍不一樣。currenStyle獲取到的和getComputedStyle()方法相接近。
為了在處理時達(dá)到兼容,可以根據(jù)這兩種不同的處理方式創(chuàng)建一個函數(shù)來達(dá)到兼容目的,使得不管在那種瀏覽器中,都可以成功獲取樣式。如下所示:
style
type="text/css"
#myDiv
{
background-color:blue;
width:100px;
height:200px;
}
/style
div
id
="myDiv"
style="background-color:red;
border:1px
solid
black;"/div
script
var
myDiv
=
document.getElementById("myDiv");
var
finalStyle
=
myDiv.currentStyle
?
myDiv.currentStyle
:
document.defaultView.getComputedStyle(myDiv,
null);/*利用判斷是否支持currentStyle(是否為ie)
來通過不同方法獲取style*/
alert(finalStyle.backgroundColor);
//"red"
alert(finalStyle.width);
//"100px"
alert(finalStyle.height);
//"200px"
/script
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
你按右鍵查看他的代碼找到
最終的css.css這個文件下載下來就可以了
本文名稱:得到css樣式,CSS樣式屬性
網(wǎng)頁路徑:http://chinadenli.net/article45/dsepphi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、定制開發(fā)、自適應(yīng)網(wǎng)站、云服務(wù)器、做網(wǎng)站、面包屑導(dǎo)航
聲明:本網(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)