Sitio web responsivo en iPhone-espacio en blanco no deseado en girar de paisaje a retrato


Estoy creando un sitio web responsivo, y acabo de notar un comportamiento extraño en mis páginas de contenido cuando se ve en el iPhone. Se escala correctamente cuando se carga en modo vertical, y también cuando se gira a horizontal. Sin embargo, cuando se gira de nuevo a retrato de la página parece cambiar a la izquierda, o no zoom correctamente, y hay una franja de espacio en blanco por el lado derecho. Este espacio en blanco también parece estar presente en la primera carga en retrato, ya que el usuario puede deslizar la página a la izquierda

En lugar de complicar más la explicación, aquí hay un enlace a una página de ejemplo donde se está produciendo este comportamiento. Echa un vistazo en un iPhone, luego echa un vistazo a la página de inicio que no tiene este problema.

Si necesitas ver algo más, solo yo sé:)

Author: ellawson, 2011-11-04

12 answers

Fija! El problema provenía de un div en particular: para encontrarlo, era un proceso de eliminar los diferentes elementos hasta que el problema desapareció.

Para arreglarlo necesitaba agregar overflow-x: hidden a ese div y lo ordena! Espero que esto sea útil para otros con un problema similar.

 47
Author: ellawson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-29 02:17:19

Tuve el mismo problema, lo arreglé estableciendo:

html, body { width:100%;  overflow:hidden; }
 43
Author: Eva Marie Rasmussen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-27 14:23:41

Este problema se produce cuando el ancho de cualquier división es mayor que el ancho de la pantalla del iPad.

En mi caso, algunas divisiones tenían un tamaño de 1000px, así que simplemente elegí width:auto y funciona. overflow-x:hidden también hace lo mismo, pero no es una forma preferida.

 10
Author: Navneet Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-24 13:38:38

No tengo un iphone para probar esto, pero me he encontrado con algo similar con sitios web que he creado en el pasado. En mi caso es porque había un error en safari móvil que se metió con la escala al ir de puerto a tierra.

El siguiente código lo arregló para mí (no puedo recordar de dónde lo obtuve en este momento)

if (navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i)) {
    var viewportmeta = document.querySelectorAll('meta[name="viewport"]')[0];
    if (viewportmeta) {
        viewportmeta.content = 'width=device-width, minimum-scale=1.0, maximum-scale=1.0';
        document.body.addEventListener('gesturestart', function() {
            viewportmeta.content = 'width=device-width, minimum-scale=0.25, maximum-scale=1.6';
        }, false);
    }
}
 4
Author: user1010892,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-22 15:09:27

Usar "overflow-x: hidden" resuelve parte del problema, pero atornilla el pergamino, actuando con comportamientos extraños (como dijo Jason).

A veces, la parte más difícil es descubrir qué está causando el problema. En mi caso, después de unas horas, si se encontró que el problema estaba en Bootstrap de Twitter:

Si estás usando Bootstrap de Twitter con zonas de "grupo de control" para tus formularios, el problema podría estar ahí. En mi caso resolví el problema con:

.control-group .controls {
     overflow-x: hidden
 }

Ahora el espacio en blanco en la derecha se había ido:)

 4
Author: Miguel M. Almeida,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-17 04:14:53

Me gustaría agregar a la solución de Navneet Kumar porque funcionó para mí. Cualquier etiqueta div con un estilo de ancho=100% no puede tener también relleno izquierdo o derecho. Los navegadores móviles (noté el problema en los dispositivos iPhone y Android) interpretan el div como que tiene un ancho superior al 100%, creando así el espacio adicional en el lado derecho. (Sabía esto con respecto a anchos fijos, pero no anchos porcentuales.) En su lugar, use width = auto junto con padding.

 0
Author: JohnH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-17 23:20:57

Sé que ha pasado un tiempo desde que se abrió este tema, pero me encontré con una situación similar y descubrí que era porque tenía un elemento con las siguientes propiedades right: -999999px; position: absolute; ocultas fuera de la pantalla.

Cambiar lo anterior a left: -999999px; position: absolute; resolvió el mismo problema que tenía el OP (pantalla blanca a la derecha y posibilidad de deslizar hacia la derecha).

 0
Author: fidev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-06 10:29:15

Estoy usando Bootstrap 3.3. Probé todas estas soluciones, y nada funcionó. Luego, cambié mi <div class="container"> a <div class="container-fluid"> en la sección con la que tenía problemas. Esto resolvió el problema.

 0
Author: Joe Rigney,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-12 05:38:55

Probé todo lo que se ha sugerido aquí, nada funciona. Luego he relizado que se conecta con la escala de la página. Entonces agregué <meta name="viewport" content="width=device-width, initial-scale=1.0"> al encabezado.php en la carpeta de mi tema principal y ' s problema solucionado.

 0
Author: NikLanf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-19 01:30:28

Parece que los resultados varían para diferentes circunstancias, pero a nivel de todo el sitio

Html, body { width: 100%; x-overflow: hidden;}

Parece haber funcionado para mí!

 0
Author: leebotton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-10 14:33:33

Fijo! Tenía un problema similar. Solucionado estableciendo el ancho a un ancho de dispositivo actual.

body, html {
  max-width: 100vw;
  margin: 0 auto;
  overflow-x: hidden;

}

 0
Author: Eimantas Šiaudinis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-27 13:25:29

RESUELTO ¡¡

Desde la instalación de protostar joomla plantilla 3.X y empezar a añadir contenido en el módulo K2 Me di cuenta de que scroll molesto con un espacio en blanco en el lado derecho, visible especialmente en iphones.

Se dio una respuesta parcial correcta para Eva Marie Rasmussen, agregando a la etiqueta body en la plantilla de archivo.css estos valores:

width: auto;
overflow-x: hidden;

Pero esta solución es solo parcial. Buscar clase div o etiqueta que está causando este problema y una vez detectado añadir a esa clase en el archivo templete.css los mismos valores:

width: auto;
overflow-x: hidden;

En mi caso agregue a la clase "span" estas dos líneas para finalmente verse así:

[Class * = "span"] {
float: left;
min-height: 1px;
margin-left: 20px;
width: auto;
overflow-x: hidden;

Y su funcionamiento ahora ¡¡

 -1
Author: Edgar HF,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-10 19:26:18