2017-05-22 1 views
1

ich einen ansprechenden Punkt in meinem Handy Webview zu setzen versuchen und taten dies:JavaScript berechnen mit Ansichtsfenster Breite/Höhe

var w = window.innerWidth-40; 
var h = window.innerHeight-100; 

Die bisher große Werke. Die Werte -40 und -100 befinden sich jedoch nicht in der Höhe und Breite des Ansichtsfensters.

Wenn ich dies tun:

var w = window.innerWidth-40vw; 
var h = window.innerHeight-100vh; 

wie es reagiert, und in Bezug auf das Bildfenster bleiben soll - die JS funktioniert nicht mehr. Ich denke, vh und vw funktioniert nur in CSS? Wie kann ich das in JS erreichen?

Bitte keine JQuery-Lösungen - nur JS!

Dank

+3

es 'vw' nicht' wh' –

+0

es dank ist - schrieb es falsch, aber das Problem ist immer noch da - JS nicht –

Antwort

2

Basierend auf this site können Sie folgende Funktion in javascript schreiben die gewünschten Werte zu berechnen:

function vh(v) { 
 
    var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); 
 
    return (v * h)/100; 
 
} 
 

 
function vw(v) { 
 
    var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); 
 
    return (v * w)/100; 
 
} 
 

 
function vmin(v) { 
 
    return Math.min(vh(v), vw(v)); 
 
} 
 

 
function vmax(v) { 
 
    return Math.max(vh(v), vw(v)); 
 
} 
 
console.info(vh(20), Math.max(document.documentElement.clientHeight, window.innerHeight || 0)); 
 
console.info(vw(30), Math.max(document.documentElement.clientWidth, window.innerWidth || 0)); 
 
console.info(vmin(20)); 
 
console.info(vmax(20));

Ich benutzte this unglaubliche Frage in meinem Kabeljau es!

+0

Das ist genial - vielen Dank - Ich akzeptiere diese nette Lösung –

+0

Sie sind herzlich willkommen! –

1

Problem ist, dass JS nicht 40vh hat, berechnen, wie viel Pixel 40vh zuerst, es zu benutzen. Es wird Fehler beim Ausführen 1000 - 40vh

40vh bedeutet 40 % of viewport height. So window.innerHeight * 0.4 == 40vh

Auch ist es nicht so etwas wie wh, nur vh (% der Darstellungshöhe)

+0

Ausführung Soll ich die Pixel berechnen? Das könnte funktionieren, denke ich. –

+1

@TobiasAlt Ja, es würde funktionieren, einfach alles in Ganzzahlen/Gleitkommazahlen berechnen – Justinas

+0

Ihre Antwort wäre natürlich akzeptabel, aber oben ist eine vollständige Lösung - ich muss diese akzeptieren. Aber danke, ich stimme dir trotzdem zu. –

0

Try this:

function getViewport() { 

var viewPortWidth; 
var viewPortHeight; 

// the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight 
if (typeof window.innerWidth != 'undefined') { 
    viewPortWidth = window.innerWidth, 
    viewPortHeight = window.innerHeight 
} 

// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) 
else if (typeof document.documentElement != 'undefined' 
&& typeof document.documentElement.clientWidth != 
'undefined' && document.documentElement.clientWidth != 0) { 
    viewPortWidth = document.documentElement.clientWidth, 
    viewPortHeight = document.documentElement.clientHeight 
} 

// older versions of IE 
else { 
    viewPortWidth = document.getElementsByTagName('body')[0].clientWidth, 
    viewPortHeight = document.getElementsByTagName('body')[0].clientHeight 
} 
return [viewPortWidth, viewPortHeight]; 
} 

Referenz: http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/

+0

Danke - Yashar hat das Problem schneller gelöst. Tut mir leid Kumpel. –

+0

Keine Probleme. Ich habe es gerade gepostet, so dass Sie je nach Bedarf zwischen einem einzelnen Funktionsaufruf und mehreren Anrufen wählen können. Andererseits hilft es mir immer wieder, verschiedene Antworten nachzuschlagen. –

Verwandte Themen