Ich war neulich auf der Invision-Website und wollte aus irgendeinem Grund deren Logo ergattern. Manchmal hat man damit mehr Erfolg (z. B. wenn man freudig feststellt, dass es SVG ist), als bei einer Google-Bildersuche oder selbst bei einer normalen Websuche nach etwas wie „Invision Logo“ und der Hoffnung, eine Art Branding-Seite mit einem Logo-Kit-Download zu finden.
Also habe ich mit der rechten Maustaste auf ihr Logo geklickt, in der Hoffnung, es mit den DevTools zu „inspizieren“ und es mir anzusehen.
Anstatt mir ein Kontextmenü anzuzeigen, wurde ein Modal ausgelöst

Ich war angenehm überrascht, denn genau das wollte ich.
Hier ist eine einfache Möglichkeit, dies ohne Abhängigkeiten zu tun
Siehe den Pen Rechtsklick auf Logo zum Anzeigen von Logo-Optionen von Chris Coyier (@chriscoyier) auf CodePen.
Ihre App hat möglicherweise bereits ein schickes System für die Anzeige von Modals. Wenn ja, ist es noch einfacher. Hängen Sie ein „Rechtsklick“-Ereignis (es heißt tatsächlich contextmenu) an das Logo und erledigen Sie Ihre Sache.
logo.addEventListener('contextmenu', function(event) {
// do whatever you do to show a modal
}, false);
Wenn Sie kein Modal-System haben, ist es sehr einfach, eines rudimentär zu erstellen. Sie benötigen eine Überlagerung und ein Modal-Element
<div class="overlay" id="overlay"></div>
<div class="modal" id="modal">
<h3>Looking for our logo?</h3>
<p>You clever thing. We've prepared a <a href="#0">.zip you can download</a>.</p>
<p><button id="close-modal-button">Close</button></p>
</div>
Und ein Plan
- Wenn auf das Logo mit der rechten Maustaste geklickt wird, werden die Überlagerung und das Modal angezeigt
- Wenn auf den Schließen-Button geklickt wird, werden diese ausgeblendet
Kein Problem
var logo = document.querySelector("#logo");
var button = document.querySelector("#close-modal-button");
var overlay = document.querySelector("#overlay");
var modal = document.querySelector("#modal");
logo.addEventListener('contextmenu', function(event) {
event.preventDefault();
overlay.classList.add("show");
modal.classList.add("show");
}, false);
button.addEventListener('click', function(event) {
event.preventDefault();
overlay.classList.remove("show");
modal.classList.remove("show");
}, false);
Nackte Grundgestaltung
.overlay {
position: fixed;
background: rgba(0, 0, 0, 0.75);
top: 0;
left: 0;
width: 100%;
height: 100%;
display: none;
}
.overlay.show {
display: block;
}
.modal {
position: fixed;
left: 50%;
width: 300px;
margin-left: -150px;
top: 100px;
background: white;
padding: 20px;
text-align: center;
display: none;
}
.modal.show {
display: block;
}
.modal > h3 {
font-size: 26px;
color: #900;
}
Brechen Sie NIEMALS das Standard-Kontextmenü und überschreiben Sie es mit Ihrem eigenen benutzerdefinierten Verhalten OMG, was sind Sie ein böser Troll, Sie hätten nie geboren werden dürfen
Sie haben Recht! Oh Gott, was habe ich getan! Nichts kann sich jemals ändern! Mörderische Schreie!!
Dies ist eine großartige Möglichkeit, das Problem des „Logo-Schnappens für die Presse-Seite“ zu lösen. Viele Websites verwenden Bilder-Sprites, und es ist schwierig, schnell ihr Logo zu bekommen. Meistens greife ich zum Snipping Tool, wenn kein direktes Bild verfügbar ist – aber das funktioniert nicht ganz, wenn entweder die Website (Quelle oder Ziel) einen nicht-weißen Hintergrund hat.
Warum stoppen Sie nicht einfach die Ausbreitung des Ereignisses beim Rechtsklick?
Ich mag diese Idee generell.
Aber das scheint ein kleines Barrierefreiheitsproblem zu sein. Was ist, wenn Sie mit der rechten Maustaste klicken, um einen neuen Tab/ein neues Fenster zu öffnen (vorausgesetzt, das Logo verlinkt zur Homepage)? Die Anzahl meiner Kollegen, die diese spezielle Methode zum Öffnen neuer Tabs verwenden, ist ziemlich überraschend. Und auf Mobilgeräten ist das „Kontextmenü“ wirklich die einzige Möglichkeit, einen neuen Tab zu öffnen.
Jedenfalls ist es eine Überlegung wert.
Command/Control + Klick funktioniert immer noch, und ich nehme an, ein mittlerer Klick würde auch bei einer Maus mit Scrollrad funktionieren. Ich werfe das nur mal so in den Raum, ansonsten stimme ich Ihnen zu.
Ich öffne Links immer in einem neuen Tab über das Kontextmenü.
Ich habe nachgesehen und Chris' Code beeinflusst auch das Tastatur-Kontextmenü :-/
Meine erste Begegnung mit einem geskripteten Kontextmenü-Handler war auf einer Künstlerseite, die versuchte, mich am Inspizieren ihrer Webseite zu hindern. (Ich konnte sie trotzdem über Menüleiste -> Bearbeiten inspizieren).
Zurück zum Thema: Ich würde nicht empfehlen, das Kontextmenü zu skripten, da es die Benutzererfahrung für die vielen beeinträchtigt, um den wenigen zu gefallen.
Es gibt zwei mögliche Lösungen
Verhindern Sie nicht, dass das Kontextmenü geöffnet wird (zeigen Sie sowohl das Menü als auch die Überlagerung an)
Zeigen Sie das Kontextmenü beim zweiten Rechtsklick an (YouTube macht das bei Videos)
Und prüfen Sie immer hier: http://www.brandsoftheworld.com/ nach Vektoroptionen zuerst. Es gibt Vektordateien für kleinere Unternehmen sowie für große.
Nur als Selbstverständlichkeit. Sie haben zwar InVision nicht, aber es ist ein großartiges Werkzeug, wenn man tatsächlich Vektoren benötigt.
Denken Sie auch daran: https://css-tricks.de/an-interview-with-andy-fitzsimon-about-logomono/
http://logos.wikia.com/wiki/Logopedia ist ebenfalls eine hervorragende Ressource für die neuesten Vektorlogos sowie historische Logos für viele Unternehmen und Produkte.
Aww, hast du bei mir an dich gedacht, als du das geschrieben hast? <3
Ich bin damit meistens einverstanden. Das Öffnen der Homepage in einem neuen Tab wird umständlich, wenn man das Logo nicht lange gedrückt halten kann – was ich häufig tue. Desktop hat zumindest Alternativen (Strg+Klick / MB3), aber nicht jeder kennt sie/benutzt sie.
Aber würde es jemanden umbringen, einfach einen Link in die Fußzeile einzufügen?
[Über] [Branding] [Kontakt]
Ich stimme Nadya zu. Wenn Seiten die Voraussicht haben, ihre Bilder für den bequemen Download zu verpacken, warum verstecken Sie es hinter dem Logo. Setzen Sie den Tooltip-Text (title) so, dass er den Besucher zu einem Link am unteren Rand der Seite leitet. Überschreiben Sie nicht das Kontextmenü, machen Sie ein Feature aus Ihrem guten Willen und seien Sie stolz auf Ihr Logo.
Okay, also alles, was die anderen gesagt haben, ist cool, aber Sie haben eines vergessen
TASTATURZUGÄNGLICHKEIT, VERDAMMT NOCHMAL!
Wenn Sie den Leuten erklären, wie man ein Dialogsystem entwickelt, sagen Sie ihnen wenigstens, dass es Mist ist und jeder, der die Tastatur zum Navigieren auf Ihrer Website verwendet, Sie für immer hassen wird. Wenn Sie sich nicht die Mühe machen können, selbst etwas Barrierefreies zu entwickeln, versuchen Sie, etwas wie jQuery UI zu verwenden, das bereits (vernünftige) Barrierefreiheit hat.
PS: Sie sollten auch mit ARIA markieren, aber das ist (meiner Meinung nach als gesetzlich blinder Entwickler und Webnutzer) ein klein wenig weniger wichtig als die Tastaturzugänglichkeit.
Die meisten Tastaturen haben eine Kontextmenü-Taste (links von Rechts-Strg).
Ich kann das Beispiel nur mit der Tastatur bedienen
Tab (fokussiert Logo)
ContextMenu (Öffnet Dialog)
Tab Tab Leertaste (Schließt Dialog)
Aber auf einer komplexeren Website würde das nicht funktionieren, da Sie durch den gesamten Inhalt tabben müssten. Der Dialog erhält keinen Fokus, wenn er zum ersten Mal geöffnet wird, oder erfasst keinen Fokus (er ist visuell modal, warum also nicht per Tastatur?). Das war mein Punkt. Entschuldigung, dass ich mich nicht klar genug ausgedrückt habe.
Ich erinnere mich, dies vor vielen Monden auf der Aksimet-Website gesehen zu haben (ca. 2011), obwohl sie es aus irgendeinem Grund eingestellt haben.
Abgesehen vom unvermeidlichen Gejammer über Barrierefreiheit ist dies eine sehr nützliche funktionale Ergänzung – besonders wenn sie Leute wie Johnny Marketing Exec davon abhält, nach den niedrig aufgelösten PNGs von Google zu greifen oder einer 5 Jahre veralteten, schlecht vektorisierten Version von Brands of the World zu suchen.
Ernsthaft, ich habe in meiner Agentur-Zeit Stunden damit verbracht, falsch gefärbte, schlecht skalierte und einfach nur falsche Logos für Kunden zu reparieren, die sich bei einer CES- oder MWC-Keynote oder einer anderen Veranstaltung lächerlich gemacht hätten. 50 Shades of Blue, jemand?
Wirklich innovativ. Sollte das bald verwenden.
Danke für den Artikel, Chris!
Eine meiner am höchsten bewerteten Antworten auf StackOverflow handelt von einem personalisierten Menü beim Rechtsklick auf ein Element, schauen Sie sich das an: http://stackoverflow.com/a/20471268
Es hat alle Extras, einschließlich einiger, die diesem hier fehlen
Schließen beim Klicken außerhalb (aber nicht irgendwo darin)
Behandlung von Klicks darin mit
data-actionEs ist ein etwas anderer Anwendungsfall, aber vieler Code ist wiederverwendbar (
Ich kann dem „Niemals EVER das Standard-Kontextmenü brechen und mit Ihrem eigenen benutzerdefinierten Verhalten überschreiben“ nur zustimmen, das habe ich beim Design für #a11y gelernt.
Der einzige Grund, warum ich das nie verwenden werde, ist, dass die Anzahl der Benutzer, die diese Funktion benötigen, viel weniger Wert hat als die Verwirrung oder die Fehler, die es für Leute verursacht, die nicht verstehen, warum dieses Popup erscheint.
Außerdem suchen Designer oder Webentwickler ohnehin nach einem Link in der Fußzeile oder anderswo (in der Suche?) für ein Pressekit, ein Branding-Paket usw.
Außerdem ist es eine nicht standardmäßige Navigationsstrategie. Ist es auffindbar? Vielleicht, aber ist es den Preis wert, normale Benutzer zu verärgern? Für mich oder meine Kunden war das noch nie der Fall.
Schließlich ist es eine Abwärtsspirale. Betrachten Sie jede Art von Ressource, Inhaltsbilder, Dokumente, Videos usw. Wie viele Orte könnten Sie das Kontextmenü ersetzen, mit dem Ziel, das zu „vorherzusagen“, was der Benutzer will? Abwärtsspiralen sind rutschig, am besten nicht in die Nähe gehen für die Hoffnung auf einen winzigen Vorteil für eine sehr kleine Benutzergruppe.
Das war noch nie ein echtes Problem für mich.
Das ist so schick!
Niemand außer Designern und Webentwicklern wird das jemals sehen. Und es ist wirklich nützlich! Danke fürs Teilen dieses schönen Snippets!
Das ist eine wirklich schlechte Idee. Ich frage mich, wie Sie diesen gesamten Beitrag zusammenstellen konnten, ohne dass Ihnen einfiel, dass Sie einer Menge Leute raten, die grundlegende Browser-Funktionalität für ein willkürliches Feature zu überschreiben, das die überwiegende Mehrheit der Benutzer, mich eingeschlossen, niemals brauchen wird. Sehr albern!
Mir gefällt die Idee.
Und trotzdem kann man in diesem Modal einen „_blank“-Link zur Homepage anzeigen.
Shift + Rechtsklick vereitelt das.
Für alle, die sagen, das sei eine schlechte Idee und es ruiniert alles, was mit allem zu tun hat... Wussten Sie, dass es das mit Invision gab? Haben Sie es bemerkt, bevor Chris darüber geschrieben hat?
Ich hatte vorher noch nie von dieser Seite gehört, aber ich vermute, Ihr Punkt ist, dass es keine schlechte Idee ist, weil es uns kein Problem bereitet hat.
Meine Sorge ist, dass diese Art von Dingen mich daran erinnert, wie Microsoft/Apple/Google/Gnome/Ubuntu eine willkürliche Änderung einer Benutzeroberfläche beschließt, weil sie einem UI-Designer gefällt, anstatt einer wirklich weisen Entscheidung. Dann breitet sich dasselbe Prinzip wie Krebs aus.
Warum nicht auch alle Rechtsklickmenüs für alle Links ersetzen? Es könnte in Zukunft ein ähnliches zwingendes Argument von denselben UX-Designern geben...
Oder alle Rechtsklickmenüs für alle Bilder im Seiteninhalt? Vielleicht sind Sie zu jung, um sich daran zu erinnern, aber das war vor Jahren eine Krebsart im Internet, in dem Versuch, Leute davon abzuhalten, Inhalte von Websites zu „stehlen“. Ja, das war weit verbreitet.
Stellen Sie sich vor, diese Idee hätte sich durchgesetzt und Akzeptanz gefunden? Oder wenn Browserhersteller Rechtsklickmenüs einfach ganz entfernen würden, um „uns ein besseres Erlebnis zu bieten“? Dann wäre das Rechtsklickkonzept für diesen Artikel gar nicht erst möglich.
Also, ja, es wird wahrscheinlich eine riesige Menge an Browser-Benutzeroberflächen/Websites/wer-weiß-was ruinieren, indem es so etwas massenhaft startet.
Ich hoffe wirklich, dass die Weisheit der älteren Leute nie aus der Mode kommt, sonst könnten wir uns in eine Ecke wiederholen, aus der wir in Zukunft nicht mehr herauskommen.
Ich würde die Tags
<menu>und<menuitem>verwenden, um den Browser zu verbessern, anstatt ihn zu zerstören. Leider ist die Unterstützung dafür noch mangelhaft.http://codepen.io/lemnis/pen/vGXwdw
Browserunterstützung: http://caniuse.com/#feat=menu
Kudos dafür, das Kontextmenü in den HTML-Bottom zu verschieben, um die „Above the Fold“-Best Practice zu fördern.