Je recherche un extrait de code pour obtenir la hauteur de la zone visible dans une fenêtre de navigateur.
J'ai eu ce code, cependant il est un peu buggé comme si le corps ne dépasse pas la hauteur de la fenêtre alors il revient court.
document.body.clientHeight;
J'ai essayé deux ou trois autres choses, mais elles renvoient soit NaN, soit la même hauteur que ci-dessus.
Est-ce que quelqu'un sait comment obtenir la hauteur réelle de la fenêtre de navigation?
Vous voudrez quelque chose comme ceci, tiré de http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
function alertSize() {
var myWidth = 0, myHeight = 0;
if( typeof( window.innerWidth ) == 'number' ) {
//Non-IE
myWidth = window.innerWidth;
myHeight = window.innerHeight;
} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
//IE 6+ in 'standards compliant mode'
myWidth = document.documentElement.clientWidth;
myHeight = document.documentElement.clientHeight;
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
//IE 4 compatible
myWidth = document.body.clientWidth;
myHeight = document.body.clientHeight;
}
window.alert( 'Width = ' + myWidth );
window.alert( 'Height = ' + myHeight );
}
Donc, c'est innerHeight
pour les navigateurs modernes, documentElement.clientHeight
pour IE, body.clientHeight
pour obsolètes/obsolètes.
Essayez d'utiliser jquery:
window_size = $(window).height();
Vous pouvez utiliser le window.innerHeight
La façon dont j'aime le faire est comme cela avec une affectation ternaire.
var width = isNaN(window.innerWidth) ? window.clientWidth : window.innerWidth;
var height = isNaN(window.innerHeight) ? window.clientHeight : window.innerHeight;
Je pourrais faire remarquer que, si vous utilisez ceci dans le contexte global, vous pouvez utiliser window.height et window.width.
Fonctionne sur IE et d'autres navigateurs pour autant que je sache (je l'ai seulement testé sur IE11).
Super propre et, si je ne me trompe pas, efficace.
Il existe un moyen plus simple que tout un tas de déclarations if. Utilisez l'opérateur ou (||).
function getBrowserDimensions() {
return {
width: (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth),
height: (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight)
};
}
var browser_dims = getBrowserDimensions();
alert("Width = " + browser_dims.width + "\nHeight = " + browser_dims.height);
Cela devrait fonctionner aussi. Commencez par créer un élément absolu <div>
avec une position absolue et une hauteur de 100%:
<div id="h" style="position:absolute;top:0;bottom:0;"></div>
Ensuite, obtenez la hauteur de la fenêtre à partir de cet élément via offsetHeight
var winHeight = document.getElementById('h').offsetHeight;
Mettre à jour:
function getBrowserSize() {
var div = document.createElement('div');
div.style.position = 'absolute';
div.style.top = 0;
div.style.left = 0;
div.style.width = '100%';
div.style.height = '100%';
document.documentElement.appendChild(div);
var results = {
width: div.offsetWidth,
height: div.offsetHeight
};
div.parentNode.removeChild(div); // remove the `div`
return results;
}
console.log(getBrowserSize());
Avec JQuery, vous pouvez essayer cette $(window).innerHeight()
(fonctionne pour moi sur Chrome, FF et IE). Avec bootstrap modal, j'ai utilisé quelque chose comme ce qui suit:
$('#YourModal').on('show.bs.modal', function () {
$('.modal-body').css('height', $(window).innerHeight() * 0.7);
});
Je préfère la façon dont je viens de comprendre ... No JS ... 100% HTML & CSS:
(Le centrera parfaitement au milieu, quelle que soit la taille du contenu.
FICHIER HTML
<html><head>
<link href="jane.css" rel="stylesheet" />
</head>
<body>
<table id="container">
<tr>
<td id="centerpiece">
123
</td></tr></table>
</body></html>
FICHIER CSS
#container{
border:0;
width:100%;
height:100%;
}
#centerpiece{
vertical-align:middle;
text-align:center;
}
pour centrer les images/divs détenues dans le td, vous pouvez essayer margin: auto; et spécifiez une dimension div à la place. -Bien entendu, en disant que ... la propriété 'text-align' alignera bien plus qu'un simple élément de texte.
var winWidth = window.screen.width;
var winHeight = window.screen.height;
document.write(winWidth, winHeight);
Version JavaScript au cas où jQuery ne serait pas une option.
window.screen.availHeight