Sepertinya telah ada pembaruan terkini untuk Google Chrome yang menyebabkan teks kabur setelah melakukan transform: scale()
. Secara khusus saya melakukan ini:
@-webkit-keyframes bounceIn {
0% {
opacity: 0;
-webkit-transform: scale(.3);
}
50% {
opacity: 1;
-webkit-transform: scale(1.05);
}
70% {
-webkit-transform: scale(.9);
}
100% {
-webkit-transform: scale(1);
}
}
Jika Anda mengunjungi http://rourkery.com di Chrome, Anda akan melihat masalah di area teks utama. Itu tidak digunakan untuk melakukan ini dan sepertinya tidak mempengaruhi browser webkit lain (seperti Safari). Ada beberapa posting lain tentang orang-orang yang mengalami masalah serupa dengan transformasi 3d, tetapi tidak dapat menemukan apa pun tentang transformasi 2d seperti ini.
Setiap ide akan dihargai, terima kasih!
google-chrome
css
webkit
transform
css-animations
Ryan O'Rourke
sumber
sumber
Jawaban:
Saya mengalami masalah ini beberapa kali dan sepertinya ada 2 cara untuk memperbaikinya (ditunjukkan di bawah). Anda dapat menggunakan salah satu properti ini untuk memperbaiki rendering, atau keduanya secara bersamaan.
Visibilitas bagian belakang tersembunyi memperbaiki masalah karena menyederhanakan animasi hanya ke bagian depan objek, sedangkan status default adalah bagian depan dan belakang.
TranslateZ juga berfungsi karena ini adalah peretasan untuk menambahkan akselerasi perangkat keras ke animasi.
Kedua properti ini memperbaiki masalah yang Anda alami tetapi beberapa orang juga suka menambahkan
ke animasi mereka untuk menolak. Saya menemukan bahwa itu dapat mengubah rendering font web tetapi jangan ragu untuk bereksperimen dengan metode itu juga.
sumber
backface-visibility: hidden;
pasti berhasil dalam kasus saya, dalam memecahkan beberapa gerakan buram aneh yang disebabkan oleh transisi opasitas, yaitu. Gerakan aneh sekarang hilang, TAPI itu telah membuat teks di div saya menjadi kabur secara permanen.perspective(1px)
ketransform:
kode Anda , ini berhasil untuk saya di Chrome sementara tidak ada yang lain yang memecahkan masalahUntuk meningkatkan keburaman, esp. di Chrome, coba lakukan ini:
PEMBARUAN: Perspektif menambahkan jarak antara pengguna dan bidang-z, yang secara teknis menskalakan objek, membuat keburaman tampak 'permanen'. Di
perspective(1px)
atas seperti selotip bebek karena kami mencocokkan kekaburan yang coba kami selesaikan. Anda mungkin lebih beruntung dengan css di bawah ini:sumber
perspective(1px)
properti tersebut dan lihat apakah berfungsi lebih baik.Saya menemukan bahwa menyesuaikan rasio skala sedikit membantu.
Menggunakan
scale(1.048)
over(1.05)
tampaknya menghasilkan perkiraan yang lebih baik untuk ukuran font piksel utuh, mengurangi keburaman sub-piksel.Saya juga menggunakan
translateZ(0)
yang tampaknya menyesuaikan langkah pembulatan terakhir Chrome dalam animasi transformasi. Ini adalah nilai tambah untuk penggunaan onhover saya karena meningkatkan kecepatan dan mengurangi gangguan visual. Namun untuk fungsi onclick, saya tidak akan menggunakannya karena, font yang diubah tampaknya tidak terlalu tajam.sumber
translateZ(0)
, diubah hanya1.05
menjadi1.048
Setelah mencoba segala sesuatu yang lain di sini dengan tidak beruntung, apa yang akhirnya tetap masalah ini bagi saya adalah menghapus yang
will-change: transform;
properti. Untuk beberapa alasan, hal itu menyebabkan penskalaan yang tampak sangat kabur di Chrome, tetapi tidak di Firefox.sumber
will-change: transform;
sedikit perbaikan masalahDari pada
menggunakan
memperbaiki masalah pemburaman teks di Chrome.
sumber
Ini pasti bug dengan Chrome (Versi 56.0.2924.87), tetapi di bawah ini memperbaiki keburaman bagi saya saat mengubah properti css di konsol ('. 0'). Saya akan melaporkannya.
sumber
transform: translate3d();
dan ini tampaknya menyebabkan masalah. Tidak ada solusi yang disarankan untuk saya. Kecuali / agak yang ini. Ini berfungsi hanya jika saya menetapkannya terlebih dahulu ke beberapa nilai positif (misalnya,blur(0.1px)
) dan kemudian mengubahnya menjadiblur(0px)
. Karena elemennya dinamis, dan juga membutuhkan solusi dinamis (JS), ... ini menyebalkan: \Sunderls menuntun saya pada jawabannya. Kecuali
filter: scale
tidak ada, tapifilter: blur
ada.Terapkan deklarasi berikutnya ke elemen yang tampak kabur (dalam kasus saya, mereka berada di dalam elemen yang diubah):
Ini hampir bekerja dengan sempurna. " Hampir " karena saya menggunakan transisi dan saat dalam transisi, elemen tidak terlihat sempurna, tetapi begitu transisi selesai, mereka melakukannya.
sumber
-webkit-filter: blur(0);
sendiri bekerja untukku.backface-visibility: hidden;
mengaburkan elemen saya ketika saya mengatur ulang penskalaan sesudahnya.blur(0px);
tidak memperbaikinya. tetapi jika saya lakukanblur(1px);
dan kemudian tekan tombol panah ke bawah untukblur(0px);
itu terlihat benar. Hilang pada penyegaran halaman / tidak peduli apa yang saya tulis di CSSSaya menemukan, bahwa masalah terjadi pada transformasi relatif dengan cara apa pun. translateX (50%), scale (1.1) atau apa pun. memberikan nilai absolut selalu berhasil (tidak menghasilkan teks buram (ures)).
Tidak ada solusi yang disebutkan di sini yang berfungsi, dan saya pikir belum ada solusi (menggunakan Chrome 62.0.3202.94 saat saya menulis ini).
Dalam kasus saya
transform: translateY(-50%) translateX(-50%)
menyebabkan blur (saya ingin memusatkan dialog).Untuk mencapai nilai yang lebih "absolut", saya harus menetapkan nilai desimal ke
transform: translateY(-50.09%) translateX(-50.09%)
.CATATAN
Saya cukup yakin, nilai ini bervariasi pada ukuran layar yang berbeda. Saya hanya ingin berbagi pengalaman saya, jika itu membantu seseorang.
sumber
Saya telah menemukan solusi yang jauh lebih baik dan bersih:
atau
Terima kasih untuk posting ini: Mencegah rendering buram dengan transform: scale
sumber
Menambahkan
perspective(1px)
berhasil untuk saya.untuk
sumber
Coba gunakan
zoom: 101%;
untuk desain yang rumit saat Anda tidak dapat menggunakan kombinasi zoom + skala.sumber
zoom
tidak didefinisikan oleh standar web dan tidak didukung oleh firefox caniuse.com/#feat=css-zoomDalam kasus saya, kode berikut menyebabkan font buram:
dan hanya menambahkan properti zoom sudah memperbaikinya untuk saya. Bermain-main dengan zoom, berikut ini berhasil untuk saya:
sumber
zoom
Perbaikan lain untuk dicoba yang baru saja saya temukan untuk blurry transforms (translate3d, scaleX) di Chrome adalah dengan menyetel elemen sebagai " display: inline-table ;". Tampaknya memaksa pembulatan piksel dalam beberapa kasus (pada sumbu X).
Saya membaca pemosisian subpiksel di bawah Chrome dimaksudkan dan pengembang tidak akan memperbaikinya.
sumber
Pembaruan 2019
Bug tampilan Chrome masih belum diperbaiki dan meskipun bukan karena kesalahan pelanggan, tidak ada saran yang ditawarkan di keseluruhan situs web ini yang membantu menyelesaikan masalah. Saya setuju bahwa saya telah mencoba semuanya dengan sia-sia: hanya 1 yang mendekati dan itulah aturan css: filter: blur (0); yang menghilangkan pergeseran penampung sebesar 1px tetapi tidak menyelesaikan bug tampilan buram dari penampung itu sendiri dan konten apa pun yang dimilikinya.
Inilah kenyataannya: secara harfiah tidak ada perbaikan untuk masalah ini jadi berikut adalah solusi untuk situs web fluid
CASE
Saat ini saya sedang mengembangkan situs web fluid dan memiliki 3 div, semuanya berpusat dengan efek hover dan berbagi nilai persentase baik dalam lebar maupun posisinya. Bug Chrome terjadi di penampung tengah yang disetel ke kiri: 50%; dan transform: translateX (-50%); pengaturan umum.
CONTOH: Pertama HTML ...
Inilah CSS tempat bug Chrome terjadi ...
Inilah css yang diperbaiki ...
Biola yang disadap: https://jsfiddle.net/m9bgrunx/2/
Biola tetap: https://jsfiddle.net/uoc6e2dm/2/
Seperti yang Anda lihat, sejumlah kecil penyesuaian pada CSS akan mengurangi atau menghilangkan persyaratan untuk menggunakan transformasi untuk pemosisian. Ini juga dapat berlaku untuk situs web dengan lebar tetap serta dapat berubah-ubah.
sumber
Saya memiliki masalah yang sama. Saya memperbaikinya menggunakan:
sumber
Tak satu pun di atas berhasil untuk saya. Saya memiliki animasi ini untuk popup:
Dalam kasus saya, efek buram hilang setelah menerapkan aturan ini:
-webkit-perspective: 1000;
meskipun itu ditandai sebagai tidak digunakan di inspektur Chrome.sumber
will-change: transform;
bahwa perbaikan buram batas elemen. Jawaban lain tidak berhasil untuk saya.Solusi saya adalah:
tampilan: awal;
Kemudian renyah tajam
sumber
Semua hal di atas tidak berhasil untuk saya.
Ini berhasil ketika saya menambahkan perspektif
yaitu dari
transform : translate3d(-10px,-20px,0) scale3d(0.7,0.7, 1)
saya berubah menjadi
transform : perspective(1px) translate3d(-10px,-20px,0) scale3d(0.7,0.7, 1)
sumber
perspective(1px)
sebenarnya membuatnya lebih buruk bagi saya :(Saya memperbaiki kasus saya dengan menambahkan:
sumber
scale()
hasil transformasiUNTUK CHORME:
Saya sudah mencoba semua saran di sini. Tapi tidak berhasil. Perguruan tinggi saya menemukan solusi hebat, yang bekerja lebih baik:
Anda TIDAK harus melewati 1.0
Dan sertakan
translateZ(0)
di hover tetapi BUKAN di posisi none-hover / awal.Contoh:
sumber
Saya menggunakan kombinasi dari semua jawaban dan inilah yang pada akhirnya berhasil untuk saya:
sumber
Saya menghadapi masalah teks buram di Chrome tetapi tidak di Firefox saat saya menggunakan
transform: translate(-50%,-50%)
.Ya, saya benar-benar mencoba banyak solusi seperti:
Tak satu pun dari ini berhasil bagi saya.
Akhirnya, saya membuat tinggi dan lebar elemen itu rata. Itu menyelesaikan masalah untuk saya !!!
Catatan: Ini mungkin tergantung dari kasus penggunaan ke kasus penggunaan. Tapi pasti patut dicoba!
sumber
Saya telah mencoba banyak contoh dari jawaban ini sayangnya tidak ada bantuan untuk Chrome yang
Version 81.0.4044.138
telah saya tambahkan untuk mengubah elemenyang ini
itu membantu saya
sumber
Bagi saya masalahnya adalah elemen saya menggunakan
transformStyle: preserve-3d
. Saya menyadari bahwa ini sebenarnya tidak diperlukan untuk aplikasi dan menghapusnya memperbaiki keburaman.sumber
Saya menghapus ini dari kode saya -
transform-style: preserve-3d;
dan menambahkan ini-transform: perspective(1px) translateZ(0);
keburaman hilang!
sumber
Di Chrome 74.0.3729.169, yang berlaku mulai tanggal 5-25-19, tampaknya tidak ada perbaikan untuk pengaburan yang terjadi pada tingkat zoom browser tertentu yang disebabkan oleh transformasi. Bahkan yang sederhana
TransformY(50px)
akan mengaburkan elemen tersebut. Ini tidak terjadi di versi Firefox, Edge atau Safari saat ini, dan sepertinya tidak terjadi di semua tingkat zoom.sumber
top: 0, bottom: 0, left: 0; right: 0; margin: auto
tetapi kemudian wadah akan mengambil seluruh ruang yang dimilikinya (harus lebar), jadi ini tidak berfungsi jika konten harus memutuskan seberapa besar wadahnya.Ini akan sulit diselesaikan hanya dengan css.
Jadi saya menyelesaikannya dengan jquery.
Ini CSS saya.
dan ini jquery saya.
sumber
Hanya untuk menambah kegemaran memperbaiki, meletakkan {border: 1px solid # ???} di sekitar objek yang tampak buruk memperbaiki masalah bagi saya. Jika Anda memiliki warna latar belakang yang stabil, pertimbangkan ini juga. Ini sangat bodoh sehingga tidak ada yang berpikir untuk menyebutkannya, ya, eh.
sumber
Anda dapat menggunakan css
filter
untuk memperbaikinya.tentang awalan vendor, lakukan sendiri.
-webkit-filter
,-ms-filter
. detailnya ada di sini http://browser.colla.me/show/css_transformation_scale_cause_blurringsumber
filter: scale
menurut developer.mozilla.org/en/docs/Web/CSS/filterTeks tidak akan kabur jika Anda tidak
transition
yangtransform
.Lakukan saja ini:
Tanpa transisi suka
transition: all .2s;
sumber