国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題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關鍵字專題關鍵字專題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
當前位置: 首頁 - 科技 - 知識百科 - 正文

javascript獲取元素的計算樣式

來源:懂視網 責編:小采 時間:2020-11-27 21:56:12
文檔

javascript獲取元素的計算樣式

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

背景

使用css控制頁面有4種方式,分別為行內樣式(內聯樣式)、內嵌式、鏈接式、導入式。

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

    獲取計算樣式

    元素的style下的屬性,默認為空字符串;

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

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

    寫法: getComputedStyle(box).height;

    獲取寬高(尺寸)

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

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

    絕對位置

    元素距離

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

  • getBoundingClientRect()
  • 當前元素到頁面可視區的尺寸、距離;

    注意:

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

    包含: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內才能保證不掉幀。也就是說每一次渲染都要在 16.7ms 內頁面才夠流暢不會有卡頓感。

    封裝絕對位置

    // 使用邊框、定位位置
     class Tools {
     position(ele){ 
     let left = 0;
     let top = 0;
     let obj = ele;
     while(obj){
     // t = 當前元素的外邊距 + 當前元素邊框
     left += obj.offsetLeft + obj.clientLeft;
     top += obj.offsetTop + obj.clientTop;
     //重新設置Obj是誰,讓obj變為當前的定位父級
     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>
    
    

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    javascript獲取元素的計算樣式

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 香蕉视频网页版 | 自拍 欧美 在线 综合 另类 | 精品一区二区三区在线视频 | 欧美系列在线 | 视频在线观看国产 | 国产精品亚洲专区在线观看 | 国产极品久久 | 国产精品美女一区二区三区 | 日本三级韩国三级欧美三级 | 欧美日韩色视频在线观看 | 亚洲精品电影 | 久久精品亚洲一区二区 | 亚洲一区二区三区四区在线观看 | 亚洲第一页在线 | 久久91精品国产91久久 | 国产精品激情综合久久 | 国产在线精品一区二区三区 | 欧美v在线| 亚洲精品视频在线 | 欧美在线观看成人高清视频 | 欧美一区二区三区四区视频 | 欧美国产中文 | 亚洲欧美日韩综合网导航 | 日韩在线欧美在线 | 亚洲欧美二区三区久本道 | 国产精品亚洲精品观看不卡 | 成人免费一级片 | 伊人操 | 激情欧美一区二区三区 | 亚洲最新视频 | 亚洲欧洲视频在线 | 国产一区二区三区不卡免费观看 | 婷婷久久五月天 | 欧美激情在线 | 欧美在线一 | 亚洲高清视频在线 | 久久久亚洲欧美综合 | 久久91精品国产91久久小草 | 精品欧美一区二区三区免费观看 | 毛片黄色视频 | 欧美精品三区 |