簡體   English   中英

如何使用vanilla JavaScript找到div的寬度?

[英]How to find the width of a div using vanilla JavaScript?

如何在使用像jQuery這樣的庫的情況下以跨瀏覽器兼容的方式找到<div>的當前寬度?

document.getElementById("mydiv").offsetWidth

您可以使用clientWidthoffsetWidth Mozilla開發人員網絡參考

這將是:

document.getElementById("yourDiv").clientWidth; // returns number, like 728

或帶邊框寬度:

document.getElementById("yourDiv").offsetWidth; // 728 + borders width

所有答案都是正確的,但我仍然想提供其他一些可行的替代方案。

如果您正在尋找指定的寬度(忽略填充,邊距等),您可以使用。

getComputedStyle(element).width; //returns value in px like "727.7px"

getComputedStyle允許您訪問該元素的所有樣式。 例如:padding,paddingLeft,margin,border-top-left-radius等。

您還可以使用ClassName搜索DOM。 例如:

document.getElementsByClassName("myDiv")

這將返回一個數組。 如果您有興趣的某個特定屬性。例如:

var divWidth = document.getElementsByClassName("myDiv")[0].clientWidth;

divWidth現在將等於div數組中第一個元素的寬度。

實際上,您不必使用document.getElementById("mydiv")
你可以簡單地使用div的id,如:

var w = mydiv.clientWidth;
要么
var w = mydiv.offsetWidth;
等等

在div或body標簽上調用下面的方法onclick =“show(event);” function show(event){

        var x = event.clientX;
        var y = event.clientY;

        var ele = document.getElementById("tt");
        var width = ele.offsetWidth;
        var height = ele.offsetHeight;
        var half=(width/2);
       if(x>half)
        {
          //  alert('right click');
            gallery.next();
        }
        else
       {
           //   alert('left click');
            gallery.prev();
        }


    }

獲取計算樣式的正確方法是等待頁面呈現。 它可以通過以下方式完成。 獲取auto值時要注意超時。

function getStyleInfo() {
    setTimeout(function() {
        const style = window.getComputedStyle(document.getElementById('__root__'));
        if (style.height == 'auto') {
            getStyleInfo();
        }
        // IF we got here we can do actual business logic staff
        console.log(style.height, style.width);
    }, 100);
};

window.onload=function() { getStyleInfo(); };

如果你只使用

window.onload=function() {
    var computedStyle = window.getComputedStyle(document.getElementById('__root__'));
}

您可以獲取寬度和高度的auto值,因為瀏覽器在執行完全加載之前不會渲染。

另一種選擇是使用getBoundingClientRect函數。 請注意,如果元素的顯示為“none”,則getBoundingClientRect將返回一個空矩形。

var elem = document.getElementById("myDiv");
if(elem) {
   var rect = elem.getBoundingClientRect();
   console.log(rect.width);  
}

如何用香草 javascript 確定一個<div>是可滾動的?</div><div id="text_translate"><p> 這個問題在這里( <a href="https://stackoverflow.com/questions/10948044/detect-if-the-div-have-scroll-bar-or-not/10948074" rel="nofollow noreferrer">檢測 DIV 是否有滾動條[重復]</a> )和其他關於 SO 的問題的回答不准確。</p><p> 答案沒有考慮到 div 的內容可能有一個float ,之后不會被清除。 div.clientHeight和div.scrollHeight不能用於檢測滾動行為。 就像下面的例子: </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-js lang-js prettyprint-override"> window.addEventListener("load",function(){ var div = document.querySelector(".container"); document.querySelector(".clientHeight").innerHTML = div.clientHeight; document.querySelector(".scrollHeight").innerHTML = div.scrollHeight; });</pre><pre class="snippet-code-css lang-css prettyprint-override"> .container{ width: 50px; min-height: 20px; border: 1px solid red; }.floated{ float: left; }</pre><pre class="snippet-code-html lang-html prettyprint-override"> &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;clientHeight&lt;/th&gt; &lt;th&gt;scrollHeight&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td class="clientHeight"&gt;&lt;/td&gt; &lt;td class="scrollHeight"&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;div class="container"&gt; &lt;div class="floated"&gt;Lorem ipsum dolor sit amet blah blah blah blah blah&lt;/div&gt; &lt;/div&gt;</pre></div></div><p></p><p> <a href="https://codepen.io/0t4k4r/pen/PooLygp" rel="nofollow noreferrer">密碼筆</a></p></div>

[英]How to determine with vanilla javascript that a <div> is scrollable?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 獲取內容的寬度,而不是使用普通JavaScript的視口 使用香草 JavaScript 正確隱藏取消隱藏 Div 使用香草 JavaScript 滾動時顯示 div 如何使用 Vanilla JavaScript 平滑過渡顯示 div 如何在Vanilla JavaScript中執行$(&#39;。div a&#39;)? 如何用香草 javascript 確定一個<div>是可滾動的?</div><div id="text_translate"><p> 這個問題在這里( <a href="https://stackoverflow.com/questions/10948044/detect-if-the-div-have-scroll-bar-or-not/10948074" rel="nofollow noreferrer">檢測 DIV 是否有滾動條[重復]</a> )和其他關於 SO 的問題的回答不准確。</p><p> 答案沒有考慮到 div 的內容可能有一個float ,之后不會被清除。 div.clientHeight和div.scrollHeight不能用於檢測滾動行為。 就像下面的例子: </p><p></p><div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"><div class="snippet-code"><pre class="snippet-code-js lang-js prettyprint-override"> window.addEventListener("load",function(){ var div = document.querySelector(".container"); document.querySelector(".clientHeight").innerHTML = div.clientHeight; document.querySelector(".scrollHeight").innerHTML = div.scrollHeight; });</pre><pre class="snippet-code-css lang-css prettyprint-override"> .container{ width: 50px; min-height: 20px; border: 1px solid red; }.floated{ float: left; }</pre><pre class="snippet-code-html lang-html prettyprint-override"> &lt;table&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;clientHeight&lt;/th&gt; &lt;th&gt;scrollHeight&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td class="clientHeight"&gt;&lt;/td&gt; &lt;td class="scrollHeight"&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;div class="container"&gt; &lt;div class="floated"&gt;Lorem ipsum dolor sit amet blah blah blah blah blah&lt;/div&gt; &lt;/div&gt;</pre></div></div><p></p><p> <a href="https://codepen.io/0t4k4r/pen/PooLygp" rel="nofollow noreferrer">密碼筆</a></p></div> 如何找到原生 JavaScript 函數的實現代碼 如何使用JQuery在另一個div中找到div的寬度 如何使用 Javascript 查找 Masterpage 的高度和寬度 使用Vanilla JavaScript將元素高度設置為等於寬度
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM