BTW: Entstanden ist diese Lösung, weil anfangs eine kreisförmige Anzeige gefragt war. Ein einfacher Balken mit Text lässt sich jedoch viel einfacher mit HTML und CSS realisieren. Wenn Du für die Zukunft flexibler sein willst, könnte es sich lohnen, auf eine solche Lösung umzustellen.
Beiträge von Sempervivum
-
-
Da fällt mir auch keine Lösung ein.
Nur, dass man es mit Prozentwerten responsiv machen könnte:
https://jsfiddle.net/Sempervivum/7cv7Lnbk/2/
Flexbox erlaubt auch absolute Positionierung:
https://stackoverflow.com/questions/3255…856609#33856609
aber ich verspreche mir bei diesem Problem keine Vorteile dadurch.
-
Ich habe mal eine Funktion synchronisiereBalken hinzu gefügt, die das tun sollte, was Du erwartest:
Code
Alles anzeigenfunction erstelleBalken(selector, value, max, options) { var balkenEigenschaften = { barWidth: 400, barHeight: 40, barPos: 10, cornerRadius: 5, colorBg: "lightgrey", colorText: "black", textPos: "right", templateText: "{value} min" } $.extend(balkenEigenschaften, options); $(selector).each(function (index, element) { var cv = $(this); cv.data("balkenEigenschaften", balkenEigenschaften); cv.data("max", max); if (value > max) max = value; var colorBar = getColor2(value, balkenEigenschaften); var height = 2 * balkenEigenschaften.barPos + balkenEigenschaften.barHeight; cv.drawText({ layer: true, name: 'text', fromCenter: false, fillStyle: balkenEigenschaften.colorText, strokeWidth: 4, x: balkenEigenschaften.barPos, y: balkenEigenschaften.barPos, fontSize: 40, fontFamily: 'Arial', text: balkenEigenschaften.templateText.replace("{value}", max).replace("{remaining}", max) }); cv.data("max-text-width", cv.measureText('text').width); yBar = balkenEigenschaften.barPos + cv.measureText('text').height / 2 - balkenEigenschaften.barHeight / 2; if (balkenEigenschaften.textPos == "left") { var xBar = balkenEigenschaften.barPos + cv.measureText('text').width + 5, xText = balkenEigenschaften.barPos; } else { var xBar = balkenEigenschaften.barPos, xText = balkenEigenschaften.barPos + balkenEigenschaften.barWidth + 10; } var width = balkenEigenschaften.barPos + cv.measureText('text').width + 10 + balkenEigenschaften.barWidth + balkenEigenschaften.barPos; cv.attr("width", width); cv.attr("height", height); cv.setLayer('text', { text: getText(value, max, balkenEigenschaften), x: xText, }).drawLayers(); cv.drawRect({ layer: true, name: 'background', fromCenter: false, fillStyle: balkenEigenschaften.colorBg, x: xBar, y: yBar, cornerRadius: balkenEigenschaften.cornerRadius, width: balkenEigenschaften.barWidth, height: balkenEigenschaften.barHeight }); cv.drawRect({ layer: true, name: 'bar', fromCenter: false, fillStyle: colorBar, x: xBar, y: yBar, cornerRadius: balkenEigenschaften.cornerRadius, width: value / max * balkenEigenschaften.barWidth, height: balkenEigenschaften.barHeight }); }); } function sychronisiereBalken(selector) { var maxTextWidth = 0; $(selector).each(function (index, element) { var cv = $(element); var currentWidth = cv.data("max-text-width"); if (currentWidth > maxTextWidth) maxTextWidth = currentWidth; }); $(selector).each(function (index, element) { var cv = $(element); var balkenEigenschaften = cv.data("balkenEigenschaften"); if (balkenEigenschaften.textPos == "left") xText = balkenEigenschaften.barPos; else xText = balkenEigenschaften.barPos + maxTextWidth + balkenEigenschaften.barWidth + balkenEigenschaften.barPos; cv.setLayer('background', { x: maxTextWidth + balkenEigenschaften.barPos }).setLayer('bar', { x: maxTextWidth + balkenEigenschaften.barPos }).setLayer('text', { x: xText }); cv.attr("width", balkenEigenschaften.barPos + 2 * maxTextWidth + balkenEigenschaften.barWidth + balkenEigenschaften.barPos) .drawLayers(); }); } erstelleBalken("#display1", 50, 100); erstelleBalken("#display2", 5, 100, {textPos: "left"}); sychronisiereBalken("#display1, #display2");Rechtsausrichtung der Texte fehlt noch. Ich halte dies nur für sinnvoll, wenn der Text links vom Balken steht?
-
Zitat
Kann man mit JS auf einen Ordner zugreifen? Ohne ajax ?
Nein, auf einen Ordner auf dem Server nur mit Ajax.
Edit: In meinem Posting #3 habe ich vergessen, die PHP-Funktion glob() einzutragen, damit ist es ganz einfach.
-
Warum Greasemonkey? Ich verstehe dich so, dass Du eine Slideshow mit den Bildern auf deiner Homepage haben willst?
In dem Fall kannst Du die Bilder sehr einfach mit der PHP-Funktion aus dem Ordner auslesen und das HTML für die Slideshow erzeugen. Für die Slideshow empfehle ich z. B. Cycle2.
-
Möglich ist das auf jeden Fall, auch responsiv. Ich stelle mir nur die Frage, ob es praktikabel ist. Um so ein Layout betrachten zu können, braucht man ja immer einen Riesen Bildschirm. Und Sinn macht das Ganze ja nur, wenn in die Kästchen auch Inhalte hinein kommen. Werden sie dafür nicht viel zu klein?
-
Herunter skaliert werden müssen die Bilder ja auf jeden Fall, entweder gleich im iPhone oder später auf dem PC. Aus praktischen Gründen würde ich die Bilder jedoch in voller Größe machen und aufbewahren, denn sonst kann man sie später nicht drucken (dafür wäre 300 x 400 viel zu klein) und auch für das Betrachten auf dem PC bildschirmfüllend wären sie zu klein.
-
Dazu brauchst Du ein Synchronisationsprogramm, das FTP unterstützt. Ich benutze z. B. gern Freefilesync.
-
Stimmt, da hat jeder so seinen eigenen Stil. Was nicht nur reine Geschmackssache ist, ist die Formatierung: Richtiges Einrücken hilft ungemein, den Code zu verstehen und Fehler schnell zu erkennen. Ein guter Editor ist dabei hilfreich. Bei mir Rechtsklick - "Dokument formatieren" und der Code ist übersichtlich, auch wenn er vorher chaotisch aussah.
-
Zitat
Danke! Es soll was links im Footer stehen und etwas rechts stehen und das ohne Abstand.
Das kannst Du sehr leicht mit zwei Containern und justify-content: space-between; oder justify-content: center; erreichen, je nachdem, wie es aussehen soll.
-
Zitat
Kriege das auf der schnelle nicht hin .
Ich muß jetzt erstmal zur Arbeit. Vieleicht kann sich das in der Zeit ein anderer ankucken und dir helfen.
Wenn ich es richtig verstanden habe, sollte dies es tun:
Code
Alles anzeigen<style> #wrapper1 { display: inline-flex; flex-direction: column; border: 2px solid lightblue; } .line { display: flex; flex-direction: row; } .box { /* width: 12.5vw; height: 12.5vw; */ border: 2px solid lightblue; display: flex; align-items: center; justify-content: center; position: relative; } .tt { position: absolute; width: 80%; left: 10%; text-align: center; background-color: aquamarine; display: none; } .box:hover .tt { display: block; } </style> <div id="wrapper1"> </div> <input id="nrinput" type="number" min="2" max="10" onchange="go(this.value);">Gib die Anzahl der Kästchen pro Kante ein. <script> function go(nr) { var wrapper = document.getElementById("wrapper1"); wrapper.innerHTML = ""; for (var i = 0; i < nr; i++) { var line = document.createElement("div"); line.className = "line"; wrapper.appendChild(line); for (var j = 0; j < nr; j++) { var box = document.createElement("div"); box.className = "box"; var d = 50 / nr + "vw"; box.id = "box-" + (i + 1) + "." + (j + 1); box.style.width = box.style.height = d; box.innerHTML = (i * nr + j + 1); var tt = document.createElement("div"); tt.className = "tt"; tt.innerHTML = (i +1) + "." + (j + 1); tt.style.top = d; box.appendChild(tt); line.appendChild(box); } } } go(5); </script>Hiermit: box.id = "box-" + (i + 1) + "." + (j + 1); habe ich jeder Box eine ID mit Zeilen- und Spaltennummer gegeben. Damit kannst Du dann von Javascript aus darauf zugreifen.
-
Zitat
Fals hier einer mitlesen tut und ahnung hat ,der soll bitte was sagen wenn ich es falsch mache. Dannke.
IMO macht ein <ul> ohne <li>-s drin keinen Sinn.
-
https://caniuse.com/#feat=css-grid
ZitatPartial support in IE refers to supporting an older version of the specification.
Ist das das Problem?
-
-
Dann brauchst Du ja eigentlich nur den Header zu verdoppeln und die linke Sidebar zu löschen ...
-
-
Zitat
Sempervivum wahr das absicht das unter dein Link ein Link zu Fiddle ist ?
Ja, das war Absicht, aber ich habe den Link inzwischen geändert, weil der Footer im Fiddle nicht richtig angezeigt wurde. Scheint in letzter Zeit etwas der Wurm drin zu sein. Manchmal verschwindet auch einfach das Ergebnis-Fenster ...
-
Ich empfehle, dich mit Flexlayout vertraut zu machen, z. B. hier bei HTML-Seminar:
https://www.html-seminar.de/css-flexbox.htm
Hier findest Du eine Basis mit Header, Content und Footer:
https://jsfiddle.net/Sempervivum/d4ao5kbh/5/
Versuche, die Sidebar selbständig zu ergänzen.
-
-
ZitatAlles anzeigen
Ich möchte rund 50 Zahlen per random erzeugen. Diese Zahlen sollen dann für die weitere Verwendung als Bilder wie
Zahl1.jpg
Zahl2.jpg
..
..
zahl50.jpg
zur Verfügung stehen.
Diese Zahlen spreche ich in meinem Programm an verschiedenen Stellen an. Ich zeige zum Beispiel Einige ,wieder zufällig, ausgewählt an und der User muss dann Bestimmte davon anklicken. Wie das mit canvas realisiert werden kann ist mir vollkommen schleierhaft.
Sollte alles kein Problem sein. Du kannst beliebig viele Canvas-Elemente anlegen und mit Zahlen versehen, auch zufällig.
ZitatIch müsste aus einem Canvas ein JPG Bild machen.
Sieh dir die Funktion toDataURL an, damit ist das möglich:
https://developer.mozilla.org/de/docs/Web/AP…ement/toDataURL
Ich vermute, dass Du das betreffende Bild auf deiner Seite anzeigen willst. Dann kannst Du das Ergebnis von toDataURL direkt als src für ein img-Element verwenden.
Möchtest das Bild dagegen auf dem Server speichern, wäre es eher angebracht, das Ganze mit PHP zu erledigen.