2015-04-09 15 views
5

Mam wyśrodkowany formularz na mojej stronie pozycjonowany przy użyciu wartości górnych i lewych oraz transformacji css3.CSS3 Transformacja rozmyte granice

<div class="middle"> 
    <h1>This is blurry, or should be.</h1> 
</div> 

.middle { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    min-width: 390px; 

    -webkit-transform: translate(-50%, -50%); 
    transform: translate(-50%, -50%); 

    /** backface-visibility: hidden; **/ 
} 

h1 { 
    padding-bottom: 5px; 
    border-bottom: 3px solid blue 
} 

Wskazówka tylna widoczności. Po ustawieniu na ukryty wszystkie problemy są rozwiązywane za pomocą chrome 42. Nie powoduje to rozmycia. Jednak dla innych użytkowników, którzy używają tej samej wersji chrome, staje się ona nieostra.

Oto jak to wygląda bez BV: http://jsfiddle.net/mzws2fnp/

enter image description here

Dla ciebie może to być rozmyte, dla innych może nie.

Oto jak to wygląda z BV: http://jsfiddle.net/mzws2fnp/2/

enter image description here

Dla niektórych osób Uzasadnienie Zob granica rozmyte jednak nie mam. Wiem, że widoczność z tyłu: ukryty ma to naprawić, i robi to dla mnie, po prostu nie dla innych używających tej samej przeglądarki co I. Dziwne.

+0

Jaki efekt szukasz, jakie jest pożądane zachowanie? – apaul

+0

Czy to nie jest niewyraźne dla wszystkich? – davidxd33

+0

Prawdopodobny duplikat czcionki [rozmazuje się po przetłumaczeniu w Chrome] (http://stackoverflow.com/questions/32034574/font-looks-blurry-after-translate-in-chrome) – joppiesaus

Odpowiedz

1

To jest błąd w Google Chrome. Zgłosiłem ten problem do Google:

Rendering bug in css transform: it blurrs borders

<div class="middle"> 
    <input type="text" /> 
</div> 
.middle { 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    -webkit-transform: translateY(-50%) translateX(-50%); 
    transform: translateY(-50%) translateX(-50%); 
} 
input { 
    border: 1px solid black; 
    border-radius: 4px; 
} 
var middle = document.querySelector('.middle'); 
setInterval(function(){ 
    middle.style.paddingTop = middle.style.paddingTop === "0px" ? "1px" : "0px"; 
}, 1000); 

Animated bug demonstration

+0

Rok później wydaje się, że jest to problem. Zdaję sobie sprawę, że Chrome nie tyle zepsuje, co inne przeglądarki, które dokładają więcej starań, by zrekompensować połowę jednostek, ale nadal jest frustrujące, że nie istnieje łatwe obejście tego problemu. – Lawyerson

5

Spróbuj -50,1%

transform: translateY(-50%) translateX(-50.1%); 

EDIT: I odkryli, że są nieostre chrom Narzędzia deweloperskie są otwarte, spróbuj je zamknąć i odśwież

+0

Tylko przy użyciu obu wartości z .1% pracował dla mnie. –

+0

@ViniciusCoelho Dowiedziałem się, że są one rozmyte, gdy narzędzia do otwierania Chrome są otwarte, spróbuj je zamknąć i odśwież. – youbetternot

+0

O dziwo, dla mnie było to niewyraźne z otwartymi narzędziami programisty. Twoje rozwiązanie, aby zmienić je na "-50,1%", działało dla mnie. –