web-dev-qa-db-fra.com

Quelle est la superficie utilisable dans iPad Safari

Je développe une application web pour iPad, à exécuter dans Safari. Je n'ai pas encore d'iPad pour tester. Est-ce que quelqu'un connaît la taille d'écran utilisable - après que tout espace pour les contrôles safari/ipad soit occupé?

27
Mr. Flibble

Vous devez simplement suivre TN2262 et écrire du code invariant par dimension.

Si vous avez besoin d'une taille de pixel logique, document.body.client[Width|Height] est toujours 980 × 1208.


En termes de pixels absolus que vous pouvez utiliser, la barre de navigation de Mobile Safari occupe environ 78 pixels, donc en orientation portrait, elle est de 768 × 946 et en paysage, elle est de 1024 × 690.

Il peut également y avoir un clavier (308 px de hauteur en mode portrait, 397 px en paysage).

Mise à jour: Les nombres absolus ci-dessus sont corrects uniquement pour iOS 4.x ou avant. Dans iOS 5.x Apple a introduit la barre d'onglets qui augmente la hauteur de la barre de navigation + barre d'état à 96 pixels. En fait, même avant iOS 5.x, la présence de la barre de signets peut affecter la fenêtre également.

42
kennytm

Si vous voulez connaître les aspects de l'écran, vous pouvez vérifier iPad Peek et charger un site comme NYTIMES . cela donne les dimensions d'écran utilisables exactes pour l'iPad.

J'espère que cela t'aides

4
dkris

Donc - sur mon iPad (iPad1, iOS 5.1.1), j'ai obtenu des chiffres légèrement différents de ceux ci-dessus. Probablement parce que les barres d'onglets et de signets s'affichent.
Mes valeurs:

 portrait: 768 x 900 
 paysage: 1024 x 644 

J'ai donc écrit un bookmarklet javascript pour obtenir un résultat positif. Vous pouvez envoyer ceci par e-mail à vous-même, passer à "about: blank" dans safari, créer un signet, le modifier et couper/coller ce code par e-mail :)

Lorsque vous obtenez le bookmarklet en cours, redimensionnez le div jusqu'à ce qu'il corresponde à la fenêtre et au tada ..

<pre><code>
javascript:( function(){
  "use strict";
  var bmIdVal = "ios_screen_res_test_bookmarklet";
  var bmDivSize = {
    w : 320,
    h : 240 
  };

  var vpMeta1 = document.createElement('meta');
  vpMeta1.setAttribute("name","viewport");
  vpMeta1.setAttribute("content",'initial-scale=1.0, user-scalable=no');
  document.head.appendChild(vpMeta1);

  function updateStatus(){
    statusDiv.innerHTML = "div is " + bmDivSize.w + ',' + bmDivSize.h + 
      " doc body says: " + document.body.clientWidth + "," + 
      document.body.clientHeight;
  }

  function resizeBmDiv(wPx,hPx){
    bmDivSize.w += wPx;
    bmDivSize.h += hPx;
    bmDiv.style.width=bmDivSize.w + "px";
    bmDiv.style.height=bmDivSize.h + "px";
    updateStatus();
  }

  var prevBmDiv = document.getElementById(bmIdVal); 
  if( prevBmDiv != null){
    document.body.removeChild(prevBmDiv);
  }
  var bmDiv = document.createElement("div");
  bmDiv.setAttribute("id",bmIdVal);
  bmDiv.style.cssText = 
    "position:absolute;left:0px;top:0px;background-color: #0066FF";
  bmDiv.style.width=bmDivSize.w + "px";
  bmDiv.style.height=bmDivSize.h + "px";

  var sizerB_w1 = document.createElement("button");
  sizerB_w1.style.cssText = "width:64px;height:64px";
  sizerB_w1.innerHTML="w+1";
  sizerB_w1.onclick = function(evt){
    resizeBmDiv(1,0);
  };
  var sizerB_w100 = document.createElement("button");
  sizerB_w100.style.cssText = "width:64px;height:64px";
  sizerB_w100.innerHTML="w+100";
  sizerB_w100.onclick = function(evt){
    resizeBmDiv(100,0);
  };
  var sizerB_h1 = document.createElement("button");
  sizerB_h1.style.cssText = "width:64px;height:64px";
  sizerB_h1.innerHTML="h+1";
  sizerB_h1.onclick = function(evt){
    resizeBmDiv(0,1);
  };
  var sizerB_h100 = document.createElement("button");
  sizerB_h100.style.cssText = "width:64px;height:64px";
  sizerB_h100.innerHTML="h+100";
  sizerB_h100.onclick = function(evt){
    resizeBmDiv(0,100);
  };

  var sizerDiv = document.createElement('div');
  sizerDiv.appendChild(sizerB_w1);
  sizerDiv.appendChild(sizerB_w100);
  sizerDiv.appendChild(sizerB_h1);
  sizerDiv.appendChild(sizerB_h100);

  var sizerB_wm1 = document.createElement("button");
  sizerB_wm1.style.cssText = "width:64px;height:64px";
  sizerB_wm1.innerHTML="w-1";
  sizerB_wm1.onclick = function(evt){
    resizeBmDiv(-1,0);
  };
  var sizerB_wm100 = document.createElement("button");
  sizerB_wm100.style.cssText = "width:64px;height:64px";
  sizerB_wm100.innerHTML="w-100";
  sizerB_wm100.onclick = function(evt){
    resizeBmDiv(-100,0);
  };
  var sizerB_hm1 = document.createElement("button");
  sizerB_hm1.style.cssText = "width:64px;height:64px";
  sizerB_hm1.innerHTML="h-1";
  sizerB_hm1.onclick = function(evt){
    resizeBmDiv(0,-1);
  };
  var sizerB_hm100 = document.createElement("button");
  sizerB_hm100.style.cssText = "width:64px;height:64px";
  sizerB_hm100.innerHTML="h-100";
  sizerB_hm100.onclick = function(evt){
    resizeBmDiv(0,-100);
  };

  var sizerMDiv = document.createElement('div');
  sizerMDiv.appendChild(sizerB_wm1);
  sizerMDiv.appendChild(sizerB_wm100);
  sizerMDiv.appendChild(sizerB_hm1);
  sizerMDiv.appendChild(sizerB_hm100);

  var statusDiv = document.createElement('div');
  statusDiv.style.cssText = "color:white;";

  bmDiv.appendChild(statusDiv);
  bmDiv.appendChild(sizerDiv);
  bmDiv.appendChild(sizerMDiv);
  document.body.appendChild(bmDiv);
  updateStatus();  
})();
</code></pre>
4
Andy Idsinga

Je n'ai pas encore commencé à coder pour iPad, mais je les ai obtenus par googler. Pourrait s'avérer utile
https://www.nczonline.net/blog/2010/04/06/ipad-web-development-tips/
https://developer.Apple.com/library/content/technotes/tn2010/tn2262/_index.html

2
zapping

J'ai modifié la réponse d'Andy Idsinga, créant un document HTML que vous pouvez télécharger n'importe où et exécuter sur vos appareils. J'ai corrigé la métabalise de la fenêtre d'affichage et défini le rechargement automatique lors de la rotation de l'écran. J'ai également ajouté des boutons w + 10, w-10, h + 10, h-10. Veuillez également voter Andy si vous aimez cela, car il était l'auteur original!

<html><head>
<title>Screen resolution test (usable area)</title>
</head><body>
<script type="text/javascript">
"use strict";
var bmIdVal = "ios_screen_res_test_bookmarklet";
var bmDivSize = {
    w : 320,
    h : 240 
};

var vpMeta1 = document.createElement('meta');
vpMeta1.setAttribute("name","viewport");
vpMeta1.setAttribute("content",'initial-scale=1.0, maximum-scale=1.0');
document.head.appendChild(vpMeta1);

function updateStatus(){
statusDiv.innerHTML = "div is " + bmDivSize.w + ',' + bmDivSize.h + 
    " doc body says: " + document.body.clientWidth + "," + 
    document.body.clientHeight;
}

function resizeBmDiv(wPx,hPx){
    bmDivSize.w += wPx;
    bmDivSize.h += hPx;
    bmDiv.style.width=bmDivSize.w + "px";
    bmDiv.style.height=bmDivSize.h + "px";
    updateStatus();
}

var prevBmDiv = document.getElementById(bmIdVal); 
if( prevBmDiv != null){
    document.body.removeChild(prevBmDiv);
}
var bmDiv = document.createElement("div");
bmDiv.setAttribute("id",bmIdVal);
bmDiv.style.cssText = "position:absolute;left:0px;top:0px;background-color: #0066FF";
bmDiv.style.width=bmDivSize.w + "px";
bmDiv.style.height=bmDivSize.h + "px";

var sizerB_w1 = document.createElement("button");
sizerB_w1.style.cssText = "width:64px;height:64px";
sizerB_w1.innerHTML="w+1";
sizerB_w1.onclick = function(evt){
    resizeBmDiv(1,0);
};
var sizerB_w100 = document.createElement("button");
sizerB_w100.style.cssText = "width:64px;height:64px";
sizerB_w100.innerHTML="w+100";
sizerB_w100.onclick = function(evt){
    resizeBmDiv(100,0);
};
var sizerB_h1 = document.createElement("button");
sizerB_h1.style.cssText = "width:64px;height:64px";
sizerB_h1.innerHTML="h+1";
sizerB_h1.onclick = function(evt){
    resizeBmDiv(0,1);
};
var sizerB_h100 = document.createElement("button");
sizerB_h100.style.cssText = "width:64px;height:64px";
sizerB_h100.innerHTML="h+100";
sizerB_h100.onclick = function(evt){
    resizeBmDiv(0,100);
};

var sizerDiv = document.createElement('div');
sizerDiv.appendChild(sizerB_w1);
sizerDiv.appendChild(sizerB_w100);
sizerDiv.appendChild(sizerB_h1);
sizerDiv.appendChild(sizerB_h100);

var sizerB_wm1 = document.createElement("button");
sizerB_wm1.style.cssText = "width:64px;height:64px";
sizerB_wm1.innerHTML="w-1";
sizerB_wm1.onclick = function(evt){
    resizeBmDiv(-1,0);
};
var sizerB_wm100 = document.createElement("button");
sizerB_wm100.style.cssText = "width:64px;height:64px";
sizerB_wm100.innerHTML="w-100";
sizerB_wm100.onclick = function(evt){
    resizeBmDiv(-100,0);
};
var sizerB_hm1 = document.createElement("button");
sizerB_hm1.style.cssText = "width:64px;height:64px";
sizerB_hm1.innerHTML="h-1";
sizerB_hm1.onclick = function(evt){
    resizeBmDiv(0,-1);
};
var sizerB_hm100 = document.createElement("button");
sizerB_hm100.style.cssText = "width:64px;height:64px";
sizerB_hm100.innerHTML="h-100";
sizerB_hm100.onclick = function(evt){
    resizeBmDiv(0,-100);
};

var sizerMDiv = document.createElement('div');
sizerMDiv.appendChild(sizerB_wm1);
sizerMDiv.appendChild(sizerB_wm100);
sizerMDiv.appendChild(sizerB_hm1);
sizerMDiv.appendChild(sizerB_hm100);

var sizerC_w10 = document.createElement("button");
sizerC_w10.style.cssText = "width:64px;height:64px";
sizerC_w10.innerHTML="w+10";
sizerC_w10.onclick = function(evt){
    resizeBmDiv(10,0);
};
var sizerC_h10 = document.createElement("button");
sizerC_h10.style.cssText = "width:64px;height:64px";
sizerC_h10.innerHTML="h+10";
sizerC_h10.onclick = function(evt){
    resizeBmDiv(0,10);
};
var sizerC_Mw10 = document.createElement("button");
sizerC_Mw10.style.cssText = "width:64px;height:64px";
sizerC_Mw10.innerHTML="w-10";
sizerC_Mw10.onclick = function(evt){
    resizeBmDiv(-10,0);
};
var sizerC_Mh10 = document.createElement("button");
sizerC_Mh10.style.cssText = "width:64px;height:64px";
sizerC_Mh10.innerHTML="h-10";
sizerC_Mh10.onclick = function(evt){
    resizeBmDiv(0,-10);
};

var sizerCDiv = document.createElement('div');
sizerCDiv.appendChild(sizerC_w10);
sizerCDiv.appendChild(sizerC_h10);
sizerCDiv.appendChild(sizerC_Mw10);
sizerCDiv.appendChild(sizerC_Mh10);

var statusDiv = document.createElement('div');
statusDiv.style.cssText = "color:white;";

bmDiv.appendChild(statusDiv);
bmDiv.appendChild(sizerDiv);
bmDiv.appendChild(sizerMDiv);
bmDiv.appendChild(sizerCDiv);
document.body.appendChild(bmDiv);
updateStatus();

window.onresize = function(event) {
    document.location.reload(true);
}
</script>
</body></html>
1
lucaferrario

Les réponses ci-dessus sont fausses. La taille réelle de l'en-tête de l'ipad est de 64 pixels. Par conséquent, dans l'orientation portrait de l'ipad est = 768X960 et l'orientation paysage est = 1024x704 Vous pouvez également vérifier la dimension totale de l'ipad dans les orientations portrait et paysage, y compris la hauteur de l'en-tête comme 64px, puis il affichera l'orientation portrait et paysage comme 768x1024

1
Deepak Rawat

La réponse "correcte" ci-dessus est en fait fausse car elle ne prend pas en compte la barre d'état noire en haut de l'écran de l'ipad indiquant l'heure, la durée de vie de la batterie, etc. Il s'agit d'un écran supplémentaire de 18 pixels qui est utilisé.

Ainsi, la zone d'écran utilisable dans Safari est en fait: paysage: 1024x672 portrait: 768x928

0
iamalismith

Cochez simplement http://benfrain.com/downloads/respond.html pour afficher les dimensions actuelles de la fenêtre.

Ou encore mieux utilisez ce bookmarklet: http://lab.maltewassermann.com/viewport-resizer/ Cela montrera les dimensions actuelles pour toutes sortes d'appareils (peut également être personnalisé). Peut être testé avec tous les sites Web.

0
Jan