Я пытаюсь добиться эффекта, при котором у меня будет div с фоновым изображением с содержимым внутри. Этот контент должен быть в гибком позиционном элементе div с тем же изображением, но размытым (при сохранении его относительного положения относительно родительского).
В поисках спасения я обнаружил, что определенная комбинация правил CSS дает такой точный эффект, но только в Chrome.
.container {
width: 320px;
height: 240px;
position: relative; /* it is required */
display: flex; /* it is required */
background: url(https://loremflickr.com/cache/resized/4848_46406748211_5572c760e0_320_240_nofilter.jpg);
}
.mask {
z-index: 1; /* it is required */
overflow: hidden; /* it is required */
width: 150px;
height: 150px;
border-radius: 1px; /* it is required */
}
.element {
background: url(https://loremflickr.com/cache/resized/4848_46406748211_5572c760e0_320_240_nofilter.jpg);
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
filter: blur(5px);
}
<div class="container">
<div class="mask">
<div class="element"></div>
</div>
</div>
https://jsfiddle.net/39um580g/16/
Chrome / Chrome Mobile:
Firefox:
Safari:
Это смешно. Есть ли способ сделать это решение кросс-браузерным?
Ответ Moorthy G:
Предположим, мой блок расположен справа. Текущее поведение версии Chrome такое, как я хочу:
При добавлении любого вида преобразования .mask
будет относительным, поэтому он уничтожит желаемый эффект: