2017-12-20 JS 盒子模型

1.client.html

clientWidth/clientHeight:width/height+左右/上下padding
clientLeft/clientTop:左/上邊框寬度

2.scroll:主要看溢出沒有.能夠作出水平滾動的模型,函數

scrollWidth:若是內容沒有溢出,跟clientWidth同樣的,若是內容有溢出表示真實內容的寬+左padding
scrollHeight:若是內容沒有溢出,跟clientHeight同樣的,若是內容有溢出表示真實內容的高+上padding
scrollLeft:橫向滾動的距離
scrollTop:滾動條滾上去的距離

3.offsetthis

offsetWidth/offsetHeight:clientWidth/clientHeight+左右/上下border
offsetLeft/offsetTop:距離父級參照物的左/上偏移量
offsetParent:父級參照物

注意::13個屬性中,只有scrollTop與scrollLeft能夠獲取和設置,其餘能夠獲取,不能夠設置.htm

getComputedStyle(box)//能夠獲取styley內的box的樣式,而不須要寫在行內

2.1擴展:水平滾動代碼seo

var container=document.getElementsByClassName("container")[0];
var boxBegin=document.getElementsByClassName("box-begin")[0];
//獲取一個盒子的寬
var boxW=boxBegin.offsetWidth;
//注意:container有滾動條全部操做的是container的scrollLeft
function fn() {
//container.scrollLeft一旦大於等於boxW的時候,從0開始,其餘狀況正常增長便可
this.scrollLeft>=boxW?this.scrollLeft=0:this.scrollLeft++;
}
//設置一個定時器讓container的scrollLeft不斷增長
var timer=window.setInterval(function () {
fn.call(container)
},20);
//給 container綁定鼠標滑過事件,鼠標放上中止定時器
container.onmouseover=function () {
window.clearInterval(timer);
};
//鼠標移開 container,定時器繼續
container.onmouseout=function () {
//this container
timer=window.setInterval(()=>{fn.call(this)},20);
}

擴展:回到頂部模型和獲取offset的模型能夠封裝成兩個函數放在一個js中,html中引用事件

let $=(function () {
function win(attr,value) {
if(arguments.length==1){
return document.documentElement[attr]||document.body[attr];
}else if(arguments.length==2) {
document.documentElement[attr]=value;
document.body[attr]=value;
}
}
function offset(curEle) {
var L=curEle.offsetLeft;
var T=curEle.offsetTop;
var P=curEle.offsetParent;
while (P){
if(!/MSIE 8/.test(window.navigator.userAgent)){
L+=P.clientLeft;
T+=P.clientTop;
}
L+=P.offsetLeft;
T+=P.offsetTop;
P=P.offsetParent;
}
}
return{
win:win,
offset:offset
}
})();
  

該方法用在回到頂部的案例中get

//需求:當網頁滾上去的距離超過一屏了此時顯示upvar body=document.body;var up=document.getElementById("up");//獲取一屏的高var H=$.win("clientHeight");var timer=null;body.onscroll=function () {    //判斷滾上去的距離是否大於等於H,一旦大於等於H,此時讓up顯示    if($.win("scrollTop")>=H){        up.style.display="block";    }else {        up.style.display="none";    }};//給up綁定點擊事件,讓 scrollTop值不斷減少到0,設置定時器讓其減少,當scrollTop值小於等於0時候清除定時器up.onclick=function () {    timer=setInterval(function () {        //先獲取scrollTop值        var t=$.win("scrollTop");        //將這個值減少再賦值給scrollTop        $.win("scrollTop",t-=100);        //判斷臨界值        if(t<=0){            clearInterval(timer)        }    },10)}
相關文章
相關標籤/搜索