suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Flickity-Stil ändern: Verwenden Sie JS zur Stiländerung

<p>Ich habe ein Flickity-Problem beim Zugriff auf Stile mithilfe von js, insbesondere auf Stile für Indikatorpunkte. Ich möchte, dass die Punkte basierend auf den Farben in einem Array eingefärbt werden (in meinem Projekt sollte dies ein dynamisches Array sein, ist aber derzeit statisch, um den Testfall zu vereinfachen). Meine Funktion funktioniert mit Elementen mit demselben Klassennamen wie die Indikatorpunkte, die ich im HTML-Code unter dem Flickity-Karussell eingefügt habe. </p> <p>Dies ist ein gespaltener (aus der Flickity-Dokumentation) und geänderter CodePen, um mein Problem zu veranschaulichen: <br />a href="https://codepen.io/Insa-Deist/pen/ jOXNOKM" >https://codepen.io/Insa-Deist/pen/jOXNOKM</a></p> <p>Vielen Dank im Voraus für alle Tipps. </p> <p> Das von mir hinzugefügte js sollte korrekt sein. Ich habe es mit einer anderen Zeile von Punkten versucht, die sich nicht im Flickity-Karussellcontainer befinden und denselben Klassennamen haben, von dem das js spricht (wenn ich den Quellcode meines öffne). project , der Cue-Point hat auch den gleichen Klassennamen). </p> <p>*Ich habe gerade eine Warnung erhalten, in der ich aufgefordert werde, den Code auch hier einzufügen, also füge ich ihn hier ein: </p> <p>html</p> <pre class="brush:php;toolbar:false;"><h1>Flickity – freeScroll, wrapAround</h1> <!-- Flickity HTML init --> <div class="carousel" data-flickity='{ "freeScroll": true, "wrapAround": true }'> <div class="carousel-cell"></div> <div class="carousel-cell"></div> <div class="carousel-cell"></div> <div class="carousel-cell"></div> <div class="carousel-cell"></div> </div> <br><br><br> <p> Punktreihe zur Anzeige der js-Funktion mit dem Farbarray --> PROBLEM: Ich möchte, dass die Indikatorpunkte aus dem Karussell auch aus diesem Array gefärbt werden. Warum funktioniert das nicht, obwohl sie auch den .dot haben? Klasse zugewiesen, wenn ich den Quellcode meines Projekts öffne</p> <div class"flickity-page-dots"> <li class="dot"></li> <li class="dot"></li> <li class="dot"></li> <li class="dot"></li> <li class="dot"></li> </div></pre> <p>css</p> <pre class="brush:php;toolbar:false;">/* externes CSS: flickity.css */ * { box-sizing: border-box; } body { Schriftfamilie: serifenlos; } .karussell { Hintergrund: #FAFAFA; } .carousel-cell { Breite: 66 %; Höhe: 200px; Rand rechts: 10px; Hintergrund: #8C8; Randradius: 5px; Zählerinkrement: Karussellzelle; } /* Handynummer */ .carousel-cell:before { Bildschirmsperre; Textausrichtung: Mitte; Inhalt: counter(carousel-cell); Zeilenhöhe: 200px; Schriftgröße: 80px; Farbe weiß; } .dot { Anzeige: Inline-Block; Breite: 10px; Höhe: 10px; Rand: 0 8px; Randradius: 50 %; Deckkraft: 1; Cursor: Zeiger; } .flickity-page-dots .dot{ Deckkraft: 1; } .flickity-page-dots .dot.is-selected { -webkit-filter: Unschärfe(3px); -moz-filter: Unschärfe(3px); -o-filter: Unschärfe (3px); -ms-filter: Unschärfe(3px); Filter: Unschärfe(3px);}</pre> <p>js</p> <pre class="brush:php;toolbar:false;">// external js: flickity.pkgd.js var farben = ["#e57373", "#ba68c8", "#90caf9", "#4db6ac", "#dce775", "#ffb74d", "#b0bec5", "#FF69B4"]; var anpassenContainer = Array.from(document.querySelectorAll('.dot')); anpassenContainer.forEach(function(node, i) { node.style.background = farben[i % farben.länge]; });</pre> <p><br /></p>
P粉006847750P粉006847750464 Tage vor538

Antworte allen(1)Ich werde antworten

  • P粉378890106

    P粉3788901062023-08-17 00:23:25

    在codepen上尝试一下:

    // 外部js: flickity.pkgd.js
        function changeColor(){
        var colors = ["#e57373", "#ba68c8", "#90caf9", "#4db6ac", "#dce775", "#ffb74d", "#b0bec5", "#FF69B4"];
        var customizeContainer = Array.from(document.querySelectorAll('.dot'));
        
        customizeContainer.forEach(function(node, i) {
            node.style.background = colors[i % colors.length];
            console.log(colors[i % colors.length]);
        });
        }
        var flkty = new Flickity( '.carousel', {
          on: {
            ready: function() {
             changeColor();
            }
          }
        });

    Antwort
    0
  • StornierenAntwort