Я пытаюсь установить центрированное изображение поверх того же изображения, но размытое и растянутое для горизонтального заполнения.Когда я применяю фильтр: blur () фоновое изображение «переполняется», когда оно превышает высоту исходного изображения.
<div class="blurred"> </div> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg"> img{ height:300px; margin:auto; position:relative; display:block; } .blurred{ background-image:url('https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg'); filter:blur(30px); width:100%; height: 300px; position: absolute; }
Вот скрипка: https://jsfiddle.net/gw9krd2n/
Вы можете сделать это так:
img { position: relative; top:-5%; left:-5%; z-index: -1; width:110%; height:110%; filter: blur(20px); } .blurred { position: relative; width: 100%; height: 300px; overflow: hidden; background: transparent url('https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg') no-repeat 50% / auto 100%; }
<div class="blurred"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg"> </div>
JSFiddle здесь
Вам нужно уменьшить 30px фильтра сверху добавить снизу.Я добавил несколько полей для лучшего просмотра.
30px
img{ height:300px; margin:20px auto; position:relative; display:block; } .blurred{ background-image:url('https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg'); filter:blur(30px); margin:50px auto; width:100%; height: calc(300px - 60px); position: absolute; }
<div class="blurred"> </div> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg">
Вы также можете оптимизировать код с помощью псевдоэлемента, и у вас будет лучший контроль.
img { height: 300px; margin: auto; display: block; } .blurred { position: relative; margin:30px 0; z-index:0; } .blurred:before { content: ""; position: absolute; z-index:-1; background-image: url('https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg'); filter: blur(30px); top: 30px; bottom: 30px; width: 100%; }
Вы также можете ввести переменную CSS для большей гибкости:
img { height: 300px; margin: auto; display: block; } .blurred { position: relative; margin:30px 0; z-index:0; } .blurred:before { content: ""; position: absolute; z-index:-1; background-image: url('https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg'); filter: blur(var(--f,20px)); top: var(--f,20px); bottom: var(--f,20px); width: 100%; }
<div class="blurred" style="--f:30px"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg"> </div> <div class="blurred" style="--f:50px"> <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg"> </div>
Используя метод псевдоэлемента, вы также можете просто скрыть переполнение:
img { height: 300px; margin: auto; display: block; } .blurred { position: relative; margin:30px 0; z-index:0; overflow:hidden; } .blurred:before { content: ""; position: absolute; z-index:-1; background-image: url('https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg'); filter: blur(20px); top:0; bottom:0; width: 100%; }
<div class="blurred" > <img src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Sunset_2007-1.jpg/1280px-Sunset_2007-1.jpg"> </div>