Saya mengalami masalah dengan SVG yang menghilang di Chrome untuk Android ketika orientasi diubah dalam keadaan tertentu. Kode di bawah ini tidak mereproduksinya, tetapi pengaturan yang kami miliki.
body {
font-family: tahoma, sans-serif;
font-size: 12px;
margin: 10px;
}
article {
display: flex;
}
aside {
flex: 0 1 10px;
margin-right: 10px;
min-width: 10px;
position: relative;
}
svg {
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
}
.backgroundStop1 {
stop-color: #5bb79e;
}
.backgroundStop2 {
stop-color: #ddcb3f;
}
.backgroundStop3 {
stop-color: #cf6b19;
}
<article>
<aside>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="100%" width="100%">
<defs>
<linearGradient id="IndicatorColourPattern" x1="0" x2="0" y1="0" y2="1">
<stop class="backgroundStop1" offset="0%"></stop>
<stop class="backgroundStop2" offset="50%"></stop>
<stop class="backgroundStop3" offset="100%"></stop>
</linearGradient>
</defs>
<rect x="0" y="0" rx="5" ry="5" width="100%" height="100%" fill="url(#IndicatorColourPattern)"></rect>
</svg>
</aside>
<section>
<p>Donec et eros nibh. Nullam porta, elit ut sagittis pulvinar, lacus augue lobortis mauris, sed sollicitudin elit orci non massa. Proin condimentum in nibh sed vestibulum. Donec accumsan fringilla est, porttitor vestibulum dolor ornare id. Sed elementum
urna sollicitudin commodo ultricies. Curabitur tristique orci et ligula interdum, eu condimentum metus eleifend. Nam libero augue, pharetra at maximus in, pellentesque imperdiet orci.</p>
<p>Fusce commodo ullamcorper ullamcorper. Etiam eget pellentesque quam, id sodales erat. Vestibulum risus magna, efficitur sed nisl et, rutrum consectetur odio. Sed at lorem non ligula consequat tempus vel nec risus.</p>
</section>
</article>
Setengah hari kemudian setelah menyodok dan mendorong dan tidak senang dengan solusi peretasan yang ditawarkan di sini, saya menemukan bahwa masalah ini disebabkan oleh fakta bahwa elemen tersebut tetap tersimpan dalam ingatan saat menggambar yang baru. Solusinya adalah membuat ID linearGradient pada SVG unik, meskipun hanya pernah digunakan sekali per halaman.
Ini dapat dicapai dengan berbagai cara, tetapi untuk aplikasi sudut kami, kami menggunakan fungsi lodash uniqueId untuk menambahkan variabel ke ruang lingkup:
Petunjuk Sudut (JS):
scope.indicatorColourPatternId = _.uniqueId('IndicatorColourPattern');
Pembaruan HTML:
Baris 5: <linearGradient ng-attr-id="{{indicatorColourPatternId}}" x1="0" x2="0" y1="0" y2="1">
Baris 11: <rect x="0" y="0" rx="5" ry="5" width="100%" height="100%" ng-attr-fill="url(#{{indicatorColourPatternId}})"/>
Saya harap jawaban ini menyelamatkan seseorang dari hari-hari dengan menghancurkan keyboard mereka.