<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guā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)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        javascript獲取元素的計算樣式

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

        javascript獲取元素的計算樣式

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

        背景

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

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

        獲取計算樣式

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

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

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

        寫法: getComputedStyle(box).height;

        獲取寬高(尺寸)

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

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

        絕對位置

        元素距離

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

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

        注意:

        是跟滾動條走的。
        也就是拖動滾動條值會變;

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

        寫法:box2.getBoundingClientRect();

        使用定位距離做一個小例子:

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

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

        封裝絕對位置

        // 使用邊框、定位位置
         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是誰,讓obj變?yōu)楫?dāng)前的定位父級
         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)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        javascript獲取元素的計算樣式

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

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 曰批全过程免费视频在线观看| 国产在线精品一区免费香蕉| 麻豆高清免费国产一区| 国产亚洲精品无码成人| 精品国产免费人成网站| 亚洲精品无码AV人在线播放| 51午夜精品免费视频| 国产aⅴ无码专区亚洲av麻豆| 一二三区免费视频| 亚洲va国产va天堂va久久| 抽搐一进一出gif免费视频| 亚洲Av无码专区国产乱码DVD| 四虎影视成人永久免费观看视频| 亚洲宅男永久在线| 和日本免费不卡在线v| 精品无码专区亚洲| 亚洲一区二区三区在线播放| 国色精品va在线观看免费视频| 亚洲AV日韩精品久久久久久久| 亚洲黄色免费网址| 亚洲av日韩av永久无码电影| 亚洲成av人片一区二区三区| 国产成人1024精品免费| 久久亚洲精品国产精品| 最新免费jlzzjlzz在线播放| 国产精品亚洲综合网站| 亚洲人成人无码网www电影首页 | 亚洲最大av无码网址| 你好老叔电影观看免费| 亚洲精品中文字幕无码AV| 永久免费看mv网站入口| 黄色短视频免费看| 亚洲成人网在线观看| 国产一级理论免费版| 国产真人无码作爱视频免费| 激情内射亚洲一区二区三区爱妻| 四虎影视永久免费观看| 毛片在线全部免费观看| 中国china体内裑精亚洲日本| 亚洲日韩精品无码专区网站| 久视频精品免费观看99|