Ich habe vor einigen Tagen an einem Kundenprojekt gearbeitet und wollte eine gewisse Wirkung auf ein <img>. Sehen Sie, Hintergrundbilder können den gewünschten Effekt leicht erzielen background-attachment: fixed;. Damit bleibt ein Hintergrundbild an Ort und Stelle – selbst wenn die Seite gescrollt wird. Es wird nicht allzu oft verwendet, daher kann der Effekt ungewöhnlich und auffällig aussehen, insbesondere wenn er sparsam verwendet wird.










Ich habe einige Zeit gebraucht, um herauszufinden, wie ich den gleichen Effekt nur mit einem Inline-Bild und nicht mit einem CSS-Hintergrundbild erzielen kann. Dies ist ein Video des Effekts in Aktion:






you are watching: Die Suche nach einem festen Hintergrundeffekt mit Inline-Bildern | CSS-Tricks

Der genaue Code für die obige Demo ist in diesem Git-Repository verfügbar. Beachten Sie, dass es sich um ein Next.js-Projekt handelt. Wir kommen gleich zu einem CodePen-Beispiel mit rohem HTML.

Warum verwenden <img> anstatt background-image?

Es gibt eine Reihe von Gründen, warum ich dies für mein Projekt wollte:

  • Es ist einfacher, faules Laden (zB <img loading="lazy"… >.
  • Es bietet eine bessere SEO (ganz zu schweigen von der Zugänglichkeit), dank alt Text.
  • Es ist möglich zu verwenden srcset/sizes um die Ladeleistung zu verbessern.
  • Es ist möglich, die zu verwenden <picture> -Tag, um die beste Bildgröße und das beste Format für den Browser des Benutzers auszuwählen.
  • Es ermöglicht Benutzern, das Bild herunterzuladen (ohne auf DevTools zurückzugreifen).

Insgesamt ist es besser, das Image-Tag so weit wie möglich zu verwenden, insbesondere wenn das Bild als Inhalt und nicht als Dekoration betrachtet werden könnte. Also landete ich bei einer Technik, die CSS verwendet clip-path. Dazu kommen wir gleich, gleich nach dem ersten Blick auf die background-image Methode für einen schönen direkten Vergleich beider Ansätze.

1. CSS verwenden background-image

Dies ist die „ursprüngliche“ Methode, um einen festen Scroll-Effekt zu erzielen. Hier ist das CSS:

.hero-section {
  background-image: url("nice_bg_image.jpg");
  background-repeat: no-repeat;
  background-size: cover;
  background-position: center; 
  background-attachment: fixed;
}

see more : Project Snow: Side by side with waifu, storming the front lines

Aber wie wir gerade gesehen haben, ist dieser Ansatz für einige Situationen nicht ideal, da er auf dem CSS beruht background-image -Eigenschaft, um das Bild aufzurufen und zu laden. Das bedeutet, dass das Bild technisch nicht als Inhalt angesehen wird – und daher von Screenreadern nicht erkannt wird. Wenn wir mit einem Bild arbeiten, das Teil des Inhalts ist, sollten wir es wirklich zugänglich machen, damit es eher als Inhalt denn als Dekoration konsumiert wird.

Ansonsten funktioniert diese Technik gut, aber nur wenn das Bild die gesamte Breite des Ansichtsfensters überspannt und/oder zentriert ist. Wenn Sie ein Bild wie im Beispiel rechts oder links auf der Seite haben, werden Sie auf eine ganze Reihe von Positionierungsproblemen stoßen, weil background-position ist relativ zur Mitte des Ansichtsfensters.

Um es zu beheben, sind einige Medienabfragen erforderlich, um sicherzustellen, dass es auf allen Geräten richtig positioniert ist.

2. Verwenden des clip-path Trick auf einem Inline-Bild

Jemand auf StackOverflow hat das geteilt clip-path Trick und es erledigt die Arbeit gut. Sie können auch weiterhin die<img> Tag, der, wie oben beschrieben, unter bestimmten Umständen von Vorteil sein kann, insbesondere wenn ein Bild Teil des Inhalts ist und nicht nur Dekoration.

Hier ist der Trick:

.image-container {
  position: relative;
  height: 200px;
  clip-path: inset(0);
}

.image {
  object-fit: cover;
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}

see more : CM Yogi gab Anweisungen: Nächtliche Ausgangssperre strikt einhalten, Überwachungsausschüsse sollten Tür-zu-Tür-Umfragen durchführen – News 2022

Testen Sie es in Aktion:

Bevor wir dieses Snippet überall verkleben, hat es seine eigenen Nachteile. Zum Beispiel fühlt sich der Code an etwas langatmig für mich für einen so einfachen Effekt. Aber noch wichtiger ist die Tatsache, dass die Arbeit mit clip-path hat auch einige Implikationen. Zum einen kann ich nicht einfach klatschen border-radius: 10px; drin, wie ich es im vorherigen Beispiel getan habe, um die Ecken des Bildes abzurunden. Das wird nicht funktionieren – es erfordert abgerundete Ecken aus dem Beschneidungspfad selbst.

Ein weiteres Beispiel: Ich weiß nicht, wie ich das Bild positionieren soll innerhalb das clip-path. Auch dies könnte eine Frage des Wissens sein clip-path wirklich gut und zeichnen Sie es dort, wo Sie es brauchen, oder beschneiden Sie das Bild selbst nach Bedarf im Voraus.

Gibt es etwas besseres?

Ich persönlich habe es aufgegeben, den festen Scroll-Effekt für Inline-Bilder zu verwenden, und verwende wieder ein CSS-Hintergrundbild – was, wie ich weiß, etwas einschränkt.

Haben Sie jemals versucht, dies zu erreichen, insbesondere mit einem Inline-Image, und es gut geschafft? Ich würde gerne hören!

seo marketing wordpress seo seo hosting seo and marketing word press seo wordpress and seo wordpress marketing hosting seo seo press pro market seo seo & marketing seo e marketing e marketing seo seo pro wordpress marketing & seo seo di wordpress wordpress seo host hosting and seo wordpress hosting seo wordpress seo wordpress wordpress for marketing seo press wordpress marketing for seo

The source: https://nguyendiep.com
Category: Marketing

Similar Posts

Leave a Reply

Your email address will not be published.