背景画像から白いぼかしボーダーを削除する方法。
<div class="background-image"></div>
CSS、私はmargin:-10pxを追加しようとしましたが、機能しません
.background-image {
background: no-repeat center center fixed;
background-image: url('http://www.hdpaperz.com/wallpaper/original/windows-8-wallpapers-2560x1600-2311_1.jpg') ;
background-size: cover;
display: block;
height: 100%;
left: -5px;
top:-5px;
bottom:-5px;
position: fixed;
right: -5px;
z-index: 1;
margin:0px auto;
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
}
オーバーフロー、パディング、さらにはマージンも追加しましたが、それでも問題は解決していません。だから私はdivの間に画像タグを付けようとしました。問題が解決しました。
<div class="background-image">
<img src="http://www.hdpaperz.com/wallpaper/original/windows-8-wallpapers-2560x1600-2311_1.jpg" width="100%" height="100%"/>
</div>
cSS
.background-image {
background: no-repeat center center fixed;
background-size: cover;
display: block;
left: -5px;
top:-5px;
bottom:-5px;
position: fixed;
right: -5px;
z-index: 1;
-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
margin:-5px;
}
jsフィドル
これを行う最も簡単な方法は、transform:scale(1.1)を追加することです。お試しください こちら 。
#overlay {
position: fixed;
left: 22.5em;
top: 3em;
height: 75%;
width: 50%;
background: url("https://s-media-cacheak0.pinimg.com/originals/ae/b4/c5/aeb4c53cab2b550187644af503a0f17e.png");
background-size: cover;
filter: blur(9px);
transform: scale(1.1);
}
白い境界線はボディの背景色に由来していることに気づきました。他の色に設定すると、白い境界線の色が設定した色に変わるのがわかります。
これをしてください
body {
background-color: black; //or whatever color is nearest to your blurred background
}
画像の周りの白い境界線を削除したい場合は、css Clipプロパティを使用できます。
あなたはここでもっと読むことができます
http://tympanus.net/codrops/2013/01/16/understanding-the-css-clip-property/
http://demosthenes.info/blog/534/Cross-browser-Image-Blur-with-CSS
@Primeの回答に基づいて解決した関数は次のとおりです。
画像が機能するためには、画像のwidth
とheight
を含む<div/>
内に配置する必要があります(明示的に設定)。
function addBlur(style, radius) {
return {
...style,
// https://caniuse.com/#feat=css-filters
filter: `blur(${radius}px)`,
// Works around the white edges bug.
// https://stackoverflow.com/questions/28870932/how-to-remove-white-border-from-blur-background-image
width: `calc(100% + ${2 * radius}px)`,
height: `calc(100% + ${2 * radius}px)`,
marginLeft: `-${radius}px`,
marginTop: `-${radius}px`
}
}
これは私にとってうまくいきました:2つの固定画像を追加しました。1つはz = -1、もう1つはz = 0で、最初の画像をぼかしました。
白い境界線がボディの背景色に起因している場合は、margin: 0;
on body
マージンはデフォルトで0ではないため。
padding: 10px 10px;
これをCSSに追加して、下部の白いぼかしボーダーを削除します
コンテナーに負のマージンを追加しました:margin: -5px