Stephan Böni - Kontextmenü

Context

Kontextmenü

Das Kontextmenü ist ein modaler Dialog, der sich am geklickten Button ausrichtet. Der Hintergrund wird nicht gefiltert. Jeder Klick auf einen Link oder Button schliesst das Kontextmenü. Bei Smartphones (kleiner als 480 Pixel Breite oder Höhe) wird das Kontextmenü aus Platzgründen wie ein Standard-Dialog behandelt.

Voraussetzung

Ich gehe davon aus, dass du das HTML und das Javascript gemäss der Dialoge-Anleitung eingrichtet hast. Insbesondere die dialog.js übernimmt hier einen massgeblichen Anteil.

Dialoge Basiseinrichtung

Dialog stylen

Das Kontextmenü wird über die CSS-Klasse context behandelt.

CSS dialog.context[data-dialog-arrow] { margin: 0; overflow: visible; &::backdrop { opacity: 0; } &::after { box-shadow: color-mix(in oklab, var(--text-color), transparent 50%) -0.4rem 0.4rem 0.4rem; border: 1rem solid transparent; border-color: transparent transparent var(--default2-color) var(--default2-color); transform-origin: 0 0; transform: rotate(135deg); left: 3.2rem; content: ''; position: absolute; width: 0; height: 0; margin-top: 0.1rem; box-sizing: border-box; display: block; } &[data-dialog-arrow='bottom-left']::after { border-color: transparent transparent var(--bg-color) var(--bg-color); bottom: -2.6rem; transform-origin: -2.4rem 3.2rem; transform: rotate(315deg); } &[data-dialog-arrow='top-right']::after { border-color: transparent transparent var(--default2-color) var(--default2-color); left: auto; right: -1.6rem; } &[data-dialog-arrow='bottom-right']::after { border-color: transparent transparent var(--bg-color) var(--bg-color); left: auto; right: -1.6rem; bottom: -2.6rem; transform-origin: -2.4rem 3.2rem; transform: rotate(315deg); } }

Alle weiteren Styles können vom Standard-Dialog geerbt werden.

Dialoginhalt erstellen

Das HTML für das Kontextmenü unterscheidet sich nur durch die class="context" vom Standard-Dialog.

dialogContextSample.html <dialog class="context"> <header class="dialogHeader"> <p>Beispiel;</p> <button class="icon icon-close" data-dialog-close="1" title="Dialog schliesssen"></button> </header> <div class="dialogContent"> <p>Das ist ein Dialog.</p> </div> </dialog>

Dialog testen

Damit ist bereits alles Notwendige getan. Alles Weitere übernimmt die dialog.js. Wir können den Kontext-Dialog also gleich testen.

Nicht-modale Variante

Eine nicht-modale Variante des Kontextmenüs ist das Flyout. Möglicherweise scheint dir dies geeigneter.

Flyout einrichten

Dran bleiben

Du hast es geschafft. Abonniere meine Benachrichtigungen, um weitere News und Anleitungen von mir zu erhalten.

Feed einbinden