2016-11-17 7 views
0

Ich habe den folgenden Code, wo die Scroll-Breite und minus es von der div Breite bekommen und es funktioniert gut, aber das Problem ist es funktioniert nicht in window.resize, wie kann ich Lass es in window.resize arbeiten?Get scrollbar Breite und minus von div Breite

Hier ist der JS-Code

//get scrollbar width 
function getScrollBarWidth() { 
    var inner = document.createElement('p'); 
    inner.style.width = "100%"; 
    inner.style.height = "200px"; 
    var outer = document.createElement('div'); 
    outer.style.position = "absolute"; 
    outer.style.top = "0px"; 
    outer.style.left = "0px"; 
    outer.style.visibility = "hidden"; 
    outer.style.width = "200px"; 
    outer.style.height = "150px"; 
    outer.style.overflow = "hidden"; 
    outer.appendChild (inner); 
    document.body.appendChild (outer); 
    var w1 = inner.offsetWidth; 
    outer.style.overflow = 'scroll'; 
    var w2 = inner.offsetWidth; 
    if (w1 == w2) w2 = outer.clientWidth; 
    document.body.removeChild (outer); 
    return (w1 - w2); 
}; 
//header width minus scrollbar width 
$("header").width($("header").width() - getScrollBarWidth() + "px"); 
+0

eine Funktion hinzufügen 'getScrollBarWidth' Funktion aufzurufen, während Fenster – azad

+0

@azad der Größe verändern können Sie vorschlagen, ein Beispiel bitte? –

+0

Ich denke, Luis Gar hat richtig geantwortet. – azad

Antwort

0

Ich denke, die bessere Lösung https://api.jquery.com/resize/

$(window).resize(function() { 
$("header").width($("header").width() - getScrollBarWidth() + "px"); 
}); 

Herausgegeben als Kommentar ist:

$(window).resize(function() { 
setTimeout(funtion(){$("header").width($("header").width() - getScrollBarWidth() + "px");},300) 
}); 
+0

das ist, was ich bereits versucht habe, wenn Sie die getScrollbarWidth zurückgeben 0 –

+0

was es zurückgibt, wenn die Größe des Fensters nicht ändert? – azad

+0

Sie können ein timeOut zum Warten hinzufügen, das Fenster wird in der Größe verändert. Versuchen. –

0

diese Erklärung eine timeOut Versuchen überall setzen in Ihre Skriptdatei, die die Funktion "getScrollBarWidth" enthält.

onresize = getScrollBarWidth; 
+0

funktioniert nicht, meine Anforderung ist die Breite der div - scroll Breite auf Größe ändern –

+0

@SanjeevK, ist nicht "die Funktion, die Sie selbst als" getScrollBarWidth "benannt, derjenige, der es tut Warum sollte man es so nennen? Wenn nicht, dann müssen Sie eine Funktion für den Code einfügen, der das tut, zB: '$ (" header "). width ($ (" header "). width() - getScrollBarWidth () + "px"); 'und assistiert es dem 'onresize'-Ereignis. Und es wird. –

+0

Ja Funktion ist gleich und auch ich habe es versucht, aber es funktioniert nicht onresize = $ (" header "). width ($ ("header"). width() - getScrollBarWidth() + "px"); –

Verwandte Themen