• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專(zhuān)題視頻專(zhuān)題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專(zhuān)題1關(guān)鍵字專(zhuān)題50關(guān)鍵字專(zhuān)題500關(guān)鍵字專(zhuān)題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專(zhuān)題關(guān)鍵字專(zhuān)題tag2tag3文章專(zhuān)題文章專(zhuān)題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專(zhuān)題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    javascript獲取元素的計(jì)算樣式

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:56:12
    文檔

    javascript獲取元素的計(jì)算樣式

    javascript獲取元素的計(jì)算樣式:背景 使用css控制頁(yè)面有4種方式,分別為行內(nèi)樣式(內(nèi)聯(lián)樣式)、內(nèi)嵌式、鏈接式、導(dǎo)入式。 行內(nèi)樣式(內(nèi)聯(lián)樣式)即寫(xiě)在html標(biāo)簽中的style屬性中,如 <div style=width:100px;height:100px;></div> 內(nèi)嵌樣式即寫(xiě)在style標(biāo)簽
    推薦度:
    導(dǎo)讀javascript獲取元素的計(jì)算樣式:背景 使用css控制頁(yè)面有4種方式,分別為行內(nèi)樣式(內(nèi)聯(lián)樣式)、內(nèi)嵌式、鏈接式、導(dǎo)入式。 行內(nèi)樣式(內(nèi)聯(lián)樣式)即寫(xiě)在html標(biāo)簽中的style屬性中,如 <div style=width:100px;height:100px;></div> 內(nèi)嵌樣式即寫(xiě)在style標(biāo)簽

    背景

    使用css控制頁(yè)面有4種方式,分別為行內(nèi)樣式(內(nèi)聯(lián)樣式)、內(nèi)嵌式、鏈接式、導(dǎo)入式。

  • 行內(nèi)樣式(內(nèi)聯(lián)樣式)即寫(xiě)在html標(biāo)簽中的style屬性中,如 <div style="width:100px;height:100px;"></div>
  • 內(nèi)嵌樣式即寫(xiě)在style標(biāo)簽中,例如<style type="text/css">div{width:100px; height:100px}</style>
  • 鏈接式即為用link標(biāo)簽引入css文件,例如<link href="test.css" rel="external nofollow" type="text/css" rel="stylesheet" />
  • 導(dǎo)入式即為用import引入css文件,例如@import url("test.css")
  • 如果想用javascript獲取一個(gè)元素的樣式信息,首先想到的應(yīng)該是元素的style屬性。但是元素的style屬性?xún)H僅代表了元素的內(nèi)聯(lián)樣式,如果一個(gè)元素的部分樣式信息寫(xiě)在內(nèi)聯(lián)樣式中,一部分寫(xiě)在外部的css文件中,通過(guò)style屬性是不能獲取到元素的完整樣式信息的。因此,需要使用元素的計(jì)算樣式才獲取元素的樣式信息。

    獲取計(jì)算樣式

    元素的style下的屬性,默認(rèn)為空字符串;

    獲取計(jì)算后的樣式(非行間樣式):
    getComputedStyle(element).屬性

    獲取到的結(jié)果為 帶單位的字符串 ,如 :100px;

    寫(xiě)法: getComputedStyle(box).height;

    獲取寬高(尺寸)

  • ele.clientHeight/Width 支持padding,不包含邊框,元素可視區(qū)寬度;
  • ele.offsetWidth/Height 包含padding、border
    以上2個(gè),如果設(shè)置一個(gè)固定值,就以固定值為依據(jù)顯示,不會(huì)以被內(nèi)容撐開(kāi)顯示;
  • ele.scrollWidth/Height被內(nèi)容撐開(kāi)的高度(不包含邊框);
    無(wú)論是否設(shè)置固定樣式,都以被內(nèi)容撐開(kāi)我顯示結(jié)果;
  • 邊框尺寸
    1. clientLeft/clientTop邊框尺寸
    2. getComputedStyle(box3).borderTopWidth 邊框尺寸

    以上獲取到的都是不帶單位的數(shù)字,并且范圍為可視區(qū);

    絕對(duì)位置

    元素距離

  • offsetParent  定位父級(jí),沒(méi)有定位父級(jí)走body;
  • offsetLeft  當(dāng)前元素(左外邊框)到定位父級(jí)的(左內(nèi)邊框)距離;
  • offsetTop  當(dāng)前元素(上外邊框)到定位父級(jí)的(上內(nèi)邊框)距離;
    獲取的是不帶單位的數(shù)字。
  • 如果要使用上面的屬性,一定要做到以下幾點(diǎn):
    1、子集有絕對(duì)定位;
    2、定位父級(jí)也一定要有定位;
    3、自己和父級(jí)都要有寬高(觸發(fā)haslayout,zoom:1);

  • getBoundingClientRect()
  • 當(dāng)前元素到頁(yè)面可視區(qū)的尺寸、距離;

    注意:

    是跟滾動(dòng)條走的。
    也就是拖動(dòng)滾動(dòng)條值會(huì)變;

    包含:width/height/left/right/top/bottom/x/y

    寫(xiě)法:box2.getBoundingClientRect();

    使用定位距離做一個(gè)小例子:

     let timer = null;
     box.onclick =function (){
     timer = setInterval(()=>{
     box.style.left= box.offsetLeft + 1 +'px';
     },16.7)
     }
    

    在此了解以下渲染幀:
    渲染幀是指瀏覽器一次完整繪制過(guò)程,幀之間的時(shí)間間隔是DOM視圖更新的最小間隔。 由于主流的屏幕刷新率都在60hz,因此渲染一幀的事件就必須控制在16.7ms內(nèi)才能保證不掉幀。也就是說(shuō)每一次渲染都要在 16.7ms 內(nèi)頁(yè)面才夠流暢不會(huì)有卡頓感。

    封裝絕對(duì)位置

    // 使用邊框、定位位置
     class Tools {
     position(ele){ 
     let left = 0;
     let top = 0;
     let obj = ele;
     while(obj){
     // t = 當(dāng)前元素的外邊距 + 當(dāng)前元素邊框
     left += obj.offsetLeft + obj.clientLeft;
     top += obj.offsetTop + obj.clientTop;
     //重新設(shè)置Obj是誰(shuí),讓obj變?yōu)楫?dāng)前的定位父級(jí)
     obj = obj.offsetParent; //box3 -> box2 -> box1 -> 
     }
     left -= ele.clientLeft; //多加一次box3的border,所以要減去
     top -= ele.clientTop;
     return {
     left,
     top
     }
     }
     }
     let t1 = new Tools;
     console.log(t1.position(box3).top);
    

    返回頂部的小例子

    <style>
    *{
     margin:0;
     padding:0;
    }
    #box{
     width:100px;
     height:50px;
     font-size:20px;
     text-align: center;
     line-height: 50px;
     color:#fff;
     background: red;
     cursor: pointer;
     position:fixed;
     bottom:0;
     right:0;
     display: none;
    }
    body,html{
     height:3000px;
    }
    </style>
    </head>
    <body>
     <div id="box">返回頂部</div>
    <script>
     window.onscroll = function(){
     // console.log(window.pageYOffset);
     if(window.pageYOffset >= 600){
     box.style.display = 'block';
     }else{
     box.style.display = 'none';
     }
     }
     let timer = null;
     box.onclick = function(){
     let t = window.pageYOffset;
     timer = setInterval(() => {
     t-=100;
     if(t <= 0){
     t = 0;
     clearInterval(timer);
     }
     window.scrollTo(0,t);
     }, 16.7);
     }
    </script>
    
    

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    javascript獲取元素的計(jì)算樣式

    javascript獲取元素的計(jì)算樣式:背景 使用css控制頁(yè)面有4種方式,分別為行內(nèi)樣式(內(nèi)聯(lián)樣式)、內(nèi)嵌式、鏈接式、導(dǎo)入式。 行內(nèi)樣式(內(nèi)聯(lián)樣式)即寫(xiě)在html標(biāo)簽中的style屬性中,如 <div style=width:100px;height:100px;></div> 內(nèi)嵌樣式即寫(xiě)在style標(biāo)簽
    推薦度:
    標(biāo)簽: 獲取 元素 js
    • 熱門(mén)焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門(mén)推薦

    專(zhuān)題
    Top
    主站蜘蛛池模板: 热re99久久精品国99热| 2048亚洲精品国产| 国产精品亚洲日韩欧美色窝窝色欲| 8050免费午夜一级国产精品| 亚洲精品高清国产一线久久| 国产欧美日韩综合精品二区| 国产精品免费看久久久| 亚洲精品高清一二区久久| 国产精品国产欧美综合一区| 国产精品视频久久| 久久久久99精品成人片直播 | 亚洲日韩国产精品第一页一区| 99久久亚洲综合精品网站| 岛国精品一区免费视频在线观看| 最新国产在线精品观看| 欧美精品福利在线视频| 国产一区二区三区精品视频| 亚洲欧洲国产精品你懂的| 精品少妇无码AV无码专区| 亚洲av永久无码精品漫画 | 久久激情亚洲精品无码?V| 51精品资源视频在线播放 | 99精品无人区乱码在线观看| 日本aⅴ精品中文字幕| 亚洲精品制服丝袜四区| 欧美人与性动交α欧美精品| 精品无码人妻久久久久久| 国产高清在线精品一区小说 | 久久精品国产99国产精偷| 国产日韩一区在线精品欧美玲| 国产精品对白交换视频| 精品人妻系列无码天堂| 国产精品无码一区二区三级| 精品国产福利一区二区| 欧美精品综合视频一区二区| 久久er国产精品免费观看2| 国产精品1区2区| 久久精品成人免费网站| 久久精品国产亚洲综合色| 午夜精品福利视频| 国产精品亚洲视频|