Kako uporabiti filter CSS za sliko ozadja

Imam datoteko JPEG, ki jo uporabljam kot sliko ozadja za iskalno stran, za nastavitev pa uporabljam CSS, ker delam v kontekstu Backbone.js:

background-image: url("whatever.jpg");

Za ozadje želim uporabiti filter za zameglitev CSS 3, vendar ne vem, kako naj oblikujem samo ta element. Če poskusim:

-webkit-filter: blur(5px);
-moz-filter: blur(5px);
-o-filter: blur(5px);
-ms-filter: blur(5px);
filter: blur(5px);

samo pod background-image v mojem CSS, se oblikuje celotna stran in ne samo ozadje. Ali obstaja način, da izberem samo sliko in nanjo uporabim filter? Ali obstaja tudi način, da se zameglitev izklopi za vse druge elemente na strani?

Rešitev

Oglejte si to [pisalo] (http://codepen.io/aniketpant/pen/DsEve).

Uporabiti boste morali dva različna vsebnika, enega za sliko ozadja in drugega za vsebino.

V primeru sem ustvaril dva vsebnika, .background-image in .content.

Oba sta postavljena z position: fixed in left: 0; right: 0;. Razlika v njunem prikazu izvira iz vrednosti z-index, ki sta bili za elementa različno nastavljeni.

.background-image {
  position: fixed;
  left: 0;
  right: 0;
  z-index: 1;
  display: block;
  background-image: url('http://666a658c624a3c03a6b2-25cda059d975d2f318c03e90bcf17c40.r92.cf1.rackcdn.com/unsplash_527bf56961712_1.JPG');
  width: 1200px;
  height: 800px;
  -webkit-filter: blur(5px);
  -moz-filter: blur(5px);
  -o-filter: blur(5px);
  -ms-filter: blur(5px);
  filter: blur(5px);
}

.content {
  position: fixed;
  left: 0;
  right: 0;
  z-index: 9999;
  margin-left: 20px;
  margin-right: 20px;
}
<div class="background-image"></div>
<div class="content">
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis aliquam erat in ante malesuada, facilisis semper nulla semper. Phasellus sapien neque, faucibus in malesuada quis, lacinia et libero. Sed sed turpis tellus. Etiam ac aliquam tortor, eleifend
    rhoncus metus. Ut turpis massa, sollicitudin sit amet molestie a, posuere sit amet nisl. Mauris tincidunt cursus posuere. Nam commodo libero quis lacus sodales, nec feugiat ante posuere. Donec pulvinar auctor commodo. Donec egestas diam ut mi adipiscing,
    quis lacinia mauris condimentum. Quisque quis odio venenatis, venenatis nisi a, vehicula ipsum. Etiam at nisl eu felis vulputate porta.</p>
  <p>Fusce ut placerat eros. Aliquam consequat in augue sed convallis. Donec orci urna, tincidunt vel dui at, elementum semper dolor. Donec tincidunt risus sed magna dictum, quis luctus metus volutpat. Donec accumsan et nunc vulputate accumsan. Vestibulum
    tempor, erat in mattis fringilla, elit urna ornare nunc, vel pretium elit sem quis orci. Vivamus condimentum dictum tempor. Nam at est ante. Sed lobortis et lorem in sagittis. In suscipit in est et vehicula.</p>
</div>

Opravičujem se za besedilo Lorem Ipsum.

Posodobitev

Zahvala Matthew Wilcoxson za boljšo izvedbo z uporabo .content:before http://codepen.io/akademy/pen/FlkzB

Komentarji (17)

Za to morate spremeniti strukturo svojega HTML. Če želite zamegliti ozadje, morate zamegliti celoten element. Če želite zamegliti samo ozadje, mora biti to samostojen element.

Komentarji (0)

V zavihku .content v CSS ga spremenite v position:absolute. V nasprotnem primeru se prikazana stran ne bo premikala.

Komentarji (0)