Redland hat die URL ihrer Seite gepostet, dort kann man alles einsehen, was das Herz begehrt, CSS, JS, HTML.
Beiträge von Sempervivum
-
-
Wenn ich die Elemente so anordne:
Code
Alles anzeigen<div id="bg"> <h1> Adventskalender 2018! </h1> <div class="Kalender"> <div class="door"><span class="contentclose">17</span><span class="contentopen"><img src="images/busleft.png" /></span></div> <div class="door"><span class="contentclose">18</span><span class="contentopen">Offen 18</span></div> <div class="door"><span class="contentclose">19</span><span class="contentopen">Offen 19</span></div> <div class="door"><span class="contentclose">20</span><span class="contentopen">Offen 20</span></div> </div> </div> <div id="snow"></div>Und dem div#snow die Eigenschaft pointer-events:none gebe:
funktioniert es bei mir einwandfrei.
Das Problem bei deinem Versuch in #120 war, dass Du nicht dem div#snow die Eigenschaft pointer-events:none gegeben hast, sondern einem ganz anderen.
-
Ich empfehle, dieses Muster von MrMurphy zu verwenden:
http://boratb.bplaced.net/index55.html
Es vermeidet die Nachteile von position:fixed und passt sich automatisch an die Höhe des Header bzw. bei dir des <h3> an.
-
Hallo Draga,
- oder notiere das div#snow ganz am Anfang des body
- oder gib ihm die Eigenschaft pointer-events:none damit es durchlässig für Mausklicks wird.
-
Klasse gemacht, Basti, Respekt! Aber wenn Du fragst, ob es etwas einfacheres gibt, ist meine Antwort klar, dass es mit jCanvas viel einfacher ist, denn dort schreibst Du einfach drawArc() und das Kreissegment ist fertig. Oder mit SVG und d3.js ist es ähnlich.
-
Schau mal, hier wird diese Aufgabe diskutiert:
https://stackoverflow.com/questions/1883…c-with-pure-css
Es ist aber einfacher und besser verständlich, wenn man es mit jCanvas macht. Dann hat man auch gleich eine API, um es steuern zu können. Vielleicht hast Du meine Circle Timer und die kreisförmige Anzeige gesehen.
-
Dass es nicht funktioniert, liegt daran, dass Du mit innerHTML den Inhalt der gesamten Box überschrieben hast, so dass er hier:
den geklickten Tag nicht mehr findet, weil das Element jetzt das Bild ist.
Du musst das Bild in das zweite content-span eintragen, so:
-
Sehr gut, dann braucht man nur classlist.add durch classlist.toggle zu ersetzen:
Code
Alles anzeigenvar tuerchen = document.querySelectorAll(".door"); for (var i = 0; i < tuerchen.length; i++) { tuerchen[i].addEventListener("click", function () { now = new Date(); dayNow = now.getDate(); month = now.getMonth() + 1; dayNow = 19; // nur zum Test month = 12; // nur zum Test var dayClicked = parseInt(this.children[0].innerHTML); if (month == 12 && dayClicked <= dayNow) { this.classList.toggle("open"); } else { // Hinweis, dass es noch zu frueh fuer dieses Tuerchen ist } }); } -
Das Bild kannst Du mit diesem CSS in den Vordergrund bringen:
Für das Schließen gibt es mehrere Möglichkeiten:
- In das Bild klicken
- In einer Ecke des Bildes ein Kreuz-Symbol für das Schließen anbringen
Was wäre dir lieber?
-
-
Zitat
Vermisse da nur die dunklen Töne wie Schwarz und Braun,oder ich habe was Falsch gemacht?
Nein, Du hast nichts falsch gemacht. HSL bedeutet hue (Farbton), saturation (Sättigung) und lightness (Helligkeit). Und wie Du siehst, habe ich nur den Farbton zufällig gemacht. Die Absicht war, möglichst leuchtende Farben (max. Sättigung) zu bekommen. Wenn Du auch die dunklen (braun, schwarz) und hellen (weiß) Farben bekommen willst, musst Du auch die Helligkeit zufällig machen:
-
-
Das ist CSS. Bei CSS gibt es bestimmte Regeln, wenn die selbe Eigenschaft mehrmals definiert wird. Die wichtigsten:
- Die Reihenfolge, was zuletzt kommt, überschreibt alles davor.
- Der Selektor, der spezifischer ist, setzt sich durch, z. B. div.theclass ist spezifischer als einfach div und die betr. Eigenschaften setzen sich durch.
- !important veranlasst, dass sich die Eigenschaft durchsetzt.
- Eigenschaften, die mit Javascript zugewiesen wurden, haben höchste Priorität.
-
-
-
Wie diese Seite es macht, weiß ich nicht, aber ich würde es so machen:
Code
Alles anzeigen<style> .triggercontent { display: inline-block; } #c1 { background-color: lightgrey; } #c2 { background-color: lightblue; } #c1.hovered { background-color: darkgrey; } #c2.hovered { background-color: turquoise; } </style> <section class="container" id="c1"> <p class="content">pthjw</p> <p class="triggercontent" data-hovercolor="darkgrey">Email</p> <p class="content">öhrenjth </p> </section> <section class="container" id="c2"> <p class="content">pthjw</p> <p class="triggercontent" data-hovercolor="blue">Irgend was</p> <p class="content">öhrenjth </p> </section> <script> $(".triggercontent").hover(function () { $(this).closest(".container").addClass("hovered"); }, function () { $(this).closest(".container").removeClass("hovered"); }); </script>Erfordert jQuery, Du musst es einbinden, damit es funktioniert.
-
-
Hiermit:
data: { img: dataURL, tgroup : tgroup }
übergibst du nicht den Inhalt des input-Feldes sondern das ganze DOM-Element. So sollte es funktionieren:
Codevar canvas = document.getElementById('mycanvas'); var dataURL = canvas.toDataURL(); var grp = document.getElementById('tGroup').value; $.ajax({ type: "POST", url: "savepic.php", data: { img: dataURL, tgroup: grp } }).done(function (msg) { alert(msg); });Und mit dem PHP bist Du ja schon auf dem richtigen Wege:
Code
Alles anzeigen$img = $_POST['img']; $tgroup = $_POST['tgroup']; if (strpos($img, 'data:image/png;base64') === 0) { $img = str_replace('data:image/png;base64,', '', $img); $img = str_replace(' ', '+', $img); $data = base64_decode($img); $file = 'test-' . $tgroup . '.png'; if (file_put_contents($file, $data)) { echo "Der Canvas wurde gespeichert als $file."; } else { echo 'Der Canvas konnte nicht gespeichert werden.'; } } -
Geht aber problemlos auch automatisch:
Code
Alles anzeigen<div id="testbg"></div> <style> #testbg { width: 700px; height: 600px; background-repeat: no-repeat; background-position: top right; } </style> <script> function setBackground(imgurl, containerid) { var cv = document.createElement("canvas"); cv.width = 600; cv.height = 600; //document.body.appendChild(cv); var ctx = cv.getContext("2d"); var img = new Image(); img.onload = function () { ctx.drawImage(img, 0, 0); var imgData = ctx.getImageData(0, 0, 1, 1); var dta = imgData.data; var rgb = 'rgb(' + dta[0] + ', ' + dta[1] + ', ' + dta[2] + ')'; console.log(rgb); var cont = document.getElementById(containerid); cont.style.backgroundColor = rgb; cont.style.backgroundImage = 'url(' + imgurl + ')'; }; img.src = imgurl; } setBackground("images/dia1.jpg", "testbg"); </script> -
Was Lightbox betrifft, bin ich eigentlich der Meinung, dass das Standard ist. Z. B. Fancybox3:
http://fancyapps.com/fancybox/3/
Klick auf den Hintergrund schließt zwar das große Bild, aber das kann laut Doku durch eine Option deaktiviert werden.