js,mui,jq 操作基本的DOM


一。HTML

<ul>
  <li>1111111</li>
  <li>22222222</li>
</ul>

二。CSS

li{    
    height: 60px;
    line-height: 60px;
    text-align: center;
    font-size: 14px;
    color: red;
    padding: 4px;
    border: 1px solid black;
  }

1.獲取寬高:

  jq:$("div").height();

  js:document.getElementsByTagName("ul")[0].getElementsByTagName("li")[0].offsetHeight;

  mui:獲取第一個li高度就是mui("ul li")[0].offsetHeight;第二個li就是mui("ul li")[1].offsetHeight;

  備注:來看看height,scrollHeight,offsetHeight,clientHeight這幾個的區別與聯系:

      clientHeight:理解為內容可視區域的高度,不包含border,不包含border,不包含border;padding是算在里面的。就是clientHeight=height(設置的高度) + padding - 橫向滾動條的高度

      offsetHeight:offsetHeight = clientHeight + border + 橫向滾動條(橫向,橫向,就是overflow-x:scroll出現的那個滾動條的高度,默認應該都是17px);

      scrollHeight: 經過測試,我得出:scrollHeight=clientHeight+滾動條滾動的距離(高度就是豎直滾動條滾動的距離,寬度就是橫向滾動條滾動的距離);

  注意了,注意了:在mui里面,在mui里面,在mui里面,clientHeight,offsetHeight的滾動條是不算高度的,也就是offsetHeight = clientHeight + border。clientHeight=height-border;辣么在mui里面上面的li:offsetHeight=height,clientHeight就是58px;

  總結:1.pc端:clientHeight=height(設置的高度) + padding - 橫向滾動條的高度,如果沒有滾動條就不減;offsetHeight = clientHeight + border + 橫向滾動條,如果沒有滾動條就不加;

     2.移動端:2.1  有mui.css:offsetHeight = clientHeight + border。clientHeight=height-border;滾動條不算寬高。     (火狐瀏覽器里調試一定要設置成響應式設計模式哦,不然得出的高度會讓你懷疑人生的)

          2.2  無mui.css,只有<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />;

              有無滾動條都是:clientHeight=height(設置的高度) + padding;offsetHeight=clientHeight+border;

     其它瀏覽器版本沒測試過,不知道是否是一樣的。 

     高度明白了,寬度就是一樣的道理。。。    

    還有:js操作dom元素什么時候加[0]。document.getElementById("")這種,因為id在頁面中是唯一的一個所以,通過id來尋找的是不用加[0]的,但是document.getElementsByTagName或者document.getElementsByClassName("")這種,頁面上可能含有多個,是個數組,所以需要用[ 0 ],相當於索引一樣來獲取。mui類似。

        jQuery有時候也會有加[0]的時候,比如$("div")[0].innerHtml = "111",是因為innerHtml是一個DOM對象的屬性,需要把jQuery對象轉換成DOM對象才能使用innerHtml屬性,不然會報錯。其實jQuery也有自己的innerHtml方法,就是$("div").html(“111”);

 

2.添加和刪除Class屬性(mui的添加和刪除感覺和原生的一樣)

  jq: 添加:$("ul li:nth-child(1) p").addClass("active");

    刪除:$("ul li").eq(0).find("p").removeClass("active");

  js: 添加:document.getElementsByTagName("ul")[0].getElementsByTagName("li")[0].classList.add("active")

 

          刪除:document.getElementsByTagName("ul")[0].getElementsByTagName("li")[0].classList.remove("active")

 

  mui: 添加:mui("ul li")[1].classList.add("active")

     刪除:mui("ul li")[1].classList.remove("active")

 

3.CSS屬性的設置和獲取:

  jq:設置:$("ul li").css("background","red");

    獲取:$("ul li").css("background");

  js: 設置:js設置css樣式有以下幾種方式:element是獲取到的DOM對象

        1.element.style.width="100px"  //style對象下面的屬性介紹http://www.w3school.com.cn/jsref/dom_obj_style.asp

        2.element.style.cssText="width:100px;height:100px";//一次可以設置多個屬性

        3.element.setAttribute('style', 'height: 100px');

        4.element.style.setProperty("background","red");

    獲取:1.element.style.backgroundColor //只能獲取內聯樣式 ,但是backgroundColor非內聯也可獲取。注:如果是background-color這種,需要寫成駝峰樣式即backgroundColor。
        2.element.currentStyle.height //IE瀏覽器獲取非內嵌樣式 

        3.在非IE瀏覽器:window.getComputedStyle(element,null/偽類).height;如果是element本身,那么第二個參數就是null,如果需要偽類的樣式,則第二個參數為偽類。document.defaultView.getComputedStyle(element,null/偽類)一樣的。

     備注:做兼容:var a=element.currentStyle ? element.currentStyle : window.getComputedStyle(element, null)。看是否支持currentStyle,也就是看是否處在ie瀏覽器下。 

  mui:

其它的請看我的這篇詳細文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM