2012-03-17 16 views
5

Oto przykład http://jsbin.com/oqisuv/Jak naprawić margines 1px w Google Chrome?

CSS

body { 
    background:#e7ebf2 url(http://i.imgur.com/R2VB6.png) center repeat-y; 
} 
.menu { 
    width:989px; 
    margin:auto; 
    height:100px; 
    background:#666666; 
    line-height:100px; 
    text-align:center; 
    color:#fff; 
} 

HTML

<body> 
<div class="menu">Hello</div> 
</body> 

Jeśli wyświetlić powyższy przykład na Google Chrome widać .menu wygląda mają margin-left:-1px lub margin-right:1px.

Na Firefox & IE wygląda świetnie. Jak mogę to naprawić?

+0

oto obraz, powyżej jest firefox, poniżej jest chrom. Nie widzę żadnej różnicy http://i.imgur.com/OSu9D.png –

+0

@AndreiS tutaj jest mój Chrome .. http://i.imgur.com/W1Mhj.png mogę wiedzieć, jakiego systemu operacyjnego i wersji Chrome używasz ? –

+0

Windows 7, chrome 17 –

Odpowiedz

3
@media screen and (-webkit-min-device-pixel-ratio:0) { 

html { 
    margin-left: 1px; 
} 

} 

Background center with chrome (bug)

body { 
background:#e7ebf2 url(http://i.imgur.com/R2VB6.png) 50% 0 repeat-y; 
} 

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    body { 
     background-position: 50.001% 0; 
    } 
} 

http://philfreo.com/blog/fixing-safaris-1px-background-image-centering-problem/

+0

Pierwszy fragment tworzy spację między pełnowymiarowym tłem a pełnowymiarowymi elementami. Drugi fragment działa tylko w przypadku szerokości okien większych niż ~ 1660px. Naprawdę muszę wyrównać duży półprzezroczysty obraz tła elementu A z mniejszym elementem B, który ma półprzezroczysty kolor tła.Gdyby oba były w 100% nieprzezroczyste, po prostu zwiększyłem nieco szerokość mniejszego, tak aby pokryło wszelkie "niewłaściwie umieszczone" piksele. Plz plz plz =) – XedinUnknown

0

Chrome & firefox wygenerowana inaczej to lepiej, jeśli chcesz prowadzić takie same we wszystkich przeglądarce szerokość zawsze daje w NAWET wartości nie ODD. Tak, napisać tak:

.menu { 
    width:990px; 
} 

Sprawdź to http://jsbin.com/oqisuv/2

AKTUALIZACJA Jeśli chcesz to dzieło doskonałe w Chrome jako można użyć to:

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    .menu { 
    width:990px; 
} 

Sprawdź to http://jsbin.com/oqisuv/5/

+0

Zostanie on naprawiony na webkicie, a nie dla IE lub Firefox –

+0

sprawdź mój przykład to działa we wszystkich przeglądarkach. – sandeep

+0

Na FF lub IE zobaczysz 'margin-left: -1px'. Cień zniknął po lewej. –

0

Ustaw margines ciała na 0 ... Spróbuj tego css:

body { 
background:#e7ebf2 url(http://i.imgur.com/R2VB6.png) center repeat-y; 
margin: 0; 
} 
.menu { 
width:990px; 
height:100px; 
margin: 0 auto; 
background:#666666; 
line-height:100px; 
text-align:center; 
color:#fff; 
} 
0

Większość z różnymi przeglądarkami i przyszłościowe rozwiązaniem jest dołączyć tło na środku samego bloku (lub na jego środku rodzica, który ma wypełnienie poziome, aby tło było widoczne na zewnątrz jego dziecka).

Próby uzyskania idealnego dopasowania pikseli tła i bloku niezależnie od siebie (szczególnie w przypadku hacków dla określonych przeglądarek) są ślepą uliczką.

1

podobne do odpowiedzi rudsy, ale ten wydaje się lepiej pracować:

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    body { 
     background-position: 49.999% 0; 
    } 
} 
Powiązane problemy