chrome: mengapa css 3d bertransformasi pada elemen besar dengan skala transformasi ‹ 0 menyebabkan bug layar putih?

Saya mengalami masalah dengan bagian layar yang menjadi putih di chrome. Di bawah ini adalah kasus uji yang disederhanakan. Dari pengujian, terlihat jelas bahwa kombinasi skala transformasi dan rotasi menyebabkan masalah. Untuk mereproduksi masalah dengan beberapa elemen html, saya membesar-besarkan situasinya dan menggunakan persegi 5000px yang diperkecil sebesar 0,125.

Perhatikan bahwa hanya pengujian pertama yang mereproduksi bug,a dan tidak mereproduksi di firefox.

dengan skala diperkecil: http://jsfiddle.net/AxkEj/46/embedded/result/

   width: 5000px;
   height: 5000px;
   -webkit-transform: scale(0.125);

tanpa skala: http://jsfiddle.net/47SmB/1/embedded/result/

   width: 625px;
   height: 625px;

dengan peningkatan: http://jsfiddle.net/YpfPt/2/

   width: 50px;
   height: 50px;
   -webkit-transform: scale(10);

dengan zoom, bukan skala:

    width: 5000px; 
    height: 5000px;
    zoom: 0.125;

http://jsfiddle.net/AxkEj/47/

laporan bug ke webkit beserta respons

spesifikasi transformasi css menyertakan bagian di bawah ini, yang mungkin menjelaskan masalah ini:

Matriks transformasi 3D yang terakumulasi merupakan matriks berukuran 4×4, sedangkan objek yang akan ditransformasikan berupa kotak dua dimensi. Untuk mentransformasi setiap sudut (a, b) suatu kotak, matriks harus diterapkan terlebih dahulu pada (a, b, 0, 1), yang akan menghasilkan titik empat dimensi (x, y, z, w). Ini diubah kembali menjadi titik tiga dimensi (x′, y′, z′) sebagai berikut:

If w > 0, (x′, y′, z′) = (x/w, y/w, z/w).

Jika w = 0, (x′, y′, z′) = (x ⋅ n, y ⋅ n, z ⋅ n). n adalah nilai yang bergantung pada implementasi yang harus dipilih sehingga x′ atau y′ jauh lebih besar daripada ukuran area pandang, jika memungkinkan. Misalnya, (5px, 22px, 0px, 0) mungkin menjadi (5000px, 22000px, 0px), dengan n = 1000, namun nilai n ini akan terlalu kecil untuk (0.1px, 0.05px, 0px, 0). Spesifikasi ini tidak menentukan nilai n secara tepat. Secara konseptual, (x′, y′, z′) jauhnya tak terhingga dalam arah (x, y, z).

Jika w ‹ 0 untuk keempat sudut kotak yang diubah, kotak tersebut tidak dirender.

pembaruan: bug juga tidak muncul di explorer. lihat biola di bawah ini:

http://jsfiddle.net/AxkEj/48/


person CodeToad    schedule 22.01.2014    source sumber


Jawaban (1)


Masalahnya adalah karena Anda telah menggunakan persentase untuk menentukan tinggi div dengan kelas "rz". Perhatikan bahwa untuk menggunakan tinggi dalam persentase, semua tinggi elemen induk juga harus ditentukan dalam persentase.

Hal ini tidak terjadi di sini. Anda telah menentukan tinggi div pembungkus dalam piksel.

person pinakbheed    schedule 17.02.2014