Reine CSS-Implementierung (kein Skript) Tooltip-Textaufforderungseffekt im HTML-Befehlsstil

Reine CSS-Implementierung (kein Skript) Tooltip-Textaufforderungseffekt im HTML-Befehlsstil

Analysieren Sie den Ausführungsprozess. Bewegen Sie die Maus in den Knoten, um festzustellen, ob der Knoten die Kennung (Klassenname, Attribut usw.) hat, um die Tooltip -Implementierung zu öffnen. Erkennen Sie das Thema und den Ort (Klassenname, Attribut usw.). Blasen generieren/anzeigen. Lernen Sie von anderen.

Schauen wir uns zunächst den Tooltip-Stil von element-ui an

Offensichtlich wird die Position der Blase durch ein JavaScript-Skript hinzugefügt

Lassen Sie uns ohne weiteres einige Erwartungen festlegen. Kein JavaScript erforderlich, reine CSS- Implementierung. Keine Notwendigkeit, neue Elemente hinzuzufügen** (verwenden Sie nach, vor Pseudoelementen)** Keine Notwendigkeit, Klassennamen abzugleichen, verwenden Sie Attributselektoren direkt** ([attr])** Unterstützt Standardstile** (wenn das Tag das Thema oder die Position nicht definiert)** Direktive** (definieren Sie es einfach im Tag und lassen Sie es dann von CSS abgleichen)** Implementieren Sie das Thema und die Position der Blase mit dem Sass- Präprozessor (diejenigen, die es nicht verstehen, können es in CSS konvertieren) Spezifikation der HTML-Definitionsdirektive

Imperative Erklärung

<button tooltip='Ich bin eine Content-Ente' effect='light' placement='top-left'>Oben links</button>
  • Tooltip – der in der Blase angezeigte Inhalt;
  • Effekt – das Thema der Blase (dunkel / hell), standardmäßig dunkel;
  • Platzierung – die Position der Blase relativ zum übergeordneten Element (oben / oben links / oben rechts / rechts / rechts oben / rechts unten …), die Standardeinstellung ist oben;

Schreiben Sie zuerst ein paar Schaltflächen

Der Stil ist von Element-UI inspiriert

<div Klasse="Container">
  <div Klasse="oben">
    <button tooltip="Oben" placement="oben links" effect="hell">Oben links</button>
    <button tooltip="Oben Links Oben Links" placement="top">Oben</button>
    <button tooltip="Oben rechts" placement="oben rechts">Oben rechts</button>
  </div>
  <div Klasse="links">
    <button tooltip="Oben links oben links oben links oben links oben links oben links oben links oben links oben links" placement="left-top">Oben links</button>
    <button tooltip="Links" placement="links" effect="light">Links</button>
    <button tooltip="Links-rechts" placement="links-unten">Unten links</button>
  </div>
  <div Klasse="rechts">
    <button tooltip="Oben rechts oben rechts oben rechts oben rechts oben rechts oben rechts oben rechts oben rechts" placement="right-top">Oben rechts</button>
    <button tooltip="Rechts" placement="rechts" effect="light">Rechts</button>
    <button tooltip="Unten rechts" placement="right-bottom">Unten rechts</button>
  </div>
  <div Klasse="unten">
    <button tooltip="Unten links" placement="unten links">Unten links</button>
    <button tooltip="unten" placement="unten" effect="licht">Unten</button>
    <button tooltip="Unten rechts" placement="unten rechts">Unten rechts</button>
  </div>
</div>

Implementierung der CSS-Kerncodelogik

„Hover“ überwacht die Bewegung der Maus hinein und hinaus, **[tooltip]** passt zu Tags mit diesem Attribut, danach kommt eine Blase, davor ein Dreieck

/* Stimmt mit Elementen mit einem Tooltip-Attribut überein */
[Tooltip]
  Position: relativ;
  /* Standard-Blasenstil */
  &::nach {
    Anzeige: keine;
    Inhalt: Attr (Tooltip);
  }
  /* Dreieck-Standardstil*/
  &::vor {
    Anzeige: keine;
    Inhalt: '';
  }
  /* Bewegen Sie die Maus in dieses Element, um Blasen und Dreiecke anzuzeigen*/
  &:schweben {
    &::nach {
      Anzeige: Block;
    }
    &::vor {
      Anzeige: Block;
    }
  }
}

Jetzt wird es wirksam, wenn Sie die Maus bewegen

Um den Effekt leichter sehen zu können, können im Test die Blasen und Dreiecke standardmäßig auf Block gesetzt werden.

/* Standard-Blasenstil */
&::nach {
  Anzeige: Block;
  Inhalt: Attr (Tooltip);
}

/* Dreieck-Standardstil*/
&::vor {
  Anzeige: Block;
  Inhalt: '';
}

Die aktuelle Wirkung ist wie folgt

Legen Sie den Standardstil von Blasen und Dreiecken fest

Die Kernanzeige ist natürlich auf absolute Positionierung eingestellt

/* Standard-Blasenstil */
&::nach {
  Anzeige: Block;
  Inhalt: Attr (Tooltip);
  Position: absolut;
  Leerzeichen: Nowrap;
  Überlauf: versteckt;
  Textüberlauf: Auslassungspunkte;
  Polsterung: 8px 15px;
  maximale Breite: 200px;
  Rahmenradius: 4px;
  Kastenschatten: 0 10px 20px -5px rgba (0, 0, 0, 0,4);
  Z-Index: 100;
  @extend .tooltip-theme-dark; /* Standarddesign übernehmen (schwarzer Hintergrund und weißer Text) */
 }

/* Dreieck-Standardstil*/
&::vor {
  Anzeige: Block;
  Inhalt: '';
  Position: absolut;
  Rand: 5px durchgehend transparent;
  Z-Index: 100;
  @extend .triangle-theme-dark; /* Standarddesign übernehmen (schwarzer Hintergrund) */
}

Die aktuelle Wirkung ist wie folgt

Passen Sie die Farben des Blasen- und Dreieckdesigns an

Definieren Sie zwei Themen

$weiß: #fff;
$schwarz: #313131;

/* Blasenthema */
.tooltip-theme-dunkel {
  Farbe: $weiß;
  Hintergrundfarbe: $schwarz;
}

.tooltip-theme-light {
  Farbe: $schwarz;
  Hintergrundfarbe: $weiß;
  Rand: 1px durchgezogen $schwarz;
}

/* Dreiecksthema*/
.dreieck-thema-dunkel {
  Rahmenoberseitefarbe: $schwarz;
}

.dreieck-thema-licht {
  border-top-color: $black; /* Im Moment dasselbe wie dunkel*/
}

Blasen- und Dreieckpositionen anpassen (es wird nur eine Richtung angezeigt)

/* Blasenposition */

/*----Vorgesetzter----*/
.tooltip-placement-top {
  unten: berechnet (100 % + 10 Pixel);
  links: 50%;
  transformieren: übersetzen(-50 %, 0);
}

.tooltip-placement-top-right {
  unten: berechnet (100 % + 10 Pixel);
  links: 100 %;
  transformieren: übersetzen(-100%, 0)
}

.tooltip-placement-top-left {
  unten: berechnet (100 % + 10 Pixel);
  links: 0;
  transformieren: übersetzen(0, 0)
}

/* Dreiecksposition */

/*----Vorgesetzter----*/
.dreieck-platzierung-oben {
  unten: berechnet (100 % + 5 Pixel);
  links: 50%;
  transformieren: übersetzen(-50 %, 0);
}

.dreieck-platzierung-oben-links {
  unten: berechnet (100 % + 5 Pixel);
  links: 10px;
}

.dreieck-platzierung-oben-rechts {
  unten: berechnet (100 % + 5 Pixel);
  rechts: 10px;
}

Aufnahmeort, Motiv

Dies ist auch der Kerncode. Verwenden Sie Attributselektoren, um den Wert im Tag abzugleichen, und legen Sie dann verschiedene Stile fest.

Passende Blasen, Dreiecksthemen

&[Effekt="Licht"] {
  &::nach {
    @erweitern .tooltip-theme-light;
  }

  &::vor {
    @erweitern .triangle-theme-light;
  }
}

Ordnen Sie die Positionen von Blasen und Dreiecken zu, 12 Positionen

@each $placement oben, oben rechts, oben links,
rechts, rechts oben, rechts unten,
unten, unten rechts, unten links,
links, links-oben, links-unten {
  &[Platzierung="#{$placement}"] {
    &::nach {
      @extend .tooltip-placement-#{$placement};
    }

    &::vor {
      @extend .triangle-placement-#{$placement};
    }
  }
}

Wenn das Platzierungsattribut in einem Tag nicht vorhanden oder leer ist, erbt es standardmäßig die oberste Position.

&:nicht([Platzierung]),
&[Platzierung=""] {
  &::nach {
    @erweitern .tooltip-placement-top;
  }

  &::vor {
    @erweitern .triangle-placement-top;
  }
}

Die aktuelle Wirkung ist wie folgt

Verlängern wir den Text und fügen display:none zu den Standardstilen der Blase und des Dreiecks hinzu.

Hinzufügen einer Animation

Unterteilt in vier Richtungen, oben, unten, links und rechts, vier Animationen

@keyframes anime-top {
  aus {
    Deckkraft: .5;
    unten: 150 %;
  }
}

@keyframes anime-bottom {
  aus {
    Deckkraft: .5;
    oben: 150 %;
  }
}

@keyframes anime-links {
  aus {
    Deckkraft: .5;
    rechts: 150%;
  }
}

@keyframes anime-rechts {
  aus {
    Deckkraft: .5;
    links: 150 %;
  }
}

Passen Sie die Position der Blase an, um zu bestimmen, welche Animation ausgeführt werden soll. Verwenden Sie **[attr^=]** zur Auswahl, z. B. oben links und oben rechts.

/* Animation einrichten */
@each $placement oben,
 Rechts,
unten,
links
  &[Platzierung^="#{$placement}"] {

    &::nach,
    &::vor {
      Animation: Anime-#{$placement} 300 ms Vorwärts-Auslaufen;
    }
  }
}

Der endgültige Effekt ist wie folgt

Fügen Sie die Codepen-Adresse codepen.io/anon/pen/yR an …

Zusammenfassen

Das Obige ist die reine CSS-Implementierung (kein Skript) des vom Editor eingeführten HTML-Direktiven-Tooltip-Textaufforderungseffekts. Ich hoffe, es wird allen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

<<:  Detaillierte Erläuterung der MySQL-Deadlock-Prüfung und Beispiele zur Deadlock-Entfernung

>>:  Lösen Sie das Problem, dass Docker Elasticsearch7.x startet und einen Fehler meldet

Artikel empfehlen

Vue implementiert eine einfache Slider-Verifizierung

Dieses Artikelbeispiel zeigt die Implementierung ...

Implementierungscode des JQuery-Schrittfortschrittsachsen-Plug-Ins

Jeden Tag ein jQuery-Plugin - Schritt-Fortschritt...

Beispiel einer Methode zur Fehlerbehebung beim Lösen von Nginx-Portkonflikten

Problembeschreibung Ein Spring + Angular-Projekt ...

Drei Beispiele für Node.js-Methoden zum Abrufen von Formulardaten

Vorwort Nodejs ist eine serverseitige Sprache. Wä...

Centos7.5 installiert die Bereitstellung des binären Pakets mysql5.7.24

1. Umweltvorbereitung: Betriebssystem: CentOS Lin...

So zeigen Sie den Datenbankinstallationspfad in MySQL an

Wir können den Installationspfad von MySQL über d...

Erläuterung der Dockerfile-Anweisungen und der grundlegenden Struktur

Durch die Verwendung von Dockerfile können Benutz...

Analyse des Tutorials zur Implementierung der Remote-Anmeldung unter Linux

Linux wird im Allgemeinen als Server verwendet un...

VMware Workstation-Installation (Linux-Kernel) Kylin-Grafik-Tutorial

In diesem Artikel erfahren Sie, wie Sie Kylin auf...

IE6 BUG und Fix ist eine vorbeugende Strategie

Originalartikel: Ultimatives IE6-Cheatsheet: So b...

So installieren und konfigurieren Sie Redis in CentOS7

Einführung Es ist nicht nötig, Redis im Detail vo...

Miniprogramm zur Implementierung des Slider-Effekts

In diesem Artikelbeispiel wird der spezifische Co...

js behandelt die Kontoabmeldung beim Schließen des Browsers

Inhaltsverzeichnis Klassischer Ansatz Frage Weite...