Я создал фиктивный ReactJS
компонент: Frame
, который хорошо обрабатывает Chrome
, но НЕ визуализирует Edge
.
Здесь у вас есть Codesandbox.io
:
https://codesandbox.io/s/o4kw405n69
Здесь вы видите, как он рендерит на них обоих:
Вкл. Хром (Хорошо):
Вкл. Microsoft Edge (Плохо):
Вы можете попробовать здесьсамостоятельно в обоих браузерах:
https://0okjypwknl.codesandbox.io/
Для создания рамки я использую только одно простое изображение:
Затем, после некоторых CSS
преобразований, я получаю желаемый эффект, включая углы.
К сожалению, на Edge
Я не получаю желаемый эффект на других углах.Есть ли у вас какие-либо идеи о том, как решить эту проблему для Edge
и, конечно, продолжать работать на Chrome
?
Пожалуйста, раскошелите мой Codesandbox.io
выше: https://codesandbox.io/s/o4kw405n69, примените ваше решениеи вставьте сюда ссылку.
Кстати, здесь у вас есть стиль, который позаботится о выполнении необходимых преобразований для получения эффекта рамки:
this.style = {
frame: {
position: 'absolute',
width: widthFrame + 'px',
height: heightFrame + 'px',
...((urlImageMat !== false) && {
backgroundImage: 'url("' + urlImageMat + '")',
}),
},
image: {
backgroundImage: 'url("' + urlImageMain + '")',
backgroundRepeat: 'no-repeat',
backgroundSize: widthImage + 'px ' + heightImage + 'px',
backgroundPosition: 'center',
width: '100%',
height: '100%',
},
trapezoidTop: {
width: widthFrame + 'px',
height: thickFrame + 'px',
clipPath: 'polygon(0 0, 100% 0, calc(100% - ' + thickFrame + 'px) 100%, ' + thickFrame + 'px 100%)',
transformOrigin: 'top left',
transform: 'rotate(0deg)',
},
trapezoidLeft: {
width: heightFrame + 'px',
height: thickFrame + 'px',
marginTop: - thickFrame + 'px',
clipPath: 'polygon(0 0, 100% 0, calc(100% - ' + thickFrame + 'px) 100%, ' + thickFrame + 'px 100%)',
transformOrigin: 'top left',
transform: 'rotate(90deg) scale(1, -1)',
},
trapezoidImage: {
backgroundImage: 'url("' + urlImageFrame + '")',
backgroundSize: 'contain',
},
edgeTLBR: {
position: 'absolute',
},
edgeBR: {
display: 'inline-block',
width: widthFrame + 'px',
height: heightFrame + 'px',
transform: 'rotate(180deg)',
},
};
(подробнее о Codesandbox.io
)
Спасибо!