2016-10-14 1 views
4

zu machen Ich versuche, einen Rasterhintergrund aus Punkten zu machen. Ich kann nicht nur ein Bild verwenden, weil ich alles, was konfigurierbar zu sein:Versuchen, einen konfigurierbaren Punkt Hintergrund mit nur CSS

  • Hintergrundfarbe
  • Punktfarbe
  • Punktgröße
  • Raum zwischen den Punkten

Es sei denn, es gibt eine bessere Lösung, ich denke, der einzige Weg, dies zu erreichen, ist mit reinem CSS. Ich habe mich ein wenig umgesehen und bis jetzt ist das nächste, was ich gefunden habe, ein Radial-Gradient zu verwenden. Ich habe jedoch Schwierigkeiten. Ich war nicht in der Lage, eine Lösung zu finden, die es mir ermöglicht, sowohl die Punktgröße als auch den Abstand zwischen den Punkten zu konfigurieren, während eine Kreisform beibehalten wird. Ich bin nahe gekommen, aber dann sehen meine Punkte aus wie Diamanten statt Kreise. Hier ist, was ich mit so weit habe kommen:

https://jsfiddle.net/yzpuydtn/

body { 
    background-image: radial-gradient(black 2px, white 2px); 
    background-size:40px 40px; 
} 

Hat jemand irgendwelche Vorschläge? Anfangs möchte ich, dass meine Punkte 2px x 2px und 40 px auseinander liegen. Gibt es dafür einen besseren Weg oder konfiguriere ich meinen Farbverlauf einfach falsch? Ich denke, ich bin nah dran, aber abhängig davon, wie ich zoome, sehen sie aus wie Kreise, Rauten oder Quadrate und ich brauche es immer wie Kreise aussehen.

+1

Ich würde einfach SVG verwenden; dann ist es skalierbar und sollte sich beim Zoomen nicht verformen. –

+0

Wenn ich ein SVG verwende, kann ich Farben und Abmessungen im laufenden Betrieb anpassen? – user3715648

+0

Sie können mit SVG über [das DOM] (https://www.w3.org/TR/SVG/svgdom.html) interagieren, genau wie HTML. –

Antwort

2

Mit%: https://jsfiddle.net/yzpuydtn/11/
Mit vw: http://jsfiddle.net/otwhu0uk/2/

Hier ist ein Beispiel. Ich hoffe wirklich, dass dir das hilft.

body { 
    /* Controls size of dot */ 
    background-image: radial-gradient(black 5%, white 0%); 
    /* Controls Spacing, First value will scale width, second, height between dots */ 
    background-size:5% 10%; 
} 
+0

Bitte lesen Sie noch einmal die Frage. Und dann erklären Sie in Ihrer Antwort, wie Sie perfekte Kreise in beliebiger Größe und Entfernung erhalten. –

+0

Sorry, stürzte meine Antwort. Der Grund, warum sie perfekte Kreise sind, ist, weil ich Prozentsätze anstelle von Pixeln als Einheiten verwende. Ich werde versuchen, Ihre Frage richtig zu beantworten. –

+0

Sorry, aber ich sehe nicht, wie dein Antwortcode * konfigurierbar * ist und wie '%' irgendeinen Unterschied machen könnte https://jsfiddle.net/yzpuydtn/1/ –

0

https://jsfiddle.net/yzpuydtn/9/
Mit JavaScript:

var setBackground = function(dotColor, backgroundColor, dotRadius, dotSpacing){ 
    // create string for background-image property 
    var image = 'radial-gradient(circle, '+dotColor+' '+dotRadius+'px, '+backgroundColor+' 0px)'; 
    // create string for background-size property 
    var size = dotSpacing+'px '+dotSpacing+'px'; 
    //set properties 
    document.body.style.backgroundImage = image; 
    document.body.style.backgroundSize = size; 
}; 


Beispiel:
setBackground('red','green','20','50');
oder
setBackground('rgb(255,165,0)','rgb(160,255,170)','10','60');
Hoffe, es hilft.

+0

Danke. Ich habe das OP ein wenig aktualisiert, um es klarer zu machen. Ich habe anpassbar erwähnt, so dass jemand einfach nicht vorschlagen würde, ein Bild zu verwenden; Ich weiß, wie man JS verwendet, um es anzupassen. Das Problem, auf das ich stoße, ist, das richtige CSS zu finden, mit dem diese Dinge geändert werden können. In der Geige, die ich gepostet habe, habe ich es fast, aber die Punkte sind nicht immer Kreise. – user3715648

+0

Werfen Sie einen Blick auf [Wie formatiere ich meine Code-Blöcke] (http://meta.stackoverflow.com/questions/251361/how-doi-i-format-my-code-blocks). –

+0

Vielleicht fügen Sie das Schlüsselwort 'circle' zu radial-gradient hinzu, d. H. 'Radial-gradient (circle, black 2px, white 2px)'? (https://developer.mozilla.org/en-US/docs/Web/CSS/radial-gradient) –

Verwandte Themen