2016-10-02 3 views
0

Ich habe ein Bild, das ich vergrößern möchte, wenn ich den Mauszeiger darüber bewege, aber ich möchte den Bereich, den der Hover akzeptiert, nicht vergrößern. AKA, wenn ich darüber schwebe. Ich möchte es nicht machen, also musst du deine Maus weiter wegbewegen, um das Element zu verlassen.Element auf Hover erhöhen, aber ursprünglichen Hover-Bereich beibehalten

Ich habe nicht den Luxus, den HTML-Code zu ändern oder JavaScript zu verwenden, da ich die CSS einer Seite modifiziere.

Dies sind die Elemente, mit denen ich arbeite.

Ich habe zahlreiche Kombinationen von :: vor und Selektoren ausprobiert, um es zur Arbeit zu bringen. Oftmals hinterlässt das Ergebnis nur ein Flackern.

Ist das mit reinem CSS möglich?

Antwort

0

Ein möglicher Weg position: relative; und z-index: -1; auf .image, und halten die :hover pseudo-Klasse auf .link zu verfolgen verwendet. Ich habe hier eine Demonstration eingerichtet: http://codepen.io/anon/pen/BLwPEY

Ich nehme einige Freiheiten mit den Stilen, aber einfach zu Demonstrationszwecken.

Ich bin mir nicht sicher, was das Ergebnis sein soll (z. B. Bild bleibt zentriert oder genau wie die Bildgröße ändert), aber das kann ein Anfang sein. Beachten Sie, dass der Effekt (zumindest für mich) glitschig zu sein scheint, wenn Sie über oder unter den Mauszeiger treten - wenn Sie den Mauszeiger schnell verlassen und dann am Rand des Bildes anhalten, scheint der Schwebezustand zu bestehen. Nicht sicher, warum, und ich habe mehrere verschiedene Dinge ausprobiert, um es ohne Erfolg zu beheben.

Wie auch immer, es könnte ein Ort sein, um zu beginnen.

+0

Das funktioniert großartig, aber leider ist der Z-Index eines der Dinge, die ich beim Schweben erhöhen möchte, also ist das ein Nein. : \ –

+0

Das wäre im Vorfeld eine nützliche Information gewesen. Vielleicht können Sie uns eine bessere Vorstellung davon geben, was Sie tatsächlich tun müssen. In beiden Fällen können Sie den Z-Index von '.link' und von' .image' bei Bedarf auf hover erhöhen. Aber wenn Sie '.image' benötigen, um einen höheren Z-Index als den von' .link' zu haben, haben Sie möglicherweise kein Glück. –

+0

Danke, aus irgendeinem Grund mein Denkprozess war Z-Index von -1 war speziell. Das funktioniert jetzt perfekt! Wird der Z-Index auf weniger als den übergeordneten Wert gesetzt, wird der Schwebezustand immer deaktiviert? –

0

Versuchen Sie, das Bild zu vergrößern, wenn Sie den Mauszeiger über den Anker bewegen und sicherstellen, dass der Durchmesser des Ankers gleich bleibt und dass der Überlauf sichtbar ist.

+0

Ich versuchte das mit dem folgenden CSS, aber es hatte keine Wirkung. Richte ich den Überlauf nicht richtig ein? .data.image .link.sort { Überlauf: sichtbar; Breite: 50px! Wichtig; Höhe: 70px! Wichtig; } .data.image.link.sort .image { Breite: 48px; Höhe: 68px; } .data.image.link.sort: hover .image { Breite: 96px; Höhe: 136px; } –

0

Bearbeiten: Sorry, ich habe Ihren Beitrag falsch gelesen und die Tatsache, dass Sie nur CSS verwenden können, verpasst. Ich habe meine Lösung so angepasst, dass sie innerhalb Ihrer bestehenden Einschränkung funktioniert. Die Technik ist ähnlich, die Eltern a verwendet die z-index zu sein "über" img. Ich fügte einen Rand zum a hinzu, also können Sie sehen, dass es die gleiche Größe sogar mit der Vergrößerung des Kindes img bleibt, wenn Sie über a schweben.

Funktioniert das für Sie?

a.link > img.hover-info { 
 
    width: 135px; 
 
    height: 155px; 
 
    transition: 500ms; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    z-index: -999; 
 
} 
 

 
a.link { 
 
    display: block; 
 
    width: 135px; 
 
    height: 155px; 
 
    border: 1px solid #000000; 
 
    z-index: 999; 
 
} 
 

 
a.link:hover > img.hover-info { 
 
    width: 270px; 
 
    height: 310px; 
 
}
<table> 
 
    <tbody class="list-item" style=""> 
 
    <tr class="list-table-data"> 
 
     <td class="data number"/> 
 
     <td class="data image"> 
 
      <a class="link sort"> 
 
       <!--What I want to enlarge--> 
 
       <img src="https://en.wikipedia.org/static/images/project-logos/enwiki.png" class="hover-info image"> 
 
      </a> 
 
     </td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

Aber hat nicht OP gesagt "Ich habe nicht den Luxus, den HTML zu ändern"? – Terry

+0

Das würde funktionieren, aber ich kann keine neuen Elemente in den HTML-Code einfügen.Ich habe versucht, dies mit a :: before on .link.sort und after on .data.num zu versuchen, ohne Erfolg. Es scheint, dass der Operator + nicht mit :: before und :: after arbeitet. –

+0

Sorry @trigger_death, ich habe die Einschränkung übersehen, dass Sie den HTML-Code nicht ändern können. Ich habe meine Lösung so aktualisiert, dass sie innerhalb Ihrer Einschränkung funktioniert. Bitte schauen Sie noch einmal, ob das jetzt hilft. –

Verwandte Themen