Beiträge von Sempervivum
-
-
Geht nicht gibt's nicht:
https://stackoverflow.com/questions/6366…ts-by-classname
Allerdings wird das Ganze dann so kryptisch, dass man bzgl. Lesbarkeit kaum noch einen Vorteil gegenüber Regex hat.
-
-
Ich bin zwar mit Joomla-Modulen nicht vertraut aber bei Javascript/jQuery-Bibliothen/Plugins gibt es häufig eine Vielzahl von Optionen, mit denen man alles erdenkliche steuern und konfigurieren kann. Hast Du bei deinem Modul genau nachgesehen, ob es etwas derartiges gibt?
-
-
-
-
Zitat
wie genau fügt man den in die Javascript Version weitere bilder ein?
Die Anzahl der Bilder kannst du mit der Variablen nrimg einstellen. Alles andere wird dann automatisch berechnet. Aber ich schrieb ja oben schon, dass Du wahrscheinlich verschiedene Bilder haben willst, Dann musst Du diese in einem Array ablegen und in der for-Schleife in das HTML eintragen. Ich wollte dir ja auch noch etwas zu tun lassen ;D
ZitatUnd ist es möglich den abstand der kleinen bilder zum großen zu verkleinern oder ist das durch die Bildgröße vorgegeben?
Ja, der Abstand wird durch die Größe der beiden Container festgelegt:
Code#rotwrapper { display: flex; align-items: center; justify-content: center; background-color: lightblue; width: 600px; height: 600px; position: relative; }und
Code.imgwrapper { position: absolute; top: 0; left: 0; width: 600px; height: 600px; transform-origin: center center; }Wenn Du width und height verkleinerst, rücken die kleinen Bilder näher an das zentrale.
Und diese musst Du anpassen:
Code#rotwrapper .imgwrapper img { width: 74px; height: 74px; position: absolute; top: 0; left: 263px; }und zwar left, so dass das Bild genau in der Mitte ist. Hier: 600px/2 - 74px/2
-
Mein zweiter Ansatz:
- Die Werte werden automatisch mit Javascript berechnet und das CSS und das HTML generiert
Templates und CSS:
Code
Alles anzeigen<template id="anitpl"> .imgwrapper.nr{{nr}} { animation: ani{{nr}} 2s infinite linear; } @keyframes ani{{nr}} { from { transform: rotate({{start}}deg); } to { transform: rotate({{end}}deg); } } </template> <template id="rottpl"> <div class="imgwrapper nr{{nr}}"> <img src="images/moon-transparent.png"> </div> </template> <style id="dynstyle"></style> <style> #rotwrapper { display: flex; align-items: center; justify-content: center; background-color: lightblue; width: 600px; height: 600px; position: relative; } #rotwrapper img#centerimg { width: 300px; height: 300px; } #rotwrapper .imgwrapper img { width: 74px; height: 74px; position: absolute; top: 0; left: 263px; } .imgwrapper { position: absolute; top: 0; left: 0; width: 600px; height: 600px; transform-origin: center center; } </style>HTML und Javascript:
Code
Alles anzeigen<div id="rotwrapper"> <img id="centerimg" src="images/earth-transparent.png"> </div> <script> var vdynstyle = document.getElementById("dynstyle"); var vanitpl = document.getElementById("anitpl"); var vrottpl = document.getElementById("rottpl"); var vrotwrapper = document.getElementById("rotwrapper"); var nrimg = 13; for (var i = 0; i < nrimg; i++) { var start = 360 / nrimg * i; var end = 360 + start; var ani = vanitpl.innerHTML.replace("{{start}}", start) .replace("{{end}}", end) .replace(/\{\{nr\}\}/g, i + 1); vdynstyle.innerHTML += ani; var rotimg = vrottpl.innerHTML.replace("{{nr}}", i + 1); vrotwrapper.innerHTML += rotimg; } </script>Was noch fehlt: Unterschiedliche Bilder. Am besten die URLs in einem Array ablegen und in das Template einfügen.
-
Ja, das ist mit CSS möglich. Mein erster Ansatz
- nur CSS
- Werte müssen händisch berechnet werden
CSS:
Code
Alles anzeigen<style> #rotwrapper { display: flex; align-items: center; justify-content: center; background-color: lightblue; width: 600px; height: 600px; position: relative; } #rotwrapper img#centerimg { width: 300px; height: 300px; } #rotwrapper .imgwrapper img { width: 74px; height: 74px; position: absolute; top: 0; left: 263px; } .imgwrapper { position: absolute; top: 0; left: 0; width: 600px; height: 600px; transform-origin: center center; } .imgwrapper.nr1 { animation: ani1 2s infinite linear; } .imgwrapper.nr2 { animation: ani2 2s infinite linear; } @keyframes ani1 { from { transform: rotate(0); } to { transform: rotate(360deg); } } @keyframes ani2 { from { transform: rotate(calc(27.7deg)); } to { transform: rotate(387.7deg); } } </style>HTML:
Code<div id="rotwrapper"> <img id="centerimg" src="images/earth-transparent.png"> <div class="imgwrapper nr1"> <img src="images/moon-transparent.png"> </div> <div class="imgwrapper nr2"> <img src="images/moon-transparent.png"> </div> </div>Das muss dann erweitert werden bis es 13 Bilder sind.
-
Wenn die Seite eine vollständige HTML-Seite ist, bietet es sich als Alternative an, sie mit DOMDocument zu parsen und sie dann auszuwerten.
-
Welchen Browser benutzt Du denn? IE unterstützt das Download-Attribut nicht:
https://caniuse.com/#feat=downloadWenn es das nicht ist, musst Du es irgend wie falsch anwenden. Poste mal deinen Code.
-
Dann probiere mal, ob Du mit dieser Funktion zum Ziel kommst:
Codefunction summieren() { var outputs = document.querySelectorAll(".divdice p[id^='output']"); var sum = 0; for (var i = 0; i < outputs.length; i++) { var content = outputs[i].innerHTML; if (content != "") sum += parseInt(content); } document.getElementById("outputsumme").innerHTML = sum; }BTW: Ich habe da auch etwas mit Objekten experimentiert:
HTML
Alles anzeigen<!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <title>Würfelspiel</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" type="text/css" href="css/indexDestop2.css"> <link rel="stylesheet" type="text/css" media="(max-width: 800px)" href="css/indexMobil2.css"> <script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script> <template id="dicetpl"> <div class="divdice" id="divdice{{nr}}"> <img src="{{img}}"> <h1 class="h1wuerfel">{{title}}</h1> <p class="output"></p> <button class="btn">Los!</button> </div> </template> </head> <body> <!-- img simon --> <div class="divsimon"> <img class="imgsimon1" src="picture/simon1.jpeg"> <img class="imgsimon2" src="picture/simon3.jpeg"> </div> <div id="dicecontainer"></div> <div id="summary"> <div> <h2>Ausgabe der Werte der Würfel</h2> <ul id="sumlist"></ul> </div> <div> <h2>Ausgabe der Summe der Würfel</h2> <p id="outsum"></p> </div> </div> <div class="divsimon"> <img class="imgsimon1" src="picture/simon1.jpeg"> <img class="imgsimon2" src="picture/simon3.jpeg"> </div> <script> function Sum() { var list = $("ul#sumlist"); var outsum = $("#outsum"); var values = []; return { createVal: function (nr, title) { values[nr] = 0; list.append('<li>' + title + ': <span id="val' + nr + '"></span></li>'); }, reportVal: function (nr, val) { values[nr] = val; list.find("#val" + nr).text(val); sum = 0; values.forEach(function (item, idx) { sum += item; }); outsum.text(sum); } } } function Dice(min, max, title, pic, nr, sum) { sum.createVal(nr, title); var val = 0; function randomNumber(min, max, out) { var rnd = Math.floor(Math.random() * (max - min + 1)) + min; out.text(rnd); val = rnd; sum.reportVal(nr, val); } var thehtml = $("#dicetpl").html(); thehtml = thehtml.replace("{{nr}}", nr) .replace("{{img}}", pic) .replace("{{title}}", title); var thedice = $(thehtml); var out = thedice.find(".output"); thedice.find(".btn").on("click", function () { randomNumber(min, max, out) }); $("#dicecontainer").append(thedice); } var thesum = new Sum(); var dice1 = new Dice(1, 4, 'Würfel 1-4', "picture/picwuerfel4.jpg", 1, thesum); var dice2 = new Dice(1, 6, 'Würfel 1-6', "picture/picwuerfel6.jpg", 2, thesum); var dice3 = new Dice(1, 8, 'Würfel 1-8', "picture/picwuerfel8.jpg", 3, thesum); var dice4 = new Dice(1, 10, 'Würfel 1-10', "picture/picwuerfel10.jpg", 4, thesum); var dice5 = new Dice(1, 12, 'Würfel 1-12', "picture/picwuerfel12.jpg", 5, thesum); var dice6 = new Dice(1, 20, 'Würfel 1-20', "picture/picwuerfel20.jpg", 6, thesum); </script> </body> </html> -
-
Anders als chrisee82 schlage ich vor, bei jedem Würfeln die komplette Summe neu zu berechnen, dann muss man sich um das Subtrahieren, wenn schon einmal gewürfelt wurde, nicht kümmern.
Dann poste doch noch Mal den Stand, den Du jetzt hast.
-
-
Selfhtml ist immer eine gute Adresse für solche Fragen:
-
Dann ist es kein Wunder, siehe z. B. hier:
-
Safari auf Mac oder Safari auf Windows?
-
Mit dem einfachen Einbetten durch iFrame wirst Du da nicht weiter kommen, sondern Du wirst die Javascript-API von Youtube verwenden müssen:
https://developers.google.com/youtube/iframe_api_reference?hl=de