Mit CSS Hover-Effekt zum Bildwechsel + Audio mit JS

image
image

Die Idee zwei Bilder hintereinander und somit das nächst Bild erst mit überfahren der Maus sichtbar ist. Also ein Bild zum anderen. Das ist im Netz den Begriffen wie 'CSS Bild Hover-Effekt' zu finden. So einfach und leicht ist da der Durchblick nicht. … Das geht so mit CSS + HTML. Hier ist das nun ganz kurz auseinandergelegt. Und zwar so, dass dann dem Bild keine Umrandung folgt und gültigen HTML. Das ist erst mal Mithilfe von Internet-Freund! – dem ich so auch mein Dankeschön kundtun darf. Wie auch das mit dem Audio + JS, s. im Tab 8.

Hiesig Beispiele

Tab 1: CSS Hover Effekt und HTML das Bild
Tab 2: Zur Position der Bilder! – so sind die Bilder nach rechts oder links zu floaten.
Tab 3: Text zwischen die zwei Bilder + dasselbe durch opacity zum langsamen Übergang.
Tab 4: transform: rotateY(720deg); und drittes Bild zwischen die zwei Bilder. – wozu? + Drehende Icons: 10-Fache Drehung…
Tab 5: Den Hover-Effekt stylen mit @keyframes. Das ist dann für mehrere Bilder + Im Mouseover bleibt das Bild am Ende stehen.
Tab 6: Ein Bild durch Mouseover einblenden und im Anklicke dann das andere.  Hier ist das im Bspw das Widget 'Suche' re. Seitenleiste.
Tab 7: Worauf bei so unterschiedlichen SVG-Bilder zu achten ist. + So ein Zeiger zur Bildbeschriftung.
Tab 8: Das Audio mit Hover starten.
Tab 9: Das Audio und die Browser.

 

1

CSS Hover Effekt und HTML das Bild

Das ein Bild zum anderen Bild in von bspw. Erst mal ist im Customizer die Class. Das ist für das HTML dann die Class image-mouseover.

CSS, die Attributwerte individuell

.image-mouseover {
position: relative;
width: auto;
height: auto;
float: left;
margin: 0 15px 15px 0;
}

.image-mouseover .before {
z-index: 1;
}

.image-mouseover:hover .after {
display: block;
}

.image-mouseover .after {
display: none;
position: absolute;
z-index: 2;
top: 0;
left: 0;
}

Dank an Kevin P.

HTML, die Attributwerte dann Individuell

<div class="image-mouseover"><img class="before alignnone" style="margin: 10px 20px 10px 10px;" src="https://../apfel.svg" alt="image" width="120" height="150" />
<img class="after alignnone" style="margin: 10px 20px 10px 10px;" src="https://../afpel-wurm.svg" alt="image" width="120" height="150" /></div>

Dank an Kevin P.

2

Die Bilder nach links oder rechts floaten!

image
image

Das nun ist recht lehrreich. Die Bilder sind nämlich zu floaten. Hier die zwei Bilder sind ∴nicht∴ mit style="float: right;". So der Fehler ist hier im Mouseover Bild rechts zu sehen.

Darum  floaten! – dadurch haben die beiden Bilder Position und sind nicht mit margin auszugleichen.

  • Die margin bei den Bildern sind nur für den Textabstand zum Bild oder so zum Rand. So ist auch das Bild mittig auszurichten, denn ein center gibt es hier nicht.
  • Zum Zentrieren s.  hier im 'Tab 8' weiter unten der Überschrift '… Dazu die Animation auch zentrieren?'
Die Bilder floaten:
  • style="float: left;"
  • style="float: right;"

Hier ist das durch Elementname div im Attribut style als Attributwerte … wie hier zu sehen in der Fußleiste.

… und so ist das HTML von bspw hier der Fußleiste: 

<div class="image-mouseover" style="float: left;">

<img class="before grayscale alignnone" style="margin-right: 10px;" src="https://..Das-Foto.png" alt="image" width="125" height="auto" />

<img class="after alignnone" style="margin-right: 10px;" src="https://..Das-Foto.png" alt="image" width="125" height="auto" />

</div>
Text Text Text.

<div class="image-mouseover" style="float: right;">

<img class="before alignnone" style="margin-left: 10px;" src="https://..web5apfel.svg" alt="image" width="120" height="150" />

<img class="after alignnone" style="margin-left: 10px;" title="Text Text Text." src="https://..apfelwurmi.svg" alt="image" width="120" height="150" />

</div>
<p style="text-align: right;">Text Text Text.</p>
Gleich wie oben des HTML ist nun das erste Bild mit Class grayscale

image

image

Also ist im Customizer oder so Child-Theme eine Class zu erstellen.

CSS

/* grayscale(wert) – Graustufe */
.grayscale {
-webkit-filter: grayscale(1);
filter: grayscale(1);
}

HTML

<div class="image-mouseover" style="float: left;>

<img class="before grayscale alignnone" style="margin-right: 10px;" src="https://..Foto.jpeg" alt="image" width="125" height="auto" />

<img class="after alignnone" style="margin-right: 10px;" src="https://..Foto.jpeg" alt="image" width="125" height="auto" />

</div>
<p style="clear: both;">Text Text Text.</p>

Weiter: So allein mit <div class="image-mouseover">, also ohne style="float: left;", ist zu bemerken, dass der Text nicht um das Bild fließt und der Hover die ganze Breite ausfüllt. Somit ist es auch schöner, das Floaten anzuwenden, wenn der Text darunter zu sein hat. Dann aber ist für den Text, der folgt:

  • <p style="clear: both;">Text Text Text</p>

Zudem ist solchem gleichen Bild, das nur der Unterscheidung von S/W auf farbig eine andere Class im bspw. Somit ist dann nur ein Bild anstatt der zwei wie hier oben. Dasselbe mit Audio ist im …
→ Tab 8.

CSS die Class hoverbild

.hoverbild img {
display: block;
width: 450px;
height: auto;
box-shadow: 0 0 15px 0 rgba(0, 0, 0, .5);
filter: grayscale(1);
transition: 0.5s;
}

.hoverbild:hover img {
filter: grayscale(0);
}

HTML

<div class="hoverbild">
<img src="https://..iStockphoto-schul.svg">

</div>

Also so ähnlich wie schon obig, S/W zu farbig:

3

Text zwischen die zwei Bilder

Dem Beispiel ist da der Text zwischen die zwei Bilder zu setzten. … Mouseover erst mal das Bild.

Farbroller1b

d.h. hier in 8-Tage: 17 x
… ich danke ziemlich! –.

image

Weiter des Beispiels. Die beiden Bilder sind SVG. Somit ist das eine Bild im Boxy-SVG zu arrangieren, wie das zweite Bild so mit Hintergrund zu erstellen.

Folgend nun das HTML, wobei da mittig der Text in blau* ist.

*Das da mit den Shortcodes dabei, das geht hier Beispiels aus dem Plug-in 'Add-on das Statify Widget +' hervor.

<span style="font-size: 14px;"><strong>Hallo! – besuch ebenda…</strong></span>

<div class="image-mouse" style="margin-top: -15px;">

<img class="before alignnone" src="https:../farbroller1b.svg" alt="Farbroller" width="" height="" />
<p style="margin-top: -68px; font-size: 15px; text-align: right;">[statify-count prefix="d.h. hier in 8-Tage:" suffix="x"]
… ich danke ziemlich! –.</p>
<img class="after alignnone;" src="https://../farbroller-mit-hintergrund.svg" width="" height="" />

</div>

Natürlich ist zur obigen Class image-mouse diese auch zu erstellen. Die ist ähnlich wie das vorherige Beispiel:

CSS

.image-mouse {
position: relative;
width: 170px;
height: 53px;
float: left;
margin: 5px 10px 10px 0;
}

.image-mouse .before {
z-index: 1;
}

.image-mouse:hover .after {
display: none;
}

.image-mouse .after {
display: block;
position: absolute;
z-index: 2;
top: 0;
left: 0;
}

Na ja! – so ganz zufrieden kann man hier dem ruckzuck des Bilds aus- und einblende nicht sein.

Darum folgen wir einem Link im Titel …

Demo 1 – Ein Bild zum anderen beim Schweben

Beispiel w. o., aber mit opacity. So nimmt das Auge den Farbroller wie nach li / re gescrollt wahr.

d.h. hier in 8-Tage: 17 x
… ich danke ziemlich! –.

auto


Der Autor dort der Website arbeitet mit ID anstatt mit Class. Daher … das Bspw so:

HTML

<div id="cf" style="float: left;">

<img class="bottom alignnone" src="https://../farbroller1b.svg" alt="" width="300" height="89" />
<p style="margin-top: -18px; font-size: 15px; text-align: right;">d.h. hier in 8-Tage: 17 x
… ich danke ziemlich! –.</p>
<img class="top alignnone" style="margin-top: -70px;" src="https://../farbroller1-dicht-hintergrund.svg" alt="" width="300" height="89" />

</div>

CSS

Das mit dem float: left; und die Margins sind hier auskommentiert. So ist es da auch zur Anwendungen des Codes zur individuellen Auszeichnung im HTML.

#cf {
position:relative;
width:170px;
height:53px;
/*float: left;*/
/*margin: -15px 10px 10px 0;*/
}

#cf img {
position:absolute;
left:0;
-webkit-transition: opacity 0.3s ease-in-out;
-moz-transition: opacity 0.3s ease-in-out;
-o-transition: opacity 0.3s ease-in-out;
transition: opacity .3s ease-in-out;
}

#cf img.top:hover {
opacity:0;
}

So ohne CSS-Schablonen wäre das alles schon zu kompliziert … und man ist sehr froh über Websites-Engagement.

4

Drittes Bild zwischen die zwei Bilder

… mit so Beispiel von solcher Animation:

 

Die Animation mit zwei Bilder.

Die Animation mit drei Bilder.



… das SVG-Bild erst mal zerlegen. Das sind dann so drei Teile. Das Erste in Original, das Zweite ohne Propeller und mit Hintergrund. Das dritte Bild der Propeller und ohne Hintergrund.

  1. Das erste Bild ist, welches erst mal sichtbar ist.
  2. Das zweite Bild ist ohne Propeller mit Hintergrund und so erst beim Überfahren mit der Maus sichtbar eben so durch den Hover. Durch das, dass das zweite Bild mit Hintergrund ist, so ist das Erste abgedeckt.
  3. Zugleich wird der Propeller vom dritten Bild visuell und ersetzt den Propeller vom ersten Bild. Und dieser soll sich nun auch drehen.

Das SVG ist von 'Clker-Free-Vector-Images' auf pixabay.

rechteck-grauEs funkt auch so mit nur dem ersten und dritten Bild, die beide ohne Hintergrund sind. Die Animation wirkt aber viel besser mit den drei Bildern. Siehe hier nochmals oben.

Das CSS
  • Das CSS ist erst mal dasselbe wie ganz oben die zwei Bilder hintereinanderlegen im Tab 1 und Titel 'CSS Hover Effekt und HTML das Bild'.
  • Im Zweiten ist eine weitere Class zu erstellen. Die ist für das Rotieren der Propeller.

CSS

/* Rotate horizontal=rotateY, Class myrot  */
.myrot:hover {
-moz-transition: all 1s ease;
-o-transition: all 1s ease;
-ms-transition: all 1s ease;
transition: all 1s ease;
-webkit-transform: rotateY(720deg);
-moz-transform: rotateY(720deg);
-o-transform: rotateY(720deg);
-ms-transform: rotateY(720deg);
transform: rotateY(720deg);
}
Animation mit zwei Bilder
  • Da ist im zweiten Bild, das auch mit <img class="after…  dann die Class Namens myrot dabei.

HTML bspw.

<div class="image-mouseover" style="float: right;">

<img class="before alignnone" style="margin-top: -18px;" src="https://../geek.svg" alt="" width="200" height="auto" />
<img class="after myrot alignnone" style="margin-top: -18px;" src="https://../geek-propeller.svg" alt="" width="200" height="auto" />

</div>
Animation mit drei Bilder
  • Hierbei ist dem mittleren Bild die die Class after
  • und dem folgenden Bild die Class aftermyrot.

HTML bspw.

<div class="image-mouseover" style="float: right;">

<img class="before alignnone" style="margin-top: -18px;" src="https://../geek.svg" alt="" width="200" height="auto" />
<img class="after alignnone" style="margin-top: -18px;" src="https://../geek-ohne-propeller-mit-hintergrund.svg" alt="" width="200" height="auto" />
<img class="after myrot alignnone" style="margin-top: -18px;" src="https://../geek-propeller.svg" alt="" width="200" height="auto" />

</div>

Danke für deine Aufmerksamkeit! – :-)

… Das Tun für die Website 🖇

Das HTML für da obig so bspw.

 <img class="myrot alignnone" style="margin-left: 160px; margin-bottom: -10px; margin-top: 15px;" src="https://../geek.svg" alt="" width="100" height="auto" />

Von Oliver-Gast-icon so sehr Ausgesuchtes

Drehende Icons:
10-Fache Drehung
(3600 Grad, 10 secunden)

CSS

img.myrotes {
-webkit-transition: -webkit-transform 10s ease-out; /* Saf3.1+, Chrome */
-moz-transition: -moz-transform 10s ease-out; /* FF3.5+ */
-o-transition: -o-transform 10s ease-out; /* Opera */
transition: 10s ease-out;
}

img.myrotes:hover {
-webkit-transform: rotate(3600deg); /* Saf3.1+, Chrome */
-moz-transform: rotate(3600deg); /* FF3.5+ */
-o-transform: rotate(3600deg); /* Opera */
transform: rotate(3600deg);
}

HTML

<img class="myrotes aligncenter" src="https://..Clker-Free-Vector-Images-cd-bplaced-2.svg" alt="" width="300" height="300" />

Dank an Oliver Gast!

5

Den Hover-Effekt stylen mit @keyframes

HTML

<div class="animation"></div>

← …Mouseover hier mal 

Das CSS …

Siehe
jsfiddle.net/Pixelbart.

Das war mir zum Einstieg mit den @keyframes sehr hilfreich.

Obiges Beispiel mit dem Eichkätzchen  ist der Bildwechsel mit 0%, 20% 35% 50% 65% 80% und 100%. Die animation-duration: 4s;, das ist die Zeitdauer der Animation. Gleich sind auch mehr oder weniger Bildwechsel möglich, wie 0% 14% 28% 42% 56% 70% 85% 100%. Die animation-duration: 5s; evtl. anpassen.

  • Hinzuweisen ist da noch auf animation-iteration-count. Das ist dann so für die Wiederholungen. Usw. Und dort ist das alles erst mal der li. Seitenleiste unter 'Eigenschaften' …
Im 'Mouseover' bleibt das Bild am Ende stehen

Somit ist das für so Animation wie auch hier oben zu sehen wie für das Feedback-Plug-in der Roboti.

Das letzte Bild bleibt so stehen, solang Mouseover. Da ist wieder die Seite animation-fill-mode. Relevant ist dort nun der Code animation-fill-mode: forwards;.

Siehe jsfiddle.net/Pixelbart/. Dort ist dann das CSS auch.

Die Animation zum Ersten 'Mouseover' ruckelfrei

Das nun Folgende funkt nicht so gut, aber ich lass das mal so stehen als Merkzettel.

…funkt nicht

Wenn man zum Ersten so Animation im Mouseover, da ist das meist nicht ruckelfrei. Hierzu oben die Animation mit dem Eichhörnchen, da ist das evtl. schon aufgefallen. Nächst Beispiel mit dem Roboti ist das so ausgebügelt. Da ist schon JavaScript gefragt. Es geht aber auch so mit CSS, s. Preload für die in Keyframes CSS-Hintergrundbilder.

Das HTML erhält noch eine Class, hier namensgebend ’slides'

<div class="container slides">
<div class="animation2"></div>
</div>

CSS die Class mit dem Code von VilleKoo

.slides {
background: url('https://..roboti-maske.svg') no-repeat -9999px -9999px,
url('https://..roboti-soso.svg') no-repeat -9999px -9999px,
url('https://..roboti.svg') no-repeat -9999px -9999px;
animation: images 9s linear 0s infinite alternate;
}

 

6

Bspw für das Widget 'Suche'

Im Anlauf das Search Widget designen.

Mit dem CSS u. HTML s. Tab 1:

Widgest-Suche
Das Bild als Double. Mouseover die Ameise.

image

image

Für Obiges, das HTML
<img class="wp-image-197933" src="https://..Widgest-Suche.png" alt="Widgest-Suche" width="300" height="144" /> Das Bild als Double

<div class="image-mouseover">

<img class="before alignnone" style="margin-top: -155px; margin-left: 170px;" src="https://..acharyaniraj1999-die-ameise-2.png" alt="image" width="125" height="auto" />

<img class="after alignnone" style="margin-top: -88px; margin-left: 170px;" title="… Hurra da bin ich!" src="https://..acharyaniraj1999-die-ameise.svg" alt="image" width="125" height="auto" />

</div>
Ganz anders und sehr anspruchsvoll
ist das im Folgenden

Ein Bild durch Mouseover einblenden und im Anklicke dann das andere.  Hier ist das im Direkten im Widget 'Suche' re. Seitenleiste.

CSS
.widget .search-field {
background-image: url(https://..acharyaniraj1999-die-ameise-2.png);
background-size: auto 70%;
background-repeat: no-repeat;
background-position: 130% 140%;
transition: 0.2s;
}

.widget .search-field:hover {
background-position: 70% 140%;
opacity: 1;
}

.widget .search-field:focus,
.widget .search-field:active {
background-position: 60% 140%;
background-image: url(https://..acharyaniraj1999-die-ameise.svg);
}

Mein Dank wieder mal an Internet-Freund.

So als Merkzettel:

  • background-size: auto 70%; die Eigenschaft und dem Wert definiert die Größe eines Hintergrundbildes. Die sind komplett festzulegen oder nur teilweise, um so das eigentliche Seitenverhältnis zu erhalten.
  • background-repeat: no-repeat; die Eigenschaft und infolge der Wert bestimmt, ob und wie Hintergrundbilder wiederholt werden.
  • background-position: 130% 140%; die Eigenschaft mit Wert bestimmt die Position des Hintergrundbildes.
  • transition: 0.2s; die Eigenschaft ist eine Kurzschreibweise für 'transition-property', 'transition-duration', 'transition-timing-function' und 'transition-delay'.
  • opacity: 1; Die CSS Eigenschaft gibt die Transparenz eines Elements an, d. h. den Grad, zu welchem der Hintergrund des Elements überlagert wird.

https://developer.mozilla.org/de/

7

Das, worauf so SVG-Bilder zu achten ist

Das, worauf so SVG-Bilder zu achten ist, das ist der Hintergrund.

Das Erste ist nun mal so visuell und das Zweite nicht sichtbar. Das Zweite SVG gehört normal mit Hintergrund, da so ohne Hintergrund dann auch das erste Bild mit sichtbar ist. Zu erkennen ist das auch eingangs oben dem Apfellogo, die SVGs sind aber fast identisch. Das zweite SVG ist da ohne Hintergrund und dort ist der Unterschied der Bilder nicht so groß. – gefällt auch?

Weiter nun für das Bild mit Hintergrund, das für class="after". Bspw im Boxy-SVG-Editor das 'Rektangel' darüber legen, die Farbe dann dem Hintergrund passend und das Rechteck in den Hintergrund tun.

Das Beispiel ist CSS wie in der Einführung hier ganz oben der Website, also mit .image-mouseover

Das SVG-Bild in class="after" ohne Hintergrund.

… vs. class="after" das SVG mit Hintergrund.

 

… oder auch so Kreativ?

 

So ein Zeiger zur Bildbeschriftung

Das Bild ist so wie gehabt zu beschriften.

  • Das funkt im 'Text Widget' nicht mit dem 'Individuelles HTML' Widget. Auch nicht, wenn man den Code vom Widget 'Text' in das Widget 'Individuelles HTML' kopiert.
  • Im Zweiten ist dem Bild auch das width wichtig, also wie ..alt="image" width="500" height="auto" />. Das ist nämlich auch für das [caption id="" align="alignnone" width="500"]. Ohne Attributwert so wie width="auto" ist die Beschriftung nicht da bzw. gelöscht.

8

Audio mit Hover starten

Schon wahr, dass so Berieselung durch Musik allein beim Besuch einer Website meist nicht erwünscht bzw. angebracht ist. Aber das bei so musische Websites auch ganz gut ankommen kann! Und so im selben Mouseover wie hier, dass ganz direkt der Besucher selbst tut, das dann immer sehr gut ist.

Zwei so Beispiele:
  • Im Esten ist da Mouseover, das Audio an, dann beim abgehen vom Hover das Audio aus. Bei erneutem Mouseover ist der Neustart.
  • Im Zweiten dann läuft das Lied so lange, bis es zu ende ist. Bei erneutem Mouseover ist der Neustart.
Im Ersten siehe jsfiddle.net/Pixelbart

… Das ist sehr gut für so Sequenzen wie meist hier der Website Seitenleisten zu sehen ist. Im Beispiel sind das so Tierstimmen.

Hier oben des Codes von Pixelbart ist nun auch so JavaScript mit dabei! Für auf die Schnelle funkt das auch über die functions.php.

Das JavaScript via functions.php

/**
* JavaScript inline hinzufügen. Immer vor dem schließenden </body>, das ist für die Performance.
* CSS darf auch im wp_head. JS immer im wp_footer.
*/
add_action( 'wp_footer', function() {
?>
<script>
// Audio startet mit onmouseover
(function($) {
"use strict";

var WegerlHoverAudio = {
init: function() {
this.initHoverAudio();
this.initHoverIoAudio();
},
initHoverAudio: function() {
if ( !$("[data-hoveraudio]").length) { 
return;
}

$("[data-hoveraudio]").hover(function() {
$(this).find("audio")[0].play();
}, function() {
$(this).find("audio")[0].load();
});
},
initHoverIoAudio: function() {
if ( !$("[data-hoverioaudio]").length) {
return;
}

$("[data-hoverioaudio]").hover(function() {
$(this).find("audio")[0].play();
});
},
};

$(function() { // Alternative für: $(document).ready(function() {});
WegerlHoverAudio.init();
});

})(jQuery);
</script> 
<?php
});

Die Snippets zur functions.php ab ins Plug-in Code Snippets.
Mit Obhut der Codes! – so bleibt das auch nach Theme-Update.
Oder Childs Theme? – zum Beitrag mit Child Theme Generator.

Mit der Eingabe des JavaScript + jQuery ist der Website ein neues Attribut dabei, data-hoveraudio="".

Das HTML

<div class="hoverbild" data-hoveraudio=""><img src="https://../photo-1492684223066-81342ee5ff30.jpg" />
<audio><source src="https://../Jefferson_Airplane_-_Somebody_to_Love_Choco_Criminals_Remix-online-audio-converter.com_.mp3" /></audio></div>

Zu beachten ist …

Im Folgenden das Attribut data-hoveraudio="" und das Start-Tag <audio>. Wenn die Maus das Bild berührt, wird das Audio auf play() gesetzt. Gehst du mir der Maus da weg, dann wird der Player neugeladen und so zurückgesetzt.

Wenn denn so class-Attribut mit so Wert hoverbild dabei ist, so ist dann das Attribut data-hoveraudio="". Also wie <div class="hoverbild" data-hoveraudio="">. Sonst so ohne class heißt das HTML <div data-hoveraudio=""> und das Audio funkt.

<div data-hoveraudio="">→ Im Text ist Musik! ←<audio><source src="https://../Remix-online-audio-converter.com.mp3" /></audio></div>
→ Im Text ist Musik! ←
Und das funkt für so Kombinationen …
<div class="image-mouseover" data-hoveraudio="">

<img class="before alignnone" src="https://..unDraw-happy_music-frei.svg" alt="image" width="500" height="auto" />
<img class="after alignnone" title="… happy musik!" src="https://..unDraw-happy_music-frei3a.svg" alt="image" width="500" height="150" />

<audio><source src="https://..Turdus_merula_Co0020_02_short.mp3" /></audio>

</div>
Dazu die Animation auch centrieren?

Durch style="margin-left: 65px;". So ist das hier mittig. So Center geht nicht. Und wenn die beiden Bilder mit aligncenter – dann muss das wieder mit margin ausgeglichen werden. Wie im Tab 2 zu lesen gibt es das style="float: left; und style="float: right;.

Beide Bilder in einem zentrieren:

  • <div class="image-mouseover" style="margin-left: 65px;" data-hoveraudio="">

Oder beide Bild mit Attributwert margin.
Der gesamte Code im HTML:

<div class="image-mouseover" data-hoveraudio="">

<img class="before alignnone" style="margin-left: 90px;" src="https://../unDraw-happy_music-frei.svg" alt="image" width="250" height="auto" />
<img class="after alignnone" style="margin-left: 90px;" title="… happy musik!" src="https://../unDraw-happy_music-frei3a.svg" alt="image" width="250" height="auto" />

<audio><source src="https://../Turdus_merula_Co0020_02_short.mp3" /></audio>

</div>

SVG unDraw illustrations var.
Audio s. im Tierstimmenarchiv
Sound ⊕ Mouseover ↓.

image
image

Im Zweiten siehe jsfiddle.net/Pixelbart

Im Zweiten ist auch durch Mouseover der Play-Button an. Da läuft das Lied so lange, bis es zu Ende ist (das sind hier 38 sec.) und startet erst wieder durch Mouseover.

Dies ist auch für so kurze Musiksequenzen, da ja der Besucher das so nicht selbst abstellen kann. Aber so was ist eben Geschmacksache auch. Hingegen bei so Musik ist es immer so viel schöner auszuklingen, als es durch abgehen vom Hover so abgehackt ist. Und im potenziell den Ton aus ist jedem Gerät.

Das, was im Ersten ist und dazu das im Zweiten von obig JavaScript + jQuery ist zur Unterscheidung eine kleine Anpassung. Von hoveraudio zu bspw hoveraudio-2.

(function($) {
"use strict";

const WegerlHoverAudio = {
init: function() {
this.initHoverAudio();
},
initHoverAudio: function() {
if ( !$("[data-hoveraudio-2]").length) {
return;
}

$("[data-hoveraudio-2]").hover(function() {
$(this).find("audio")[0].play();
});
},
};

$(function() {
WegerlHoverAudio.init();
});

})(jQuery);

… so auch im HTML mit dazu wie des Obigen bspw der Class myrotes, s. im Tab vier.

<div data-hoveraudio-2="">

<img class="myrotes alignnone" src="https://../Clker-Free-Vector-Images-cd.svg" alt="" width="200" height="200" /></a><audio><source src="https://../local-forecast_EratENYy.mp3" /></audio>

</div>

… und

<div data-hoverioaudio="">

Tja, das wars schon!<audio><source src="https://wegerl.at/wp-content/uploads/2021/02/salamisound-8112066-einmotoriges.mp3" /></audio>

</div>

Tja, das wars schon!

9

Das Audio und die Browser

Zum Abspielen von Audio muss des Besuchers Browser das auch so erlauben. Chrome ist das so voreingestellt. Nach der Einstellung spielt das Audio mit überfahren der Maus auch ab. In Firefox funkt das sonst auch erst mal mit einem Klick in die Website, gleich wie in Chrome. Des Letztren ist in Safari das aber die Bedingung, da sonst das Audio gar nicht spielt. Und der Einstellung funkt das dann auch ohne vorher in die Seite zu klicken.

Browser Chrome

Einstellungen → Datenschutz und Sicherheit → Zusätzliche Inhaltseinstellungen → …

Audio-Chrome

Browser Firefox

Einstellungen → Datenschutz und Sicherheit → Automatische Wiedergabe → …

Audio-Firefox

Browser Safari

Einstellungen → Websites → Automatische Wiedergabe → …

Audio-Safari

Links

css3.bradshawenterprises.com
10 Simple CSS Hover Effects

moz://animation-fill-mode

Preload für die in Keyframes CSS-Hintergrundbilder

… und ein Plug-in
Hover-Effekte – Erstellen Sie ganz einfach einen Hover-Effekt

… Und wie ist dein Erfolg des Beitrags?