특정 상황에서 방향이 변경되면 Android 용 Chrome에서 사라지는 SVG 문제가 발생했습니다. 아래 코드는 그것을 재현하지 않지만 우리가 가진 설정입니다.
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>
일주일 후 파고 들고 prodding 후 여기에 제공된 해키 솔루션에 만족하지 못했지만 , 문제는 새로운 요소를 그리는 동안 요소를 메모리에 유지하는 것처럼 보였기 때문에 발생했습니다. 해결책은 SVG에서 linearGradient의 ID를 페이지 당 한 번만 사용하더라도 고유하게 만드는 것입니다.
이것은 여러 가지 방법으로 달성 할 수 있지만, 각도 앱에서는 lodash uniqueId 함수를 사용하여 변수를 범위에 추가했습니다.
각도 지시문 (JS) :
scope.indicatorColourPatternId = _.uniqueId('IndicatorColourPattern');
HTML 업데이트 :
5 행 : <linearGradient ng-attr-id="{{indicatorColourPatternId}}" x1="0" x2="0" y1="0" y2="1">
11 행 : <rect x="0" y="0" rx="5" ry="5" width="100%" height="100%" ng-attr-fill="url(#{{indicatorColourPatternId}})"/>
이 답변으로 다른 사람이 키보드를 훼손하는 일을 할 수 있기를 바랍니다.