Zeichne ein X in CSS

Lesezeit: 7 Minuten

Benutzer-Avatar
natsuki_2002

Ich habe ein div, das wie ein orangefarbenes Quadrat aussieht

Geben Sie hier die Bildbeschreibung ein

Ich möchte irgendwie ein weißes X in dieses div zeichnen, damit es eher so aussieht

Geben Sie hier die Bildbeschreibung ein

Wie auch immer, dies in CSS zu tun, oder wird es einfacher sein, dies einfach in Photoshop zu zeichnen und das Bild als div-Hintergrund zu verwenden? Der div-Code sieht einfach so aus

div {
    height: 100px;
    width: 100px;
    background-color: #FA6900;
    border-radius: 5px;
}

  • können Sie nicht einfach den Buchstaben X verwenden und ihm eine absolute Position und Farbe Weiß geben und auf dem Hintergrund platzieren

    – topcat3

    20. September 2013 um 15:36 Uhr

  • @topcat3 — Stellen Sie sich vor, wie das in einem Screenreader klingen würde.

    – QUentin

    2. März 2020 um 10:24 Uhr

Benutzer-Avatar
Marc Audet

Sie möchten eine Entität, die als Kreuzmarke bekannt ist:

http://www.fileformat.info/info/unicode/char/274c/index.htm

Der Code dafür ist ❌ und es wird wie ❌ angezeigt

Wenn Sie eine perfekt zentrierte Kreuzmarkierung wünschen, gehen Sie wie folgt vor:

Crossmark-Demo

versuche folgendes CSS:

div {
    height: 100px;
    width: 100px;
    background-color: #FA6900;
    border-radius: 5px;
    position: relative;
}

div:after {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    content: "\274c"; /* use the hex value here... */
    font-size: 50px; 
    color: #FFF;
    line-height: 100px;
    text-align: center;
}

Siehe Demo-Geige

Browserübergreifendes Problem

Die Kreuzmarkierungsentität wird nicht mit Safari oder Chrome angezeigt. Dieselbe Entität wird jedoch in Firefox, IE und Opera gut angezeigt.

Es ist sicher, das kleinere, aber ähnlich geformte Multiplikationszeichen zu verwenden, × was als × angezeigt wird.

  • Irgendeine Idee, wie man in Safari eine Farbe auf das Kreuzzeichen erzwingen kann? Es wird immer rot dargestellt…

    – minar

    7. Juli 2015 um 14:20 Uhr


  • Der Hex-Code für das Unicode-Zeichen „MULTIPLICATION SIGN“ lautet \D7 (U+00D7), so wäre der CSS-Code content: "\D7";

    – Spyryto

    20. September 2017 um 10:19 Uhr


Benutzer-Avatar
Gildas.Tambo

Einzelelementlösung:Geben Sie hier die Bildbeschreibung ein

body{
    background:blue;
}

div{
    width:40px;
    height:40px;
    background-color:red;
    position:relative;
    border-radius:6px;
    box-shadow:2px 2px 4px 0 white;
}

div:before,div:after{
    content:'';
    position:absolute;
    width:36px;
    height:4px;
    background-color:white;
    border-radius:2px;
    top:16px;
    box-shadow:0 0 2px 0 #ccc;
}

div:before{
    -webkit-transform:rotate(45deg);
    -moz-transform:rotate(45deg);
    transform:rotate(45deg);
    left:2px;
}
div:after{
    -webkit-transform:rotate(-45deg);
    -moz-transform:rotate(-45deg);
    transform:rotate(-45deg);
    right:2px;
}
<div></div>

  • Wahrscheinlich zu komplex für diese Anwendung, aber eine sehr gute Demonstration dessen, was mit Transformationen gemacht werden kann.

    – Marc Audet

    20. September 2013 um 16:24 Uhr

  • Das ist die wahre Antwort! Nett. Definitiv nicht “überkomplex”, es ist perfekt, weil es keine Schriftart verwendet und auf jede Größe skaliert werden kann. Upvoted!

    – Erster Scheitelpunkt

    10. September 2014 um 20:57 Uhr

  • Ich stimme H Dog vollkommen zu, dies ist die richtige Antwort. Mit dem ❌ in Chrome zeigt ein Fragezeichen in einem Kästchen an. Mit einer Schriftart werden die Enden des Kreuzes abgewinkelt. Gut gemacht Tambo!!

    – Rogala

    9. März 2015 um 16:01 Uhr

  • Erstaunliche Lösung, positiv bewertet. Ich habe eine Antwort hinzugefügt, die Ihrer Arbeit adaptive Mathematik hinzufügt, wobei die Lösung selbst natürlich voll anerkannt wird.

    – Rashid Clark

    10. Juli 2020 um 18:08 Uhr

Benutzer-Avatar
Neurotransmitter

Noch ein anderer reines CSS Lösung (dh ohne die Verwendung von Bildern, Zeichen oder zusätzlichen Schriftarten), basierend auf @Bansoa ist die Antwort.

Ich habe es vereinfacht und ein bisschen hinzugefügt Flexbox Magie, um es ansprechbar zu machen.

Cross skaliert in diesem Beispiel automatisch auf jeden quadratischen Container, und um die Dicke seiner Linien zu ändern, muss man nur tunen height: 4px; (um ein Kreuz zu machen wirklich reaktionsschnellmöchten Sie vielleicht die einstellen height in Prozent oder anderen relativen Einheiten).

div {
    position: relative;
    height: 150px; /* this can be anything */
    width: 150px;  /* ...but maintain 1:1 aspect ratio */
    display: flex;
    flex-direction: column;
    justify-content: center;
}

div::before,
div::after {
    position: absolute;
    content: '';
    width: 100%;
    height: 4px; /* cross thickness */
    background-color: black;
}

div::before {
    transform: rotate(45deg);
}

div::after {
    transform: rotate(-45deg);
}
<div></div>

  • Angenommen, ich möchte, dass es mit nicht quadratischen DIVs funktioniert und das Seitenverhältnis nicht erhalten bleibt?

    – RossPresser

    4. Oktober 2018 um 13:15 Uhr

  • @RossPresser Sie können so etwas verwenden transform: scale(1, 0.75); um das Kreuz in die gewünschte Form zu skalieren. Es muss auf die angewendet werden <div>.

    – Neurotransmitter

    5. Februar 2020 um 10:26 Uhr


  • Beste Antwort hier noch.

    – avia

    2. August 2021 um 7:26 Uhr

Mit CSS-Verläufen können Sie ein hübsches X erstellen:

Bildschirmfoto

Demo: https://codepen.io/JasonWoof/pen/rZyRKR

Code:

<span class="close-x"></span>
<style>
    .close-x {
        display: inline-block;
        width: 20px;
        height: 20px;
        border: 7px solid #f56b00;
        background:
            linear-gradient(45deg, rgba(0,0,0,0) 0%,rgba(0,0,0,0) 43%,#fff 45%,#fff 55%,rgba(0,0,0,0) 57%,rgba(0,0,0,0) 100%),
            linear-gradient(135deg, #f56b00 0%,#f56b00 43%,#fff 45%,#fff 55%,#f56b00 57%,#f56b00 100%);
    }
</style>

Sie könnten einfach den Buchstaben X in den HTML-Code innerhalb des div einfügen und ihn dann mit CSS formatieren.

Siehe JSFiddle: http://jsfiddle.net/uSwbN/

HTML:

<div id="orangeBox">
  <span id="x">X</span>
</div>

CSS:

#orangeBox {
  background: #f90;
  color: #fff;
  font-family: 'Helvetica', 'Arial', sans-serif;
  font-size: 2em;
  font-weight: bold;
  text-align: center;
  width: 40px;
  height: 40px;
  border-radius: 5px;
}

  • Da dies ausgewählt wurde, werde ich die (möglicherweise) nützlichen Informationen aus meiner Antwort extrahieren und hier einfügen. &times; könnte schöner aussehen als ein X abhängig von Ihrer Schriftart.

    – Grau

    20. September 2013 um 15:55 Uhr


  • Alle anderen Antworten, die die Verwendung eines Pseudo-Elements (::before oder ::after) sind viel eher zu bevorzugen, da dies im Gegensatz zu dieser Antwort semantisch korrekt wäre. Dass der Fragesteller diese Antwort gewählt hat, zeigt, dass hier vielleicht Unverständnis herrscht …!

    – Netzsurfer

    20. September 2013 um 16:05 Uhr

  • @Netsurfer Ich stimme zu, dass die Verwendung der Pseudoelemente bevorzugt wird, aber ich bin mir nicht sicher, ob ich sagen würde, dass dies “semantisch falsch” ist. Die Verwendung eines Pseudo-Elements hat viele Vorteile (ich denke, der wichtigste ist die Tatsache, dass Sie den Text nicht auswählen können), aber das macht diese Lösung nicht falsch.

    – Grau

    20. September 2013 um 16:33 Uhr

  • @Gray: Das tut es! Denn wenn das ‘X’ eine ‘Funktion’ hat, dann sollte es eine sein <input> oder <button> Element. Und wenn nicht, ist es ein reines “Präsentations-Markup”. Es ist also in beiden Fällen falsch. Und vorausgesetzt, es dient nur zu Präsentationszwecken, dann sollte es mit CSS gemacht werden und dem Markup keine Nicht-Inhalte hinzugefügt werden.

    – Netzsurfer

    20. September 2013 um 17:06 Uhr

  • @Netsurfer Interessanter Standpunkt. Danke für die Klarstellung. Ich verstehe deinen Punkt, wenn du es so ausdrückst.

    – Grau

    20. September 2013 um 17:26 Uhr

Benutzer-Avatar
Grau

Noch ein weiterer Versuch … dieser verwendet x. Viele der Beispiele auf dieser Seite werden für mich nur als Box angezeigt, aber &times; funktioniert

HTML

<div class="close"></div>

CSS

.close {
    height: 100px;
    width: 100px;
    background-color: #FA6900;
    border-radius: 5px;
}
.close:after {
    position:relative;
    content:"\d7";
    font-size:177px;
    color:white;
    font-weight:bold;
    top:-53px;
    left:-2px
}

JSFIDDLE

  • Da dies ausgewählt wurde, werde ich die (möglicherweise) nützlichen Informationen aus meiner Antwort extrahieren und hier einfügen. &times; könnte schöner aussehen als ein X abhängig von Ihrer Schriftart.

    – Grau

    20. September 2013 um 15:55 Uhr


  • Alle anderen Antworten, die die Verwendung eines Pseudo-Elements (::before oder ::after) sind viel eher zu bevorzugen, da dies im Gegensatz zu dieser Antwort semantisch korrekt wäre. Dass der Fragesteller diese Antwort gewählt hat, zeigt, dass hier vielleicht Unverständnis herrscht …!

    – Netzsurfer

    20. September 2013 um 16:05 Uhr

  • @Netsurfer Ich stimme zu, dass die Verwendung der Pseudoelemente bevorzugt wird, aber ich bin mir nicht sicher, ob ich sagen würde, dass dies “semantisch falsch” ist. Die Verwendung eines Pseudo-Elements hat viele Vorteile (ich denke, der wichtigste ist die Tatsache, dass Sie den Text nicht auswählen können), aber das macht diese Lösung nicht falsch.

    – Grau

    20. September 2013 um 16:33 Uhr

  • @Gray: Das tut es! Denn wenn das ‘X’ eine ‘Funktion’ hat, dann sollte es eine sein <input> oder <button> Element. Und wenn nicht, ist es ein reines “Präsentations-Markup”. Es ist also in beiden Fällen falsch. Und vorausgesetzt, es dient nur zu Präsentationszwecken, dann sollte es mit CSS gemacht werden und dem Markup keine Nicht-Inhalte hinzugefügt werden.

    – Netzsurfer

    20. September 2013 um 17:06 Uhr

  • @Netsurfer Interessanter Standpunkt. Danke für die Klarstellung. Ich verstehe deinen Punkt, wenn du es so ausdrückst.

    – Grau

    20. September 2013 um 17:26 Uhr

Benutzer-Avatar
Antonio Regadas

Sie können die CSS-Eigenschaft “content” verwenden:

div {
    height: 100px;
    width: 100px;
    background-color: #FA6900;
    border-radius: 5px;
}

div:after {
    content: "X";
    font-size: 2em; 
    color: #FFF;
}

So was:
http://jsfiddle.net/HKtFV/

1300210cookie-checkZeichne ein X in CSS

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy