HTML
Man kann sie mit einem einzigen Div erstellen. Es ist gut, Klassen für jede Richtungsoption zu haben.
<div class="arrow-up"></div>
<div class="arrow-down"></div>
<div class="arrow-left"></div>
<div class="arrow-right"></div>
CSS
Die Idee ist eine Box mit null Breite und Höhe. Die tatsächliche Breite und Höhe des Pfeils wird durch die Breite des Rahmens bestimmt. Bei einem Pfeil nach oben ist beispielsweise der untere Rahmen farbig, während der linke und rechte transparent sind, was das Dreieck bildet.
.arrow-up {
width: 0;
height: 0;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-bottom: 5px solid black;
}
.arrow-down {
width: 0;
height: 0;
border-left: 20px solid transparent;
border-right: 20px solid transparent;
border-top: 20px solid #f00;
}
.arrow-right {
width: 0;
height: 0;
border-top: 60px solid transparent;
border-bottom: 60px solid transparent;
border-left: 60px solid green;
}
.arrow-left {
width: 0;
height: 0;
border-top: 10px solid transparent;
border-bottom: 10px solid transparent;
border-right:10px solid blue;
}
Demo
Siehe den Stift Animation zur Erklärung von CSS-Dreiecken von Chris Coyier (@chriscoyier) auf CodePen.
Beispiele
Dave Everitt schreibt in
Für ein gleichseitiges Dreieck lohnt es sich zu erwähnen, dass die Höhe 86,6% der Breite beträgt, also (border-left-width + border-right-width) * 0,866 % = border-bottom-width
Abgefahren! Ich kapiere es nicht!
Geht mir genauso… Ziemlich knifflig!
Hallo.
Wie kann ich die Farbe innerhalb des Dreiecks ändern?
Und sagen wir, wenn ich einfach sicherstellen muss, dass der untere Teil des Dreiecks nicht vorhanden ist, wie mache ich das auch?
Hey Ayush! Du könntest die Farbe des Dreiecks ändern, indem du die Farben im sichtbaren Rahmen änderst.
Hey, vielen Dank!
Es hat funktioniert!
Aber können Sie mir sagen, wie ich diesem Dreieck einen Rahmen geben kann? (Da es nur aus dem Rahmen eines Divs besteht!!)
Hey Tarun!
Da es nur aus einem Rahmen besteht, kannst du nur die Größe dieses Rahmens erhöhen, wenn du es wirklich möchtest, denn mehr kannst du damit nicht tun. Und du musst einen negativen Rand von der gleichen Pixelanzahl wie die Rahmengröße angeben, um die Ausrichtung beizubehalten.
Coole Erklärung!
Tolle Erklärung
Ich habe das in ein Sass-Mixin umgewandelt, falls jemand interessiert ist.
Ich habe eine kleine Ergänzung zu diesem Artikel geschrieben, um dasselbe zu erreichen, aber mit etwas funktionalem SCSS zur DRY-Rettung.
http://powdertothepeople.tv/2015/06/29/Functional-SCSS/
Vielen Dank für die klare Erklärung!
Es gibt mehrere Seiten, die zeigen, wie man Pfeile auf Tooltips usw. anbringt, aber sie haben mich völlig im Dunkeln gelassen, wie sie funktionieren. Jetzt, dank dieser Seite, verstehe ich es endlich!
Einfach wow. Vorher konnte ich es nicht verstehen. Diese Erklärung hat es einfach auf den Punkt gebracht. Vielen Dank!
Es ist im Grunde wie eine riesige 3D-Rahmenecke. (Wenn die linke und obere Rahmenfarbe unterschiedlich sind, ist die Kante diagonal, die verwendet wird, um dieses Dreieck zu erzeugen).
Danke, TeMc, jetzt ergibt alles Sinn.
Übrigens macht es Spaß, mit der Breite des inneren Div-Rechtsrahmens zu spielen und die Form und Größe des Dreiecks zu ändern!
Danke für die Klarstellung… danke auch an den Administrator, dass er schöne Tricks teilt :) Ich bin dieser Website sehr dankbar. :)
Danke für die Erinnerung! Es ist schon so lange her, dass ich bemerkt habe, wie sich unterschiedliche Rahmenfarben zusammen verhalten (denken Sie an Tabellenzellen).
Clever. Ich mag es, wenn CSS Dinge tut, die es nicht tun sollte.
Kann man es drehen?
Ja
Ersetzen Sie offensichtlich die "1" durch das, was Sie möchten!
http://www.cssplay.co.uk/menu/flag
Wow, tolle Arbeit mit der Flagge in Ihrem Link…
Ich wollte auch fragen, warum Sie 'dashed' statt 'solid' verwenden? Ich konnte den Unterschied nicht verstehen..
Grüße & herzlichen Glückwunsch nochmals.
Wow! Süß!
Hallo, 'dashed' sorgt dafür, dass es gut gerendert wird, wenn der Winkel nicht 90° beträgt.
Hier ist eine, die ich für verschiedene Dinge häufig benutze
Sie können mit den Rahmenstärken spielen, um verschiedene Tiefen und so zu erzielen.
Das ist das einfachste Beispiel, ich liebe es
Danke, Otto. Ich war mir nicht sicher, wie die Syntax für 2 Werte bei border-color lautet, bis ich diesen Artikel gefunden habe, der anderen helfen könnte;
https://developer.mozilla.org/en-US/docs/Web/CSS/border-color
Zu cool! Ich liebe die Art, wie es erklärt wird.
Weiß jemand, warum das in Webkit so beschissen aussieht?
http://img825.imageshack.us/img825/3002/screenshot20100830at827.png
Vielleicht kann Webkit es nicht richtig zeichnen?
Wenn die Abmessungen des Dreiecks nicht symmetrisch sind, neigen Sie dazu, diese gezackten Linien zu erhalten. Es scheint aus irgendeinem Grund in Webkit stärker bemerkbar zu sein – ich weiß nicht warum.
Du hast das vielleicht schon herausgefunden, aber hier ist es trotzdem
Für Webkit, um die Linien glatt zu bekommen, füge die folgende Regel hinzu
transform: rotate(360deg);
Spiele mit verschiedenen Gradzahlen, je nach Richtung deines Pfeils.
Versuche, "box-shadow: 0 0 2px orange;" zum Dreieck hinzuzufügen, es könnte helfen. Wenn nicht, verringert oder erhöht das "2px" die Unschärfestärke des Schattens.
Gefällt mir. Danke.
Cooler Trick, ich habe es zum ersten Mal ausprobiert, nachdem ich es woanders gesehen hatte.
Dann stieß ich auf den Ivy-Leaf-Trick auf dieser Website, und wenn Sie möchten, dass das Dreieck mit dem Text skaliert, ändern Sie das Ivy-Blatt in ein Dreieck.
unten: \25bc
oben: \25b2
rechts: \25b6
Ich konnte keine "Karte" finden, aber wenn Sie mit den letzten 4 Ziffern in der URL spielen, können Sie allerlei coole Dinge finden.
http://www.decodeunicode.org/en/u+25bc
Das ist erstaunlich!! Danke fürs Teilen..
Sie können diese Dreiecke verwenden, um Echtzeit-3D-Objekte in IE6 zu erstellen. Ja, IE6!
http://www.uselesspickles.com/triangles/
Rahmen können auch ein Haus bauen
http://www.designdetector.com/tips/3DBorderDemo2.html
Mir ist ein kleines Problem mit dieser Technik in Firefox 5.0 (Win) aufgefallen. FF 5.0 rendert einen leichten Strich an den Vorderseiten des Dreiecks. Hier ist ein Link zu einem jsFiddle, das das Problem repliziert
http://jsfiddle.net/brightlight/4DmFk/
Offensichtlich müssen Sie das in FF 5.0 (Win) betrachten, um zu sehen, worüber ich spreche.
Update: Das Ändern des Rahmenstils auf "inset" an den transparenten Seiten des Elements scheint dieses Problem in Firefox 5 und 6 zu beheben. Andere Browser rendern die Dreiecke auch nach dieser Rahmenstil-Anpassung weiterhin gut.
Danke für den Inset-Tipp! Ich habe versucht, diesen dünnen Strich einen Tag lang zu entfernen!!
Tolle Anleitung.
@ted: toller Tipp zum "inset". Habe mich durch den Grund für den seltsamen Mikro-Rand gekämpft!
In Szenarien wie unten erhalte ich Pixelbildung in Safari, IE und etwas weniger in FF. Erlebt das noch jemand?
.point_bottom {
border-left: 200px solid transparent;
border-right: 200px solid transparent;
border-top: 80px solid #FF0000;
bottom: 0;
height: 0;
left: -101px;
position: absolute;
width: 0;
}
Wenn das Dreieck nicht symmetrisch ist, wird es nicht glatt aussehen. Grundsätzlich ist es, als würde man versuchen, eine gerade Linie in einem 30-Grad-Winkel in einem Bitmap-Bild zu zeichnen. Die Linie wird immer ein wenig gezackt aussehen.
Dieser Trick ist nur eine Ausnutzung des CSS-Verhaltens – ich glaube nicht, dass CSS für so etwas gedacht war. Wenn Sie wirklich gerade Linien in jedem Winkel wünschen, sollten Sie SVG in Betracht ziehen.
Das hat bei mir funktioniert, um die Dinge zu glätten: http://stackoverflow.com/a/9945375
Wie wäre es nun mit einer schönen Möglichkeit, einen Schatten auf das Dreieck zu legen? Wäre so toll…
Man kann begrenzte Schatten mit einem Pseudoelement erstellen. Positioniere es einfach ein wenig anders als die ursprüngliche Dreiecksform und ändere dann die Farbe und/oder Transparenz. Eine leichte Drehung sieht mit diesem Effekt auch gut aus. Ich habe es kürzlich in einem NetTuts-Artikel gesehen.
Ist es möglich, das auf einen [submit]-Button anzuwenden?
damit das Endergebnis so aussieht https://skitch.com/iestynx/fa6et/artwork
Ich bin hier etwas neu, also Entschuldigung, wenn es eine dumme Frage ist.
Danke
Lestyn,
Ich schätze, der Button kann nicht mit einem Div erstellt werden. Ich habe versucht, denselben mit zwei Divs zu erstellen und habe dasselbe Ergebnis erzielt.
Hier ist mein Versuch
http://jsfiddle.net/smkarthick/vb5Tv/3/
Das Problem, das einige Leute mit ungenauen Kanten gemeldet haben, liegt an der Kantenglättung und der Tatsache, dass
transparentäquivalent zurgba(0, 0, 0, 0)ist – transparentes *Schwarz*. In Kombination mit Kantenglättung ergibt sich ein Ergebnis, das nicht dem vom Autor beabsichtigten entspricht. Ich bin mir nicht sicher, ob irgendein Browser im mittleren Jahr 2009 Kantenglättung verwendete, aber jetzt tut Firefox deutlich.Ich schreibe gerade einen Blogbeitrag (da das Starten eines Blogs länger dauert...), der sich mit diesem speziellen Thema mit vollständigen Details, Erklärungen, Vorbehalten usw. befasst, und ich hatte ursprünglich geplant, bis zur Fertigstellung des Blogbeitrags zu warten, bevor ich diesen poste. Aber da seit Beginn der Planung mehrere Wochen vergangen sind und es wahrscheinlich noch genauso viele dauern wird, bis er fertig und veröffentlicht ist, dachte ich, ich sollte versuchen, Leute davon abzuhalten,
transparentzu verwenden, wenn sie es nicht meinen, bevor es zu spät ist.Meine allgemeine Empfehlung ist,
transparentzu vermeiden, es sei denn, Sie *wissen*, dass es geeignet ist (d. h. Schwarz ist die berührende Farbe). Wenn Sie sich um Browser kümmern müssen, diergba()-Werte nicht unterstützen (IE8 und früher), dann geben Sie es alstransparentan und fügen Sie danach einenborder-left/right/top/bottom-color-Wert mit dem korrektenrgba-Wert hinzu, um ihn zu überschreiben und korrekt zu machen.Ich habe gerade mit dem Kantenglättungsproblem herumgespielt und festgestellt, dass, wenn ich die Rahmenbreiten so einstelle, dass das Dreieck symmetrisch ist, und dann eine Skalierungstransformation auf das Dreieck anwende, um es auf die richtigen Abmessungen zu dehnen, der Browser gezwungen wird, die Kanten zu glätten und die Zackigkeit zu beseitigen.
Der Transformations-Trick funktioniert im Webkit hervorragend!
Leider führt er bei mir zu Problemen in Firefox. Es gibt jetzt einen vertikalen Schnitt durch die Mitte des Dreiecks, wann immer ich es skaliere.
http://jsfiddle.net/bensmithett/fEjJ3/
Hallo,
Dreieck-Design-Problem in IE9
Mir ist ein Problem in IE9 aufgefallen, wenn man dies verwendet, um einen Button als Pfeil zu stylen. Wenn man einen Stil für alle 4 Rahmen definiert, werden sie alle angezeigt (auch wenn sie transparent sind). Da Sie alle Rahmen zurücksetzen möchten, um den Standard-Button-Stil zu vermeiden, verursacht dies ein Problem. Es macht auch einige komische Dinge mit den Größen, so dass es auch dann nicht richtig aussieht, wenn man nur die 3 benötigten Rahmen definiert.
Bisher ist die beste Umgehung, die ich gefunden habe, die Verwendung eines <a> (oder eines Divs) anstelle dessen, auch wenn es weniger semantisch ist.
Hallo Chris, ich habe dein Video auf Vimeo gesehen und du bist sehr schnell vorgegangen. Ich liebe es, abgewinkelte Navigations-Tabs mit variablen Breiten für Text erstellen zu können. Ich habe versucht, ein PVII-Menüset zu modifizieren, bin aber auf ein Problem gestoßen, bei dem ich nicht sicher bin, ob Pfeile wegen der Breite der Rahmen helfen können. Ich kann es Ihnen nur anhand eines Beispiels zeigen, der festen Bild-basierten Version des Projekts, das ich in CSS nachbilden möchte
http://heavy-construction.us/
Beachten Sie den gelben Linienrahmen beim Überfahren. Nun, hier ist das Projekt bisher: http://heavy-construction.us/test.html. Die Verwendung der Pfeile hat mir geholfen, einen abgewinkelten Tab zu erstellen, aber der Hover verliert den gelben Rahmen. Im Moment verwende ich einen wiederholenden Hintergrundbildverlauf für jeden Zustand der Navigationsschaltflächen, und ich könnte ihn durch einen CSS3-Verlauf ersetzen, aber ich glaube nicht, dass etwas, das ich gesehen habe, den schmalen gelben 45-Grad-Rahmen erzeugen kann, es sei denn, vielleicht 2 sich überlappende Dreiecke?
Etwas weiter gekommen mit Farbverlauf-Buttons
http://heavy-construction.us/test3.html
Dies basiert auf dem Spry Widget für Menüs in DW, aber aus irgendeinem Grund beginnt der Farbverlauf nicht am äußersten linken Rand des Menü-Tabs.
Und ich konnte nicht herausfinden, wie man den gelben 45-Grad-Rahmen für den Hover hinzufügt.
Hey Jeff, kannst du bitte den Link zum Video teilen? Ich habe dieses Video auch gesehen, aber den Link verloren.
Nun, ich habe es mit einer gelben Flagge anstelle einer Umrandung zum Laufen gebracht
http://heavy-construction.us
Danke für das Tutorial! Ich habe das mit em-Größen verwendet, damit es dynamisch funktioniert – schaut es euch an!
http://thinkcloud.ly/snippets/tooltips.html
Eine interessante Sache, die ich in Chrome bemerke, ist, dass, wenn alle Pfeile gleich groß sind, der .arrow-right 2px höher ist als die anderen Pfeile.
Wie bekomme ich den Text neben dem Pfeil ausgerichtet? Danke!
line-height: 0zentriert den Text vertikal und Sie sollten einen Abstand hinzufügen, damit der Text nicht über den Pfeil hinausragt.Das ist brillant! Danke
div{
height: 0px;
width: 0px;
}
div.left-arrow {
border: 20px solid #fff;
border-right: 20px solid #abc;
border-left:none;
}
div.right-arrow {
border: 20px solid #fff;
border-left: 20px solid #abc;
}
div.down-arrow {
border: 20px solid #fff;
border-top: 20px solid #abc;
border-bottom:none;
}
div.up-arrow {
border: 20px solid #fff;
border-bottom: 20px solid #abc;
border-top:none;
}
von: http://kougiland.com/css-triangle.html
Hey Leute! Ich habe gerade einen einfachen Generator erstellt
http://apps.eky.hk/css-triangle-generator
Vielen Dank! Toller Generator!
Ich habe ihn vor ein paar Wochen benutzt, bevor ich wusste, dass er deiner war, und er war sehr nützlich.
Tolle Arbeit, herzlichen Glückwunsch!
Tolle Arbeit am Generator!!
Sehr gute Arbeit am Generator!
Danke für ein tolles Tutorial!
Frage: Ist es möglich, einem Element mehr als einen dieser "Dreiecke" zuzuweisen? Ich denke daran, Sternformen zu erstellen, indem ich mehrere rahmenbasierte Dreiecke einem quadratischen
divzuweise. Funktioniert das oder schließt die:after-Pseudoklasse das aus?Wie gibt man eine automatische Breite an? Sie nimmt die Breite ihres übergeordneten Divs an. Ich habe alle Arten ausprobiert, z. B. auto… Gibt es noch einen Trick?
Alter, das fehlerhafte Fire Fox legt einen grauen Rand an :( es funktionierte nicht einmal mit vor und nach.
Mit weißer Farbe versucht!
.arrow-right {
width: 0;
height: 0;
border-top: 60px solid transparent;
border-bottom: 60px solid transparent;
border-left: 60px solid #FFF;
}
Siehe Teds Kommentar oben bzgl. Inset-Ränder
Das sollte dich richtig gut hinkriegen.
Sieht toll aus. Ich bin ein absoluter Neuling in CSS auf dieser Ebene. Ich muss einen Schnellkurs machen, um einen Aufruf mit einem Dreieck zu zeigen, das nach unten oder links zeigt, je nachdem, welchen Steuerelementtyp ich ihm zuweise. Wie füge ich diese Verwendung von Dreiecken mit einer rechteckigen oder abgerundeten rechteckigen Aufrufbox zusammen?
Danke im Voraus,
file-monger
Wenn Sie die Wiedergabe der Dreiecke in Chrome/Safari verbessern möchten, fügen Sie hinzu
-webkit-transform:rotate(360deg);
Danke, das ist genau das, was ich gesucht habe, funktioniert super.
Ein kleiner Fehler, den ich erwähnen möchte: im CSS-Beispiel wird "display: block" nicht als erforderliche Definition aufgeführt – in der Demo wird dies vererbt, aber ohne die richtige Anzeigeeinstellung wird der Pfeil abgeschnitten.
Ich empfehle, "display: block" zum CSS-Beispiel hinzuzufügen.
möchtest du http://www.ardianta.tk/2012/04/css3-membuat-segitiga-atau-triangle.html sehen
Die Pfeile auf Ihrer Website sind keine CSS-Dreiecke, sondern Bilder. Meinten Sie, dass Sie diese grafischen Dreiecke durch CSS-Dreiecke ersetzen möchten?
Ja, das ist so cool.. ich kann Dreiecke machen.. was immer ich will..
Cool und einfach! Ich frage mich, wie man einem Fenster, das einen schwarzen Rahmen und einen weißen Hintergrund hat, einen Pfeil hinzufügt, und man möchte, dass der Pfeil den gleichen Hintergrund und Rahmen hat. Wie Google Plus
mag diesen Trick wirklich!
leider funktioniert dein Facebook-Empfehlungsbutton nicht, Kumpel.
Gibt es einen bestimmten Grund für `overflow:hidden` in `.end-of-article-stuff`?
Äh, das weicht von der obigen Diskussion ab, aber wenn jemand weiß, wie es geht…
Ich möchte ein schwebendes Dreieck erstellen, das nach Nordosten zeigt, und es in der oberen Ecke der rechten Spalte einer dreispaltigen Seite platzieren (rechte und linke Spalte schmal und gleich breit), so dass beim Scrollen nach unten der Inhalt der rechten Spalte unter dem schwebenden (immer darüber liegenden) Dreieck verschwindet.
Hier ist die Idee in der Praxis (ekys Triangle Generator (oben rechts) könnte funktionieren, ich habe es noch nicht ausprobiert)
http://www.1001cocktails.com/
Vielen Dank,
Justme
CSS-Pfeile! (sich überlappende Dreiecke)
.arrow-right {
width:0px;
height:0px;
border-bottom:9px solid transparent;
border-top:9px solid transparent;
border-left:9px solid #2f2f2f;
font-size:0px;
line-height:0px;
position: absolute;
z-index: 1;
top: 0;
left: 0;
overflow:auto;
}
.smaller-arrow-right {
width:0px;
height:0px;
border-bottom:4px solid transparent;
border-top:4px solid transparent;
border-left:4px solid #fff;
font-size:0px;
line-height:0px;
position: absolute;
z-index: 2;
top: 5px;
left: 0;
}
schau dir diese Seite an. Füge Rahmen zu unserem Pfeil hinzu. http://cssarrowplease.com/
Ich stimme deinen Ideen vollkommen zu. Wir alle profitieren von diesem fantastischen Beitrag. Diese Website ist exzellent. Ich habe hier viel gelernt. Vielen Dank.
Cool, danke für die Tipps! Ich habe diese Methode anstelle von Bildern für meine neue Website verwendet, http://www.doodlingpandas.com.
Der obige Kommentar von
wendee
12/16/2011
Ist eine sehr berechtigte Sorge. Ich scheine dieses Problem zu haben und die gesehenen Beispiele reproduzieren das Problem alle. In Chrome ist der linke Pfeil 2px kleiner als der nach rechts gerichtete Pfeil. NUR Chrome! Ich kann das nicht beheben. Wenn die Pfeile also eng beieinander und klein verwendet werden – ist der Unterschied sehr auffällig. Dies ist ein riesiges Problem für Websites, die bild- und spritefrei sein wollen, aber cross-browser-kompatibel sein müssen. Oh weh!!!
Wenn ich die Korrektur von Dan anwende
-webkit-transform:rotate(360deg);
Es glättet die Kanten und macht das Problem weniger auffällig in großen Beispielen, aber die kleineren sehen immer noch zu unterschiedlich aus.
Hat jemand mehr Einblick? Es scheint mir ein Bug in Chrome zu sein.
Don
Großartig, Chris! Das ist definitiv besser als ein umständliches SVG-Tag.
Pfeil mit Rahmen
CSS
HTML-Snippet
Hallo, ich habe meine Website aktualisiert und versuche, die Pfeile zu ändern. Im Moment sind meine Pfeile mit JavaScript codiert, aber der Rest meiner Website ist mit HTML UND CSS codiert. Als ich den von Otto geposteten Code eingegeben habe, hat er funktioniert und die Pfeile werden angezeigt, aber ich versuche herauszufinden, wie ich die Pfeile dazu bringe, zum nächsten Bild zu klicken, und wie ich die Thumbnails anklicken kann. Kann mir jemand dabei helfen? Ich möchte die Pfeile auch in der Mitte auf beiden Seiten des Bildes haben, anstatt unten.
Bitte hilf! Danke im Voraus! :)
-Angela
Habe das hier lokal ausprobiert und es sieht gut aus
Das Problem, das ich habe, ist, dass ich einen Span innerhalb des Containers habe (der ein h3 ist), und ich schätze, weil die Breite 0 ist, kann ich den Text nicht im Dreieck-Look erscheinen lassen.
Viele Grüße,
Amit
Ist es möglich, Schatten auf die Pfeile zu werfen?
Nein, weil keine Höhe und Breite vorhanden ist. Es ist nur ein Rahmen-Trick. Wenn Sie einen Schatten wollen, erstellen Sie ein Photoshop-PNG.
Hallo,
Spiele mit dieser Technik herum und frage mich, ob mir jemand helfen kann. Siehe diesen jsbin
http://jsbin.com/uviyat/2/edit
Beachten Sie "Longer Wording Example" – wie kann ich das Dreieck vertikal skalieren lassen, um den ausgewählten blauen Bereich dynamisch zu füllen? (Das Dreieck wird in der letzten CSS-Regel generiert)..
Ich bin ratlos! Hat jemand Ideen?
Vielen Dank im Voraus
Sehr schöner Trick und genau das, was ich gesucht habe.
Ich habe ein nicht-gleichseitiges Dreieck verwendet, das mit der `rotate-webkit-fix` von Dan gut funktioniert.
In IE8 sieht es etwas bescheiden aus, aber damit kann ich leben.
Vielen Dank und machen Sie weiter so.
Weiß jemand eine Lösung für das gezackte Rendering in IE8? `-ms-transform: rotate(360deg);` scheint mit IE8 nicht gut zu funktionieren.
Hallo!
Ich mag diese Lösung!
Leider muss ich einen Pfeil mit Rahmen machen. Hat jemand eine gute Lösung für mich? :/
Danke! ^^
Hey Kumpel.
Dank @Matts Link konnte ich etwas zusammenstellen : )
Es ist sehr einfach, aber es erfüllt seinen Zweck.
Es funktioniert am besten in Mozilla Firefox.
/* CSS-Beginn */
Körper
{
margin-top: 100px;
}
.container
{
width:100%;
}
.trifront
{
position:absolute; right:5px; top:-195px;
width: 0;
height: 0;
border-top: 195px solid transparent;
border-bottom: 195px solid transparent;
border-left: 195px solid #FFFF66;
}
.triback
{
position:absolute; left:64%;
width: 0;
height: 0;
border-top: 205px solid transparent;
border-bottom: 205px solid transparent;
border-left: 205px solid #000000;
z-index:-1;
}
.rectangle
{
position:absolute; top: 28%; left:1%; width:63%; height:14%; background-color:#FFFF66;
text-align:center; border-style:solid; border-width: 5px;border-right:0px;
}
/* CSS-Ende */
Fügen Sie einfach einen Verweis auf das CSS in Ihren HTML-Code ein und wenden Sie die Div-Tags entsprechend an.
Ich hoffe, ich war von irgendeiner Hilfe, oder habe Sie zumindest auf den richtigen Weg gebracht!!
Viel Glück, Kumpel!
Lassen Sie mich wissen, was Sie denken : )
HoofedCracker
Hey Kumpel!
Ich hatte kein Glück mit dieser genauen Situation, die sich vor etwa ein oder zwei Wochen ereignete!
Ich glaube, wenn Sie das Rahmenelement für das Dreieck bearbeiten, widerspricht das dem Zweck; da es die Form, Position und Größe des Pfeilkopfes verändert. Das transparente Element des soliden Rahmens ist sehr wichtig; daher sehe ich keine Möglichkeit, den Rahmen anzupassen.
Ich musste einfach einen guten Kontrast verwenden – mit einer kräftigen Füllfarbe für den Pfeil, um diesen kräftigen Effekt zu erzielen.
Ich weiß, dass dies keine Lösung ist, ich wollte Sie nur wissen lassen, wie ich dieses Problem einfach gelöst habe, indem ich mein ursprüngliches Layout angepasst habe.
Lassen Sie mich wissen, wenn Sie eine Lösung finden!
(Fühlen Sie sich frei, mich zu korrigieren, wenn ich mit einer der obigen Aussagen falsch liege)
HoofedCracker
@M
@HoofedCracker
Ich bin auf eine Methode gestoßen, dies mit :before und :after zu tun, im Wesentlichen ein weiteres Dreieck hinter dem vorderen zu erstellen, das etwas größer ist, so dass es wie ein Rahmen aussieht. Ich habe es verwendet, um ein Tooltip-ähnliches Ding zu erstellen
http://jsbin.com/oturaf/1/edit
Auswahl!
Das klingt sehr vielversprechend!
Versuche, es zu verstehen.
Glauben Sie, es wäre möglich, das auf eine vollständige Dreiecksform anzuwenden, anstatt auf eine Box mit einem Dreieck-Zeiger?
d.h. (Das ursprüngliche Dreieck; wie oben abgebildet)
.arrow-right {
width: 0;
height: 0;
border-top: 60px solid transparent;
border-bottom: 60px solid transparent;
border-left: 60px solid green;
}
Bin sehr neugierig, wie das aussehen würde : )
Viele Grüße,
HoofedCracker
Hallo.. Gute Erklärung. Ich habe etwas Ähnliches geschrieben über [wie man ein CSS-Dreieck erstellt](http://webdesigninspirationtoday.com/article/133/how-to-create-css-triangle-caret/). Dort habe ich die grundlegende Theorie mit CSS-Rahmen erklärt, um jedem ein besseres Verständnis zu vermitteln, wie das CSS-Dreieck erzeugt wird.
Chris,
Unten ist eine Frage auf StackOverflow, die sich mit diesem Thema befasst und ein robustes Beispiel für einen guten realen Anwendungsfall liefert
http://stackoverflow.com/questions/12499673/css-items-with-border-radius-and-triangle-side
Ich scheine nicht zu verstehen, wo ich den Code in der Blogger-Vorlage platzieren soll, bitte helft mir.
Hallo,
Ist ein Schatten für das Dreieck möglich?
Ich habe versucht, `box-shadow` zu verwenden, und der Effekt geht um die Box herum und nicht um das Dreieck.
Danke im Voraus.
Ich bin auch neugierig darauf!
Das wird es dir sagen!
Ich kenne dieses Tutorial, aber es ist nicht das, was ich will.
Schau dir das an, das ich gemacht habe. Ich hoffe, es gefällt dir :D
http://jsfiddle.net/adoumas/tNXdp/
Man braucht keine vier Divs, um ein Dreieck mit CSS zu erstellen.
Basierend auf den obigen Beispielen von **40a** und **Web Design Inspiration Today** habe ich dieses CodePen-Demo mit mehreren anderen Optionen zum "Drehen" des Dreiecks erstellt: http://codepen.io/rzea/pen/feiLs
Ich fand das ziemlich cool und war überrascht, dass es noch niemand gepostet hat!
Schön. Funktioniert wie ein Zauber :-)
Ich fand das auch cool, etwas refaktoriert aus meinem anderen Beitrag.
LESS
Erzeugt das
CSS
Ich habe nach dem Erstellen von geraden doppelköpfigen Pfeilen mit reinem CSS gesucht, aber nichts gefunden, also habe ich selbst ein wenig mit dem gegebenen Snippet herumgespielt und Voilà! Hier ist es… (Beim Erstellen dieser habe ich Pseudoelemente und ihre Funktionsweise (:before und :after) wirklich verstanden).
Ändere die Grade in der Klasse `rotate` auf '90', um den Pfeil horizontal zu machen oder ihn in einen beliebigen Winkel zu neigen.
Versuche, dies in JSFiddle einzufügen und sieh es dir selbst an :)
Das HTML
Das CSS
Könnte mir jemand bitte sagen, wie ich den Dreiecken einen dicken schwarzen Rand geben kann.
Danke Ted; deine Technik entfernt den Strich perfekt aus Firefox.
Danke an alle. Ich habe auch ein einfaches Tool unter http://www.careerbless.com/services/css/csstooltipcreator.php – Kann inline mit den von Ihnen vorgeschlagenen Techniken verwendet werden. Bitte teilen Sie Ihre Gedanken dazu mit.
Das funktioniert nicht in IE 8.
Bedeutet: Ein genauer Pfeilpunkt kommt in IE 8 mit demselben Code nicht zustande.
Gott sei Dank, ich habe es gefunden.
Füge einfach hinzu
in deinem CSS, damit es in IE 8 funktioniert.
Hier ist der gesamte Code
Dieses ist auch nützlich!
Was ist, wenn ich Text in das Dreieck einfügen möchte, ist das möglich?
Ich habe es versucht, aber der Text bricht nach jedem Wort und ich gehe davon aus, dass dies daran liegt, dass das Div keine Höhe und Breite hat. Wenn also jemand eine Lösung hat, lassen Sie es mich bitte wissen :)
netter Trick :)
Tolle Tipp!
Ich frage mich, ob es eine Möglichkeit gibt, den Pfeil in einer geraden Reihe für die gesamte Breite des Browsers zu duplizieren?
Hier habe ich eine bessere Entwicklung in Less (CSS), um solche Dinge zu tun
https://gist.github.com/alejonext/5131863
dieser Pfeil ist schön. Hast du Tutorials zum Erstellen von Spielen mit JavaScript? Danke :)
Es ist auch erwähnenswert, wie man ohne zusätzlichen Markup einen Dreieck/Pfeil zu einem Element hinzufügt.
.add-on { position: relative {.add-on:after {
border-bottom: 4px solid transparent;
border-left: 4px solid #EDEDED;
border-top: 4px solid transparent;
content: " ";
height: 0;
left: 0;
margin-top: -4px;
position: absolute;
top: 50%;
width: 0;
}
Ich scheine keine Lösung für mein Problem zu finden, ich wollte ein dynamisches Höhen-Dreieck für meine responsiven Divs.
Größenveränderbare Dreiecke, die vielleicht helfen, um Ihnen den Einstieg zu erleichtern :: http://codepen.io/Matnard/pen/wBDre
SVG könnte auch gut sein.
Und das ist ein großartiger, rein CSS-basierter dynamischer Höhenpfeil
https://gist.github.com/056dc67bf31342cc6bd7
Ich bin auf einen "Köder" gestoßen, konnte ihn aber nicht in meinem Code replizieren. Nach langem Herumprobieren fand ich den ursprünglichen Code in CSS, wo der Code funktionierte, aber ich verstand die Logik nicht. Ich habe Google durchsucht und bin auf Ihrer Seite gelandet. Tolle Erklärung.
Ist es möglich, abgerundete Ecken zum Dreieck hinzuzufügen?
Ausgezeichneter Trick! Für diejenigen, die noch nicht daran gedacht haben: Man kann ein etwas kleineres Dreieck in das erste Dreieck legen, um einen schönen kleinen Pfeil zu erstellen. Durch Positionierung mit negativen Rändern (oder ähnlichem) ist es einfach, Ihrem Haupt-Div einen Sprechblaseneffekt zu verleihen
<
div>
Danke dafür! Das einzige Problem ist, wenn man einen Rahmen um das Dreieck legen möchte.
Das ist großartig, vielen Dank. Django, um einen Rahmen um das Dreieck zu legen, solltest du noch einen äußeren Div hinzufügen, der eine etwas größere Rahmenbreite als die ursprüngliche Dreiecksrahmenbreite hat, mit der Farbe deiner Wahl. Lass mich wissen, ob das funktioniert.
Nur einfach danke zu sagen!
Ausgezeichneter Beitrag, vielen Dank fürs Teilen.
Das hat mich davor bewahrt, `transform: rotateZ(45deg);` zu verwenden, was unter iOS 6 / Safari nicht besonders gut funktionierte.
Gut gemacht. Aber ein Problem. Gibt es eine Möglichkeit, einen **Rahmen für den Rahmen** anzuwenden?
Ich hoffe, Sie verstehen, was ich erreichen möchte.
Man kann zwei Dreiecke verwenden, ein großes und ein kleines, und sie dann mit CSS ausrichten, wie hier beschrieben: hier.
Ich möchte einen Pfeil mit einem 1px Rand darum, ist das möglich?
Bitte helft.
Hallo, ich brauche auch einen Rahmen für das Dreieck. Hier sind meine Codes.
http://jsfiddle.net/e62b3/
Danke fürs Teilen, ich habe es hier verwendet: Dropdown-Menü mit CSS und jQuery, einschließlich CSS-Pfeilen.
Kann man ein dreieck beschreibbar machen? Ich kann nicht in das Dreieck schreiben, wenn ich es schreibe.
Ich habe responsive CSS-Dreiecke mit einem einzigen Div erstellt: Pure CSS responsive triangles. Es nutzt die Tatsache, dass der Abstand relativ zur Breite des übergeordneten Elements berechnet wird, um ein großes Dreieck mit fester Breite abzudecken. Für ein nach oben gerichtetes Dreieck und 100% Breite.
Das letzte war mit zwei Divs. Für ein responsives nach oben gerichtetes Dreieck mit einem Div, 100% Breite unter Verwendung eines Pseudoelements.
Für die vollständige Erklärung, wie die Dreiecksproportionen geändert werden und Snippets für nach unten, links und rechts zeigende Dreiecke siehe Pure CSS responsive triangles. Dieses CSS geht von `box-sizing:content-box` aus.
Ich habe diese kleine Visualisierung erstellt, um zu erklären, wie Ränder zu Dreiecken werden: http://codepen.io/Tresva/pen/dxHsb. Das könnte helfen, schneller zu verstehen.
Für mehr über css3 können Sie unten die URL prüfen
http://www.uiplayground.in/css3-icons/
Ob Sie mir glauben oder nicht, ich befinde mich in einer Situation, in der nichts anderes helfen kann als ein CSS-Dreieck :)
Danke für das Tutorial
Firefox graue diagonale Linien auf dem Mac Problem.
Gelöst: Anstelle von 'transparent' rgba(255,255,255,0) verwenden.
[rgba(0,0,0,0) rendert dasselbe wie transparent]
Nachdem ich diesen Artikel gelesen hatte (danke für die hilfreichen Informationen Chris!), bin ich auf diesen CSS-Dreieck-Generator gestoßen. Er ist ziemlich großartig.
Hier ist mein kleines Mixin, das ich benutze, um Pfeile zu bekommen!
danke
Toller Artikel, ich habe ihn schon oft zitiert. Ich experimentiere gerade mit einem Tacho, teilweise als Lernübung für Transformationen und teilweise, weil viele Automobilhersteller ihre Daten gerne in echten Armaturenbrett-Widgets darstellen. Ich habe ein seltsames Problem mit dem Dreieck, das ich als "Zeiger" auf dem Messgerät verwende, es sieht sehr blockig aus (als ob es vom Original-Nintendo oder so etwas wäre). Kann ich das verbessern?
http://codepen.io/arsdehnel/pen/xqpgn
Danke!
Danke! Ich habe eine HTML-Entität für einen Pfeil in einer HTML-E-Mail-Vorlage verwendet, aber sie wurde auf iOS nicht richtig angezeigt. Das CSS-Dreieck hat es gelöst!
Es ist überhaupt nicht notwendig, die Dreiecke zu drehen, da sie schwer auszurichten sind. Z. B. dieses Dreieck sitzt auf einer seiner Seiten.
border-left:30px solid transparent;
border-bottom:25px solid #B7550C;>
Ich stelle das nur zur Verfügung, wenn die Linien in Firefox etc. mies aussehen. Verwenden Sie 'dashed' anstelle von 'solid' für die transparenten Rahmen. :)
Vielen Dank, Shaun, es sieht wirklich besser aus.
Gut gemacht :)
Zum ersten Mal wusste ich davon.
Sehr nützlich einmal, und natürlich kann die Funktion aller Assets mit Hilfe von CSS 3 leicht reduziert werden..
Vielen Dank..
Habe einen Gist für eine SASS-Version erstellt, die als Mixin verwendet werden kann. Viel Spaß!
https://gist.github.com/willbowling/10181744#file-_sass-arrows-sass
Kann mir jemand helfen, diesen Pfeil mit :before oder :after für das Div zu erstellen?
plus etwas Positionierung. Funktioniert perfekt.
Es gibt einen Artikel in den Communications of the ACM vom März 2013 (Bd. 56 Nr. 3), The Story of the Teapot in DHTML, von Brian Beckman und Erik Meij, der erklärt, wie man mit CSS-Rändern jedes beliebige Bild rendern kann. Wenn Sie keinen Zugang zu CACM haben, gibt es ein Wiki unter http://www.sjbaker.org/wiki/index.php?title=The_History_of_The_Teapot.
Hinweis: Der
HINTERGRUNDmussTRANSPARENT/NONEseinErklärung: Dies ist vielleicht nicht klar, aber auch wenn die Breite und Höhe 0 sind, erscheint jeder Hintergrund "hinter" diesen transparenten Rahmen.
Wenn Sie also zum Beispiel ein vorhandenes Element mit schwarzem Hintergrund bearbeiten und einen schwarzen unteren Rahmen sowie transparente linke/rechte Rahmen festlegen – *erhalten Sie tatsächlich ein Rechteck* :)
Ich hoffe, das hilft jemandem :)
Was ist der beste Weg, um ein Hintergrundbild in diesem Dreieck zu bekommen?
Was ist, wenn ich einen Pfeil nur mit HTML-CSS erstellen möchte (kein Dreieck mit gefüllter Hintergrundfarbe oder Rahmenfarbe)? Bitte gib mir irgendwelche Vorschläge.
1) Verwende einen Schriftpfeil, z.B. → (
&#8592;), du kannst nach "ascii arrows" googeln für mehr.2) Verwende HTML&CSS (Dreieck muss umrandet sein, **aber** schau dir das an)
Es ist im Grunde ein Rechteck und ein Dreieck nebeneinander (mit `inline-block`)
und setze `vertical-align: middle` für **beide**, damit sie vertikal zentriert werden :)
Ich hoffe, das hilft :)
Sehr schön. Aber können wir damit Listenpunkte wie im Code erstellen?
Das ist verdammt cool. Ich bin beeindruckt.
Ausgezeichnete Erklärung, sie war einfach und leicht zu bearbeiten, um die gewünschten Ergebnisse zu erzielen.
Danke für das nette Tutorial.
Mein kleiner Rat…
Wenn Sie ein nach oben gerichtetes Dreieck erstellen. Die Angabe des seitlichen Rahmens als "inset" scheint das Dreieck besser zu rendern… In Firefox gibt es einen großen Unterschied..
Beste Grüße!
Mehr CSS-Formen:-
http://findnerd.com/list/view/Create-shapes-using-css/1311/
Danke für diesen Link.
Wie erstelle ich mit CSS eine solche Art von Pfeil, füge aber einen Rahmen hinzu?
Hier ist ein Stift mit ein paar weiteren Pfeilen
http://codepen.io/chrissp26/pen/QwOpbO
Genau das.
Vielen Dank, dass Sie diesen Stift zusammengestellt haben.
@Chris, danke für den Artikel. Er ist vielleicht alt, aber er hat geholfen.
Gern geschehen, Lisa.
Ich möchte so etwas wie dieses (siehe nebenstehendes Bild) in CSS erstellen und es dann mit Bootstrap aufbauen... kann mir jemand helfen??
http://imgur.com/hAQU4bb .... Bitte helfen Sie mir so schnell wie möglich
Schön, vielen Dank
Im CSS-Beispiel wird der blaue Pfeil vor dem grünen gezeigt, aber im CSS-Code ist es umgekehrt. Können Sie bitte dafür sorgen, dass sie in der gleichen Reihenfolge erscheinen, um Verwirrung zu vermeiden.
Das ist großartig!! Was für eine tolle Idee!
Es ist sehr einfach und funktioniert gut.
Ich mag es..
Ich möchte nur wissen, wie man einen Schatten auf diesen Dreieck legt. Danke.
So einfach wie genial
hep böyle böyle kandırıyosunuz insanları ayıptır be olm yapmayın şöyle şeyler :)
ihr betrügt die Leute mit diesen Tricks... tut es nicht. Verwendet etwas anderes wie große PNG-Bilder :)
Ich benötige ein Dreieck mit einer Größe, die mit % für ein responsives Web erstellt wird. Wie kann ich das machen?
GOOGLE
Das habe ich gemacht :D
Siehe den Pen Pfeil mit Rand-Eigenschaften von Aditya Narayan (@adinar97) auf CodePen.
Danke!!!!!!!!!!!!!...
Gibt es eine Möglichkeit, Farbverläufe für die Klasse "arrow-down" anzuwenden?
Sehr nützlicher Artikel. Ich konnte die CSS-Dreiecks-Methoden für ein Nebenprojekt verwenden und wollte sie teilen, falls sie für jemand anderen nützlich sind.
http://www.appliedcss.com/target-component/
Ich habe einen CSS-Dreiecks-Generator erstellt (http://triangle.designyourcode.io), dieser kann einigen Leuten helfen, Dreiecke einfacher zu erstellen und einzufärben.
Er gibt den Code sowohl für ein normales Element als auch für die Verwendung mit einem Pseudo-Selektor aus. Ich arbeite auch daran, ihn mit einem SCSS-Mixin zu aktualisieren, aber das ist noch nicht verfügbar.
Ich habe keinen Safari-Browser, aber ich frage mich, ob backdrop-filter auf Dreiecke/Ränder angewendet wird, wenn wir sie transluzent machen?
Viele Grüße,
Bob.
Pfeiltasten-Tab-Code
Wirklich beeindruckt davon! So einfach und funktional!
Wow... Ich wünschte, es gäbe einen Button für "Gefällt mir" oder "Kommentar" oder eine Medaille.
Fantastisch!
Ich wusste nicht, dass die border-Eigenschaft dafür verwendet werden kann!
Vielen Dank, Chris!!!
Kann jemand ein Beispiel für den ursprünglichen Code des Rechtspfeils in einem HTML-Absatz posten? Als ich es versuchte, wurde der Absatz unter dem Pfeilkopf positioniert. Wenn ich das Tag am Ende des Absatzes platziere, wird der Text zu einer langen, schmalen Spalte gequetscht.
Zum Beispiel,
History Day ist am 21. April.
An Michael F. (21. April).
Sie müssen nur ein Float (links oder rechts) in Ihrem HTML einfügen, und es ist in Ordnung.
Vielen Dank dafür. Sehr einfach, geradlinig und leicht anwendbar.
Wie platziere ich Text im Dreieck, denn wenn ich Text hinzufüge, geht er außerhalb des Dreiecks.
Hallo,
Vielen Dank für diesen Beitrag. Ist es möglich, ein Dreieck innerhalb eines Elements einer Tabelle zu platzieren, um zu zeigen, dass es aufsteigend oder absteigend sortiert ist?
Das war die prägnanteste Erklärung zur Erstellung dieser Dreiecke, die ich bisher gefunden habe, und das wird hängen bleiben. Vielen Dank!
Das ist alles cool und so, aber was ist, wenn ich einem nach oben gerichteten Dreieck einen Rand geben möchte, aber nur die beiden Seiten des Randes zeigen lassen möchte und die Hypotenuse des Dreiecks nicht sichtbar ist?
Ich programmiere seit Jahrzehnten... dank dir habe ich endlich das Dreieck verstanden. Danke!
Interessant, was ich gefunden habe: Ändern Sie
<div>in<span>oder<i>und eine böse Verzerrung tritt auf! Immer noch fraglich, warum :/Wie sieht es mit der Browserkompatibilität aus? Einige Browser rendern Kanten kantig statt abgeschrägt. Zumindest war das früher einmal der Fall.
Danke, es hilft mir wirklich, diesen CSS-Trick zu verstehen!
Vielen Dank! Dieses Tutorial war großartig!
Wie groß ist die nicht spezifizierte Randgröße? Ich kann keine Regel finden, die besagt, dass sie standardmäßig 0 ist.