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/

Einar Egilsson
fonte
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

método de ação
fonte
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