2010-10-19 10 views
10

Tengo algunas dificultades para que mi sitio web se muestre correctamente cuando se ve en el iPhone y el iPad. El sitio web (ni siquiera está cerca de terminarse) es www.lzkconcepts.com.espacio/huecos entre divs en el sitio web cuando se ve en iPhone/iPad

El sitio web se muestra correctamente cuando se ve en todos los navegadores de escritorio que he probado (safari, cromo, firefox, IE). Sin embargo, en el iPhone/iPad hay un pequeño espacio entre el contenido y el encabezado y pie de página. Estoy usando una imagen de fondo en el encabezado, el contenido y los separadores de pie de página para crear el contorno de la página. Además de las brechas entre los divs, la imagen de fondo del contenido a veces se "encoge" un poco, por lo que no se alinea con el encabezado y el pie de página en el lado derecho de la pantalla. Sin embargo, si hago un acercamiento, todo se alinea perfectamente. Aquí una muestra tomada del iPhone ...

http://s1139.photobucket.com/albums/n545/lhkimbrough/?action=view&current=7198e49b.jpg&evt=user_media_share

mira de cerca el lado derecho debajo de la barra de navegación azul.

Aquí está el CSS (Sé que es muy duro, yo sólo estoy aprendiendo)

@charset "UTF-8"; 
body { 
margin: 0; 
padding: 0; 
color: #000; 
font-family: Arial, Helvetica, sans-serif; 
font-size: 100%; 
line-height: 1.4; 
background-color: #CCC; 
} 
.TableAppName { 
color: #007EB4; 
} 

/* ~~ Element/tag selectors ~~ */ 
ul, ol, dl { /* Due to variations between browsers, it's best practices to zero padding and margin on lists. For consistency, you can either specify the amounts you want here, or on the list items (LI, DT, DD) they contain. Remember that what you do here will cascade to the .nav list unless you write a more specific selector. */ 
padding: 0; 
margin: 0; 
} 
h1, h2, h3, h4, h5, h6, p { 
margin-top: 0; /* removing the top margin gets around an issue where margins can escape from their containing div. The remaining bottom margin will hold it away from any elements that follow. */ 
padding-right: 15px; 
padding-left: 15px; /* adding the padding to the sides of the elements within the divs, instead of the divs themselves, gets rid of any box model math. A nested div with side padding can also be used as an alternate method. */ 
} 
a img { /* this selector removes the default blue border displayed in some browsers around an image when it is surrounded by a link */ 
border: none; 
} 
/* ~~ Styling for your site's links must remain in this order - including the group of selectors that create the hover effect. ~~ */ 
a:link { 
color: #42413C; 
text-decoration: underline; /* unless you style your links to look extremely unique, it's best to provide underlines for quick visual identification */ 
} 
a:visited { 
color: #6E6C64; 
text-decoration: underline; 
} 
#h-navbar { 
font-size: 95%; 
background-color: #CCC; 
background-image: url(images/navBarBlue.png); 
background-repeat: no-repeat; 
text-align: right; 
padding-right: 20px; 
color: #FFF; 
height: 39px; 
padding-top: 6px; 
} 
a:hover, a:active, a:focus { /* this group of selectors will give a keyboard navigator the same hover experience as the person using a mouse. */ 
text-decoration: none; 
} 

/* ~~ this fixed width container surrounds the other divs ~~ */ 
.container { 
width: 874px; /* the auto value on the sides, coupled with the width, centers the layout */ 
margin-top: 0; 
margin-right: auto; 
margin-bottom: 0; 
margin-left: auto; 
background-color: #CCC; 
} 

/* ~~ the header is not given a width. It will extend the full width of your layout. It contains an image placeholder that should be replaced with your own linked logo ~~ */ 
.header { 
background-color: #CCC; 
background-image: url(images/BannerFadedBlueAndOrangeText.png); 
background-repeat: no-repeat; 
height: 165px; 
} 

/* ~~ This is the layout information. ~~ 

1) Padding is only placed on the top and/or bottom of the div. The elements within this div have padding on their sides. This saves you from any "box model math". Keep in mind, if you add any side padding or border to the div itself, it will be added to the width you define to create the *total* width. You may also choose to remove the padding on the element in the div and place a second div within it with no width and the padding necessary for your design. 

*/ 

.content { 
background-color: #CCC; 
background-image: url(images/contentFadedDark4.png); 
background-repeat: repeat-y; 
padding-left: 15px; 
} 
.contentBottom { 
padding: 0px; 
margin: 0px; 
} 

/* ~~ The footer ~~ */ 
.footer { 
background-color: #CCC; 
background-image: url(images/FooterFadedDark.png); 
background-repeat: no-repeat; 
text-align: right; 
font-size: 80%; 
} 

/* ~~ miscellaneous float/clear classes ~~ */ 
.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */ 
float: right; 
margin-left: 8px; 
} 
.fltlft { /* this class can be used to float an element left in your page. The floated element must precede the element it should be next to on the page. */ 
float: left; 
margin-right: 8px; 
} 
.clearfloat { /* this class can be placed on a <br /> or empty div as the final element following the last floated div (within the #container) if the #footer is removed or taken out of the #container */ 
clear:both; 
height:0; 
font-size: 1px; 
line-height: 0px; 
} 
#h-navbar a, #h-navbar a:visited { 
text-decoration: none; 
color: #FFF; 
} 
#h-navbar a:hover { 
color: #ea6828; 
} 
.footer p { 
color: #0075A7; 
} 
.content h1 { 
color: #0074A9; 
font-weight: normal; 
font-size: 200%; 
font-style: normal; 
padding-top: 15px; 
padding-left: 23px; 
} 
.graytext { 
color: #333; 
} 

Y aquí está el código HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/LZKConcepts_Template.dwt" codeOutsideHTMLIsLocked="false" --> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<!-- InstanceBeginEditable name="doctitle" --> 
<title>LZK Concepts</title> 
<!-- InstanceEndEditable --> 
<link href="LZKConcepts_styles.css" rel="stylesheet" type="text/css" /> 
<!-- InstanceBeginEditable name="head" --> 
<!-- InstanceEndEditable --> 
</head> 

<body> 

<div class="container"> 
    <div class="header"><!-- end .header --></div> 
    <div id="h-navbar"><a href="index.html"> Home </a> | <a href="#"> QuickGrader </a> | <a href="#"> Wish On A Star </a> | <a href="AboutUs.html"> About Us </a> | <a href="#"> Contact Us </a></div> 
    <!-- InstanceBeginEditable name="MainContent" --> 
    <div class="content"> 
    <h1> 
     <!-- end .content --> 
    iPhone Apps</h1> 
    <table width="844" border="0"> 
     <tr> 
     <td width="160" rowspan="2" valign="top"><a href="#"><img src="images/QuickGraderIconReflected140.png" alt="QuickGrader" width="120" height="154" hspace="20" /></a></td> 
     <td width="482" class="TableAppName">QuickGrader</td> 
     <td width="188">&nbsp;</td> 
     </tr> 
     <tr> 
     <td height="127" valign="top" class="graytext">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris neque quam, facilisis sed iaculis tempor, iaculis vitae purus. Mauris eros lacus, commodo ut feugiat vel, sollicitudin et elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur urna diam, iaculis ut commodo molestie, congue non lacus. </td> 
     <td align="right" valign="top"><br /> 
     <a href="http://itunes.apple.com/app/quickgrader/id392532471?mt=8" target="_new"><img src="images/App_Store_Badge.png" alt="AppStore" width="155" height="54" hspace="18" vspace="0" align="right" /></a></td> 
     </tr> 
    </table> 
    <p>&nbsp;</p> 
    <table width="844" border="0"> 
     <tr> 
     <td width="160" rowspan="2" valign="top"><a href="#"><img src="images/Wish On A Star Reflected.png" alt="QuickGrader" width="120" height="154" hspace="20" /></a></td> 
     <td width="482" class="TableAppName">Wish On A Star</td> 
     <td width="188">&nbsp;</td> 
     </tr> 
     <tr> 
     <td height="130" valign="top">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris neque quam, facilisis sed iaculis tempor, iaculis vitae purus. Mauris eros lacus, commodo ut feugiat vel, sollicitudin et elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur urna diam, iaculis ut commodo molestie, congue non lacus. </td> 
     <td align="right" valign="top"><br /> 
      <a href="http://itunes.apple.com/app/wish-on-a-star/id366753945?mt=8" target="_blank"><img src="images/App_Store_Badge.png" alt="AppStore" width="155" height="54" hspace="18" align="right" /></a></td> 
     </tr> 
    </table> 
    <p>&nbsp;</p> 
    <table width="844" border="0"> 
     <tr> 
     <td width="160" rowspan="2" valign="top"><a href="#"><img src="images/Wish On A Star Free Reflected.png" alt="QuickGrader" width="120" height="154" hspace="20" /></a></td> 
     <td width="482" class="TableAppName">Wish On A Star Free</td> 
     <td width="188">&nbsp;</td> 
     </tr> 
     <tr> 
     <td height="130" valign="top">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris neque quam, facilisis sed iaculis tempor, iaculis vitae purus. Mauris eros lacus, commodo ut feugiat vel, sollicitudin et elit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur urna diam, iaculis ut commodo molestie, congue non lacus. </td> 
     <td align="right" valign="top"><br /> 
      <a href="http://itunes.apple.com/app/wish-on-a-star-free/id388860624?mt=8"><img src="images/App_Store_Badge.png" alt="AppStore" width="155" height="54" hspace="18" align="right" /></a></td> 
     </tr> 
    </table> 
    </div> 
    <!-- InstanceEndEditable --> 
    <div class="footer"> 
    <p><br /> 
<br /> 
     <br /> 
    Copyright © 2010, LZK Concepts. All rights reserved.</p> 
</div> 
    <!-- end .container --></div> 
</body> 
<!-- InstanceEnd --></html> 

¿Alguien tiene una idea de por qué el iPhone y el iPad están prestando la página como esta?

+1

+1 para esta pregunta: he visto esto no solo en iPad, sino en otros navegadores que hacen zoom de página completa. Pasó a buscar en esto después de ver el efecto en la página principal del sitio de ING Bank en mi iPad. –

Respuesta

13

En un iPad, cuando un sitio web se visualiza en una escala inferior al 100%, a veces aparecen algunos artefactos. Uno es particularmente visible: una línea de 1 píxel entre divs, al igual que en su sitio, debajo del menú.

La solución que encontré es agregar un "margen: -1px" entre los divs. Los fondos de las divisiones se superponen con 1 píxel, y si el corte se realiza en consecuencia, es invisible para un navegador clásico y corrige el problema en el iPad.

+4

Es una pena que usemos todos estos hacks para navegadores :-(los estándares deben ser respetados mucho más. – Bojangles

+0

¡Estoy completamente de acuerdo contigo! Pero por otro lado, no debe ser tan simple escalar una página web sin obtener algunas cosas extrañas de vez en cuando ... – plang

+0

Gran solución de plang, que también resolvió el problema para mí. Me pregunto si hay otra forma menos "hack-y" de evitar los "artefactos de escalado" – pvandenberk

3

Uso:

meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" 

para cuando un sitio web se visualiza en una tableta u otro dispositivo. Eso debería eliminar la diferencia de píxeles que ves. Los sitios deben diseñarse semánticamente escalables en estos días para obtener el máximo acceso a dispositivos cruzados.

En cuanto a mí, normalmente construyo un detector de dispositivo php si realmente necesita ser un trabajo de alrededor.

Cuestiones relacionadas