2010-10-19 10 views
10

Mam problemy z poprawnym wyświetlaniem witryny podczas przeglądania na iPhonie i iPadzie. Strona internetowa (nawet nie dokończona) to www.lzkconcepts.com.space/odstępy między elementami div na stronie internetowej podczas wyświetlania na iPhonie/iPadzie

Strona wyświetla się poprawnie podczas przeglądania w każdej wypróbowanej przeze mnie przeglądarce komputerowej (safari, chrome, firefox, IE), jednak na iPhonie/iPadzie znajduje się malutki odstęp między "div" treści i nagłówka i stopka. Używam obrazu tła w nagłówku, treści i stopkach div, aby utworzyć obrys strony. Oprócz odstępów między elementami div, obraz tła treści jest czasami nieco "skracany", więc nie jest wyrównany z nagłówkiem i stopką po prawej stronie ekranu. Jeśli jednak powiększę wszystko, wszystko układa się idealnie. Oto zrzut ekranu pochodzi z iPhone ...

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

przyjrzeć się bliżej prawej strony poniżej niebieskiego paska nawigacyjnego.

Oto CSS (wiem, że to bardzo szorstki, Właśnie uczę)

@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; 
} 

A oto 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> 

Czy ktoś ma pomysł dlaczego iPhone i iPad są renderowania taka strona?

+1

+1 za to pytanie - widziałem to nie tylko na iPadzie, ale w innych przeglądarkach z pełnym zoomem strony. Zdarzyło się to po wyszukaniu po zobaczeniu efektu na stronie głównej ING Bank na moim iPadzie. –

Odpowiedz

13

Na iPadzie, gdy witryna jest wyświetlana w skali poniżej 100%, niektóre artefakty pojawiają się czasami. Jeden jest szczególnie widoczny: linie 1-pikselowe między elementami div, tak jak w Twojej witrynie, pod menu.

Rozwiązaniem, które znalazłem, jest dodanie "marginesu: -1px" między elementami div. Tła div pokrywają się z 1 pikselem, a jeśli cięcie jest wykonywane odpowiednio, jest niewidoczne dla klasycznej przeglądarki i rozwiązuje problem na iPadzie.

+4

Szkoda, że ​​musimy używać tych wszystkich hacków w przeglądarkach :-(standardy muszą być szanowane o wiele więcej – Bojangles

+0

Całkowicie się z Tobą zgadzam! Ale z drugiej strony, nie może być tak łatwo skalować stronę bez uzyskiwania kilka dziwnych rzeczy od czasu do czasu ... – plang

+0

Świetne obejście z Plang, które rozwiązało problem również dla mnie! Zastanawiam się, czy istnieje inny, mniej "hack-y" sposób, aby uniknąć "skalowania artefaktów" – pvandenberk

3

Zastosowanie:

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

, gdy strona jest wyświetlana na tablecie lub innym urządzeniu. To powinno pozbyć się widocznej różnicy pikseli. Witryny powinny być zaprojektowane do skalowania semantycznego w tych dniach, aby uzyskać maksymalny dostęp do wielu urządzeń.

Co do mnie, zwykle buduję wykrywacz urządzeń php, jeśli absolutnie konieczne jest obejście.

Powiązane problemy