Frage

Ich habe eine JPEG-Datei, die ich als Hintergrundbild für eine Suchseite verwende, und verwende CSS, um sie festzulegen, weil ich darin arbeite Backbone.js Kontexte:

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

Ich möchte einen CSS 3-Unschärfefilter anwenden nur in den Hintergrund, aber ich bin mir nicht sicher, wie ich nur dieses eine Element stylen soll.Wenn ich es versuche:

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

knapp darunter background-image In meinem CSS wird die gesamte Seite formatiert und nicht nur der Hintergrund.Gibt es eine Möglichkeit, nur das Bild auszuwählen und den Filter darauf anzuwenden?Gibt es alternativ eine Möglichkeit, die Unschärfe einfach für jedes andere Element auf der Seite zu deaktivieren?

War es hilfreich?

Lösung

Schau dir das an Stift.

Sie müssen zwei verschiedene Container verwenden, einen für das Hintergrundbild und einen für Ihren Inhalt.

Im Beispiel habe ich zwei Container erstellt, .background-image Und .content.

Beide sind mit platziert position: fixed Und left: 0; right: 0;.Der Unterschied in der Anzeige ergibt sich aus der z-index Werte, die für die Elemente unterschiedlich eingestellt wurden.

.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>

Entschuldigung dafür Lorem Ipsum Text.

Aktualisieren

Dank an Matthew Wilcoxson für eine bessere Umsetzung mit .content:before http://codepen.io/akademy/pen/FlkzB

Andere Tipps

Stift

Dadurch entfällt die Notwendigkeit eines zusätzlichen Elements und die Anpassung des Inhalts an den Dokumentenfluss erfolgt, anstatt wie bei anderen Lösungen fest/absolut zu sein.

Erreicht mit

.content {
  overflow: auto;
  position: relative;
}

Es ist ein automatischer Überlauf erforderlich, da sonst der Hintergrund oben um einige Pixel versetzt wird.

Danach brauchen Sie nur noch

.content:before {
  content: "";
  position: fixed;
  left: 0;
  right: 0;
  z-index: -1;

  display: block;
  background-image: url('img-here');
  background-size:cover;
  width: 100%;
  height: 100%;

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

BEARBEITEN Wenn Sie die weißen Ränder an den Rändern entfernen möchten, verwenden Sie eine Breite und Höhe von 110% und eine linke und obere Seite -5%.Dadurch wird Ihr Hintergrund etwas vergrößert, aber an den Rändern sollte keine Volltonfarbe einlaufen.

Aktualisierter Stift hier: https://codepen.io/anon/pen/QgyewB - Danke Chad Fawcett für den Vorschlag.

Wie in anderen Antworten angegeben, kann dies erreicht werden mit:

    .
  • Eine Kopie des verschwommenen Bildes als Hintergrund.
  • ein Pseudoelement, das filtriert werden kann, dann hinter dem Inhalt positioniert.

Sie können auch backdrop-filter .

Es gibt eine unterstützte Eigenschaft namens generakodicetagcode, und ist derzeit Unterstützt in Chrom 76, Rand , Safari und iOS Safari (siehe caniuse.com für Statistiken).

von Mozilla devdocs :

Die Untertropfen-Filter-Eigenschaft sorgt für Effekte wie Unschärfe oder Farbe, die den Bereich hinter einem Element verschieben, das dann durch dieses Element gesehen werden kann, indem er die Transparenz / Deckkraft des Elements einstellt.

siehe caniuse.com für die Nutzungsstatistik.

Sie würden es wie so verwenden:

generasacodicetagpre. generasacodicetagpre.

update (12/06/2019) : chromium wird mit backdrop-filter versandt, der standardmäßig in der Version 76 aktiviert ist, in der ist vom 30.07.2019 .

update (01.06.2019) : das mozzilla firefox team hat angekündigt, es beginnt, dies bald daran zu arbeiten.

update (21.05.2019) : chromium nur angekündigt backdrop-filter ist in Chrome Canary erhältlich, ohne dass "Experimentelle Webplattform mit experimenteller Webplattform aktivieren". Dies bedeutet, dass der backdrop-filter in allen Chromplattformen sehr nahe ist.

Sie müssen Ihren HTML erneut strukturieren.Sie müssen das gesamte Element verwischen, um den Hintergrund zu verwischen.Wenn Sie also nur den Hintergrund verwischen möchten, muss es sein eigenes Element sein.

Bitte überprüfen Sie den folgenden Code: -

generasacodicetagpre. generasacodicetagpre.

Das Folgende ist eine einfache Lösung für moderne Browser in reinem CSS mit einem „before“-Pseudoelement, wie die Lösung von Matthew Wilcoxson.

Um zu vermeiden, dass zum Ändern des Bildes und anderer Attribute in JavaScript auf das Pseudoelement zugegriffen werden muss, verwenden Sie einfach inherit als Wert und greifen Sie über das übergeordnete Element (hier) darauf zu body).

body::before {
    content: ""; /* Important */
    z-index: -1; /* Important */
    position: inherit;
    left: inherit;
    top: inherit;
    width: inherit;
    height: inherit;
    background-image: inherit;
    background-size: cover;
    filter: blur(8px);
}

body {
  background-image: url("xyz.jpg");
  background-size: 0 0;  /* Image should not be drawn here */
  width: 100%;
  height: 100%;
  position: fixed; /* Or absolute for scrollable backgrounds */
}

Im .content Tab in CSS ändern Sie es in position:absolute.Andernfalls ist die gerenderte Seite nicht scrollbar.

Obwohl alle genannten Lösungen sehr klug sind, schien alle geringfügigen Probleme oder potenziellen Effekten mit anderen Elementen auf der Seite auf der Seite zu haben, als ich sie ausprobierte.

Am Ende, um Zeit zu sparen, ging ich einfach zu meiner alten Lösung zurück: Ich habe paint.net und ging nach Effekten, Gaußschen Unschärfe mit einem Radius 5 bis 10 Pixel und reinigte das gerade als das Seitenbild.: -)

html:

generasacodicetagpre.

css:

generasacodicetagpre.

edit:

Ich habe es endlich funktioniert, aber die Lösung ist keineswegs unkompliziert!Hier sehen:

Alles, was Sie tatsächlich benötigen, ist "Filter":

generasacodicetagpre.

generasacodicetagpre. generasacodicetagpre.

Natürlich handelt es sich hierbei nicht um eine CSS-Lösung, aber Sie können das CDN Proton damit verwenden filter:

body {
    background: url('https://i0.wp.com/IMAGEURL?w=600&filter=blurgaussian&smooth=1');
}

Es ist aus https://developer.wordpress.com/docs/photon/api/#filter

Ich habe dies nicht geschrieben, aber ich bemerkte, dass es ein Polyplavel für den teilweise unterstützten generationsporticeticetcode mit dem CSS-Sass-Compiler gab. Wenn Sie also eine Kompilierungs-Pipeline haben, kann es nett erreicht werden (es verwendet auch Typenkript):

.

https://codepen.io/mixal_bl4/pen/wpmwo

generasacodicetagpre.

Diese Antwort ist für a Material Design horizontales Kartenlayout mit dynamischer Höhe und einem Bild.

Um eine Verzerrung des Bildes aufgrund der dynamischen Höhe der Karte zu verhindern, können Sie ein Hintergrund-Platzhalterbild mit Unschärfe verwenden, um Höhenänderungen auszugleichen.

 

Erläuterung

  • Die Karte ist in einem enthalten <div> mit Klasse Verpackung, das ist eine Flexbox.
  • Die Karte besteht aus zwei Elementen, einem Bild, das auch ein Link und Inhalt ist.
  • Der Link <a>, Klasse Verknüpfung, ist positioniertrelativ.
  • Der Link besteht aus zwei Unterelementen, einem Platzhalter <div> Klasse verwischen und ein <img> Klasse Bild Das ist das klare Bild.
  • Beide sind positioniert absolut und haben width: 100%, aber Klasse Bild hat eine höhere Stapelreihenfolge, d. h. z-index: 2, wodurch es über dem Platzhalter platziert wird.
  • Das Hintergrundbild für den unscharfen Platzhalter wird über eingestellt Inline-Stil im HTML.

 

Code

.wrapper {
  display: flex;
  width: 100%;
  border: 1px solid rgba(0, 0, 0, 0.16);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.16), 0 1px 1px rgba(0, 0, 0, 0.23);
  background-color: #fff;
  margin: 1rem auto;
  height: auto;
}

.wrapper:hover {
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
}

.link {
  display: block;
  width: 200px;
  height: auto;
  overflow: hidden;
  position: relative;
  border-right: 2px solid #ddd;
}

.blur {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  width: 100%;
  height: 100%;
  filter: blur(5px);
  -webkit-filter: blur(5px);
  -moz-filter: blur(5px);
  -o-filter: blur(5px);
  -ms-filter: blur(5px);
}

.pic {
  width: calc(100% - 20px);
  max-width: 100%;
  height: auto;
  margin: auto;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
}

.pic:hover {
  transition: all 0.2s ease-out;
  transform: scale(1.1);
  text-decoration: none;
  border: none;
}

.content {
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 100%;
  padding: 20px;
  overflow-x: hidden;
}

.text {
  margin: 0;
}
<div class="wrapper">
  <a href="#" class="link">
    <div class="blur" style="background: url('http://www.planwallpaper.com/static/assets/img/header.jpg') 50% 50% / cover;"></div>
    <img src="http://www.planwallpaper.com/static/assets/img/header.jpg" alt="Title" class="pic" />
  </a>

  <div class="content">
    <p class="text">Agendum dicendo memores du gi ad. Perciperem occasionem ei ac im ac designabam. Ista rom sibi vul apud tam. Notaverim to extendere expendere concilium ab. Aliae cogor tales fas modus parum sap nullo. Voluntate ingressus infirmari ex mentemque ac manifeste
      eo. Ac gnum ei utor sive se. Nec curant contra seriem amisit res gaudet adsunt. </p>
  </div>
</div>

Nun ist dies jetzt noch einfacher und flexibler mit dem CSS-Grid. Sie müssen nur den geschüfteten Hintergrund (IMGBG) mit dem Text (H2)

überlappen (H2)

generasacodicetagpre.

und die CSS:

generasacodicetagpre.

Wenn Sie inhalte, um gesclaut zu werden möchten, setzen Sie die Position des Inhalts auf absolut:

generasacodicetagpre.

Ich weiß nicht, ob das nur für mich wäre, aber wenn nicht das ist der Fix!

auch Da der Hintergrund fixiert ist, bedeutet dies, dass Sie einen "parallaxen" -Effekt haben!Jetzt hat diese Person nicht nur gelehrt, wie man einen verschwommenen Hintergrund macht, aber es ist auch ein Parallaxe-Hintergrundeffekt!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top