SVG muda de cor quando girado no Safari 10


109

Acabei de encontrar um problema muito estranho que só aparece no Safari 10. Tenho cartas de jogar, imagens SVG, que às vezes são giradas usando transform:rotate(xdeg).

O cartão que estou usando tem um padrão de bloco vermelho. Quando não é girado ou girado em ângulos retos, ou seja, 90, 180, 270, então parece normal. Mas, qualquer outro ângulo diferente desse e o padrão de fundo fica azul! Acabei de receber um relatório sobre isso de um dos meus usuários e nunca vi nada tão estranho. Todos os outros navegadores funcionam normalmente, o Safari 9 faz isso normalmente.

Suponho que este seja apenas um bug muito estranho no Safari 10, mas alguma ideia sobre como contorná-lo? Eu criei uma reprodução mínima em:

https://jsfiddle.net/2zv4garu/1/


6
Considere adicionar um bug do WebKit ao rastreador de bugs , se você acha que isso está relacionado ao WebKit.
relaxe em

2
Isso não acontece no meu Mac Mini modelo do final de 2012 ou no meu Retina MacBook Pro 2013. Mac Mini: imgur.com/zdAZoWV
X-Istence

2
Não acontece no meu MacBook Pro Late 11 não retina com Safari versão 10.0 (12602.1.50.0.10)
Dave

Também não acontece no Sierra, iMac no final de 2015 - imgur.com/a/e2FyS
antonone

Não é possível reproduzir no Safari no iOS 10.0.1.
Šime Vidas

Respostas:


79

Bug estranho, de fato. Executar a transformação no gelemento de empacotamento como uma transformação SVG não resolve o problema.

Porém, ao realizar uma rotação 3D em vez de 2D, ou seja inlineCard.style.transform = 'rotate3d(0,0,1,' + e.currentTarget.value + 'deg)';, resolve o problema, você pode ver aqui.

https://jsfiddle.net/qe00s1mg/

insira a descrição da imagem aqui


32
Obrigado, isso funciona muito bem :) Eu descobri como a mudança de cor acontece, é trocar os valores R e B da cor de preenchimento. A cor é # ff0000 e está mudando para # 0000ff. Tentei com valores diferentes para R e B e vi que era sempre o inverso. No entanto, o valor G permanece inalterado; na verdade, se você tentar a cor # 00FF00, a cor do cartão não mudará durante a rotação. De qualquer forma, obrigado pela solução alternativa, marquei esta resposta como aceita.
Einar Egilsson

19
Registre um bug em bugreport.apple.com (ou bugs.webkit.org) com esses detalhes.
Paul Schreiber,

15
@EinarEgilsson: ... e isso explica muito bem o que está acontecendo. Claramente, alguém está usando a ordem de bytes errada ao renderizar a imagem girada.
Ilmari Karonen

3
@PaulSchreiber Na verdade, parece que já foi consertado, as pessoas com uma versão mais recente do Safari 10 não parecem estar entendendo isso.
Einar Egilsson

4
@DarioOO Porque meio correto é melhor do que não tentar.
jpa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.