Das geht viiiieeel einfacher mit Flex:
Dem umgebenden Container ein display;flex geben:
Das geht viiiieeel einfacher mit Flex:
Dem umgebenden Container ein display;flex geben:
Dies sollte funktionieren:
https://jsfiddle.net/Sempervivum/kmwywx8L/1/
<div id="cbc"></div>
<script>
var lastidx = -1;
for(let i = 1; i <= 100; i++){
var cbh = document.getElementById('cbc');
var cb = document.createElement('input');
cb.type = 'checkbox';
cb.name = 'box'+i;
cb.value = i;
cb.className = 'box';
cb.id = 'box'+i;
cbh.appendChild(cb);
cb.addEventListener("click", function(event) {
if (!event.shiftKey) {
lastidx = i;
} else {
var status = document.getElementById('box' + lastidx).checked;
console.log("status");
if (lastidx < i) {
var from = lastidx;
var to = i;
} else {
var from = i;
var to = lastidx;
}
for (var j = from; j < to; j++) {
document.getElementById('box' + j).checked = status;
}
}
});
}
</script>
Alles anzeigen
ZitatAuf jedenfall feuert der keyup an die 80 mal. Verstehenicht warum.
Ich habe es nicht bis ins letzte analysiert, aber der Grund ist sicherlich, dass Du den keyup-Handler im keydown-Handler registrierst, d. h. bei jedem keyup wird er von neuem registriert.
Eine moderne Art, so etwas zu machen, ist die Verwendung von CSS-Sprites. Hat den Vorteil, dass es ohne Javascript geht. Aber weil Du schreibst, dass Du durch die Art der Animation eingeschränkt bist und weil ich gerade etwas ähnliches hatte, habe ich schnell eine Lösung mit Javascript ausgearbeitet:
http://webentwicklung.ulrichbangert.de/animation-2.html
Wenn Du die Lösung mit Sprites vorziehst, musst Du deine Einzelbilder zunächst zu einem Sprite zusammen fügen. Dafür gibt es Tools, aber wenn Du mit Bildbearbeitung fit bist, kannst Du es u. U. auch mit deiner Software machen. So etwas habe ich früher auch mal gemacht:
Na, das sieht doch schon ganz gut aus.
Rahmen bekommst Du weg mit border:none
Mit ein paar Zeilen Javascript kannst Du die Größe an den Inhalt anpassen, so dass die Scrollbars verschwinden:
function resizeIFrameToFitContent(iFrame) {
iFrame.height = $(iFrame.contentWindow.document.body).outerHeight(true);
}
var iFrame = document.querySelector('iframe');
iFrame.onload = function() {
resizeIFrameToFitContent(iFrame);
}
ZitatIch hatte auf eine Lösung gesetzt welche nur den Textinhalt an dieser Position setzt. Kein Rahmen ....kein scrollen falls die Beschreibung etas länger ist.
Eine bewährte Alternative ist, die Beschreibung mit jQuery-load in einen Container zu laden:
http://api.jquery.com/load/
Weitere Fragen: Wie entstehen denn die HTML-/PHP-Seiten, von denen Du die Links gepostet hast? Du schreibst ja, dass mit dem iFrame die Beschreibung sichtbar wird, nur komplett an der falschen Stelle. D. h. Du hast offenbar Zugriff darauf und kannst Sie ändern?
Was ist das für ein Import-Plugin und was macht es?
Die CSV-Datei bekommst Du offenbar vom Lieferanten. Es würde sich anbieten, diese mit PHP einzulesen und aus den Daten die Poduktseite zu generieren. Programmierst Du den Shop selber oder benutzt Du eine fertige Software?
Ja, ein iFrame muss nicht unbedingt optimal sein. Ich habe ihn nur vorgeschlagen, weil es die einfachste Möglichkeit ist, eine externe HTML-Seite einzubetten.
ZitatDie CSV-Datei, bzw. xls Datei welche ich vom Lieferanten bekommen habe beinhaltet alle Produktdaten. Lediglich die Bilder und die Artikelbeschreibung liegen bei denen auf dem Server.
Das mit der CSV-Datei verstehe ich immer noch nicht. Erwartest Du, dass Du diese vom Lieferanten laden kannst? Wie gesagt, wenn ich die URL aufrufe, bekomme ich eine HTML-Seite mit einer lesbaren, strukturierten Beschreibung und keine CSV-Datei.
Verstehe ich das richtig? Der erste Link (Rohrbohrmaschine) gibt an, wie die Seite ohne Artikelbeschreibung aussieht? Und der zweite (Magnetkernbohrmaschine) den Sollzustand, wie es eigentlich aussehen soll?
Du schreibst zwar von CSV, aber wenn ich den Link im Browser aufrufe, kommt eine HTML-Datei, die ganz normal im Browser angezeigt wird. Ein einfaches Verfahren, diese anzuzeigen, ist ein iFrame:
http://wiki.selfhtml.org/wiki/HTML/Fram…_Frametechniken
Ich wollte ein Demo bei jsfiddle machen, aber es funktioniert nicht, weil die URL keine gesicherte Verbindung hat. In einer Testdatei mit http funktioniert es jedoch.
<iframe src="http://web1.stuermer3.stuermer-maschinen.de/index.php?id=4194&tx_produktkatalog_pi1[tx_productkatalog]=59577">
</iframe>
Wenn dein Shop eine sichere Verbindung hat, müsste man weiter sehen, ob es mit Ajax funktioniert.
Den Aufwand, es zu verstehen und sich einzuarbeiten, investiert man besser nicht in ein Layout mit float sondern etwas, das klar, verständlich, geradlinig und der neueste Stand der Technik ist: Flexbox.
Das liegt am float: Wenn Du ein Element floatest, wird im Eltern-Container kein Platz mehr dafür reserviert. Daher liegt in deinem Fall das gefloatete Element außerhalb seines Beitragscontainers und überdeckt den folgenden Beitragscontainer. Das ist eine sehr unangenehme Eigenschaft des floating und ein Grund, warum ich und andere auch davon abraten.
Float deaktiviert:
Stimmt, das im Anhang sieht nicht gut aus.
BTW: Wenn ich dieses:
dem Validator vorlege (https://jigsaw.w3.org/css-validator/#validate_by_input) bekomme ich als Ergebnis:
Zitat
Zitatbist du da schon bei Sempervivum
Nein, ich wollte es erst Mal bei meiner allgemeinen Empfehlung belassen und nichts ausarbeiten.
Wahrscheinlich wirst Du hier mit den Segnungen eines Layouts mit float konfrontiert. Bei deinem Layout, wo alles einfach untereinander aufgeführt ist, brauchst Du das nicht, vermutlich nicht einmal Flexbox.
Es geht problemlos auch lokal, wenn Du den Code aus meinem Posting #24 verwendest.
ZitatDie Frage ist eigentlich nur wie und ob man mit Css den Inhalt eines Containers auslesen kann,so das
...
Ich schaffes bis jetzt ja auch nicht
Ich glaube, das würde ich auch nicht schaffen und ich bezweifle, dass es möglich ist.
Die Methode 1 funktioniert deshalb nicht, weil Du dich zwei Mal auf das load-Event beziehst. Wenn Du mit body.addEventListener('load', function(){den Listener registriert, hat dieses Event schon gefeuert und feuert nicht wieder.
Also entweder so:
https://jsfiddle.net/Sempervivum/7xzavaLw/1/
oder so:
https://jsfiddle.net/Sempervivum/8p1g6kx9/5/
Gleiches Problem im Fiddle: Lässt man Loadtype auf onLoad funktioniert es ebenfalls nicht.
Wenn man die Seite ohne Webserver lädt, funktioniert der Einzug nicht, wenn man das Protokoll weg lässt.
Versuche dies:
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.2.5/jquery.fancybox.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.2.5/jquery.fancybox.min.js"></script>
<script>
$("figure img").each(function (idx, item) {
var url = $(this).attr("src");
var caption = $(this).next("figcaption").text();
$(this).wrap('<a></a>');
var atag = $(this).parent();
var caption = atag.next("figcaption").text();
atag.attr({ href: url, "data-fancybox": "gallery", "data-caption": caption });
})
</script>
Alles anzeigen
1. Das Javascript aus Posting #17 ist auf das HTML aus Posting #15 zugeschnitten.
2. Da die JS- und CSS-Datei von einem CDN geladen wird, benötigt man eine Internetverbindung. Ist das nicht gewünscht, muss man sie herunter laden und selber hosten.
Beide Varianten haben bei mir funktioniert. Wenn sie es bei dir nicht tun, dass poste mal den Code oder die URL der Seite.
HTML-Seminar.de - mit Videos zum schnellen Lernen, wie man eine Website selbst erstellt.