CSS: Punkte in Ecken von div

8

Ich versuche, in jede Ecke eines Containers einen Punkt zu setzen. Ich denke, der Trick dabei ist eine Kombination aus .my-container: before und dem Festlegen der Rahmen- oder Hintergrundeigenschaft von :before . Der Effekt, den ich möchte, ist ähnlich wie SO # 17306087 , aber ich möchte keine Bilder verwenden.

Bearbeiten

jsfiddle

Ich werde das ziemlich oft verwenden, also würde es bevorzugen, dass es automatisch mit einer CSS-Klasse passiert (keine zusätzlichen DOM-Elemente erforderlich).

Bearbeiten

Da svg textbasiert ist und direkt in css eingefügt werden kann, suche ich nach dieser Methode. Ich sehe hier, dass das funktioniert: Beispiel Geige

meine aktualisierte Geige (hat zur Zeit einen CSS-Fehler, den ich versuche zu lokalisieren) feste Geige mit 4 Punkten mit Hintergrund-Prop

Der Svg ist gültig und wirft keine Fehler wie DOM: Geige

    
jacob 07.01.2014, 05:04
quelle

4 Antworten

11

Sie können es nur auf einem Div und mit Standard-CSS tun.

Der Trick besteht darin, die Pseudo-Elemente zu verwenden, um zwei Kreise mit radialen Gradienten anzuzeigen.

%Vor%

Geige

Sie können die Kreise auch in den Elementen selbst zeichnen, aber dann können Sie sie nicht auf Elemente mit Hintergrund anwenden.

Der obige Code macht die Kreise pixelig. Es ist besser, 1 Pixel für den Übergang von Rot zu Transparent zu lassen

%Vor%

aktualisierte Geige

    
vals 07.01.2014, 18:01
quelle
6

Wenn Sie davon ausgehen, dass Sie mit etwas Verrücktem einverstanden sind, gibt es eine CSS-Lösung, die vollständig auf einer einzigen Klasse (auf einem einzelnen Element) basiert. Die einzige Einschränkung ist, dass dieses Element mindestens ein Kindelement haben muss (was wahrscheinlich sowieso der Fall sein sollte, oder?)

%Vor%

Sie können :before und :after verwenden, um Ihre Punkte zu erstellen, obwohl die Herausforderung darin besteht, dass dies nur zwei Punkte pro Element erzeugt. Aus diesem Grund habe ich es so eingestellt, dass es nach dem ersten Element im Container sucht und dieselben Stile darauf anwendet. (Der Platzhalterselektor * sucht nach einem Element und :first-child stellt sicher, dass es nur auf ein untergeordnetes Element angewendet wird)

Siehe Geige: Ссылка

Jetzt wird das natürlich nicht in jeder Situation funktionieren, und Sie können immer mit dem Selektor für dieses zweite Element herumspielen, wenn Sie etwas haben, das besser funktioniert.

Abgesehen davon, wenn Sie es ein wenig praktischer (aber weniger cool) machen möchten, würde ich empfehlen, zwei Wrapper-Div-Elemente zu erstellen und jeder von ihnen eine einzigartige Klasse zu geben, die jeweils zwei Punkte mit einem einfachen erzeugt :before und :after .

    
Blake Mann 07.01.2014 05:51
quelle
4

Ссылка

HTML:

%Vor%

CSS

%Vor%

BEARBEITEN:

jQuery-Lösung zum einfachen Anhängen der Punkte an verschiedene divs mit der gleichen Klasse

%Vor%

Damit werden die 4 Punkte an jedes Element mit der Klasse .myDivsThatNeedDotsClass

angehängt

Mit diesem Ansatz können Sie den HTML-Code von oben entfernen, aber behalten Sie das CSS wie es ist.

Wenn Sie nicht für alle die gleiche Klasse haben, können Sie dies tun

%Vor%     
CRABOLO 07.01.2014 05:15
quelle
-2

Folgendes kann Ihr Aufschlag sein      <div class="my-container"> <div class="tr"></div> <div class="tl"></div> <div class="br"></div> <div class="bl"></div> <p class="stuff">Some stuff</p> </div>

das CSS wie folgt

%Vor%     
Green Wizard 07.01.2014 06:33
quelle

Tags und Links