In diesem Artikelbeispiel wird der spezifische Code von js zur Implementierung der Slider-Intervallkomponente zu Ihrer Information geteilt. Der spezifische Inhalt ist wie folgt Funktionale Anforderungen: 1. Der Minimalwert ist 0 und der Intervallbereich wird entsprechend dem angegebenen Maximalwert generiert. Standardeffekt:Wenn Sie den Schieberegler ziehen, sieht die Anzeige wie folgt aus: analysieren:
Der Code ist unten angehängt: HTML-Struktur, Instanziieren des Schiebereglers und Festlegen des Bereichs des aktuellen Schiebereglers: <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="UTF-8"> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1.0"> <title>Folie</title> </Kopf> <Text> <Skripttyp="Modul"> importiere Folie aus "./js/Slide.js"; init(); Funktion init(){ //Der Parameter ist der maximale Bereich. Wenn nicht übergeben, ist der Standardwert 4000 let Folie = neue Folie(4200); Folie.AnhängenTo("body"); } </Skript> </body> </html> Datei Slide.js: vervollständigt die Funktionen zum Erstellen eines Schiebereglers, Ziehen eines Schiebereglers und Klicken auf einen Schieberegler. importiere Utils aus "./Utils.js"; Standardklasse „Slide“ exportieren{ statischer styleCss=false; //Minimaler Bereich minNum=0; //Maximaler Bereich maxNum; //Der linke Wert der linken Taste leftBtnLeft=0; //Der linke Wert der rechten Taste rightBtnLeft=238; Konstruktor(_max=4000){ //Der Standardmaximalwert beträgt 4000 dies.maxNum=_max; dies.elem = dies.createElem(); } Element erstellen(){ wenn(dieses.elem) dieses.elem zurückgeben; //Erstellen Sie den äußersten Container let div=Utils.createE("div"); div.className="Foliencontainer"; div.innerHTML=`<p class="priceTxt">Preis<span id="rangeText">¥${this.minNum}-${this.maxNum}</span></p> <div Klasse="Bereichscontainer" id="Bereichscontainer"> <div Klasse="bgRange" id="bgRange"></div> <div Klasse="Preisbereich" id="Preisbereich"></div> <span id="leftBtn" class="leftBtn"></span> <span id="rightBtn" class="rightBtn"></span> </div>`; Utils.getIdElem(div,dies); //Stil festlegen Slide.setStyles(); //Auf das Mousedown-Ereignis für das übergeordnete Element warten this.rangeContainer.addEventListener("mousedown",e=>this.mouseHandler(e)) div zurückgeben; } anhängenAn(übergeordnet){ Utils.appendTo(dieses.Element,übergeordnet); } Maushandler(e){ //Hinweis: Im von getBoundingClientRect() zurückgegebenen Ergebnis enthalten Breite und Höhe beide einen Rahmen. let rect=this.rangeContainer.getBoundingClientRect(); Schalter (e.Typ) { Fall „mousedown“: //Das Standardereignis des schnellen Ziehens mit der Maus abbrechen e.preventDefault(); dies.x = e.offsetX; dies.btnType=e.ziel.id; //Wenn auf die Hintergrundleiste geklickt wird, führe die rangeClick-Funktion aus, if(/Range/.test(this.btnType)){ e.stopPropagation(); //Klickfunktion this.rangeClick(e); zurückkehren; } //Wenn auf die Schaltfläche geklickt wird, auf Ereignisse in der Dokumentmausbewegung achten this.mouseHandlers=e=>this.mouseHandler(e); document.addEventListener("Mausbewegung", this.mouseHandlers); document.addEventListener("mouseup", this.mouseHandlers); brechen; Fall "Mausbewegung": lass x = e.clientX - rect.x - this.x; //Den linken Wert der linken und rechten Schaltflächen abrufen this.leftBtnLeft=parseInt(getComputedStyle(this.leftBtn).left); dies.rightBtnLeft=parseInt(getComputedStyle(this.rightBtn).left); wenn (dieser.btnType === "leftBtn") { //Wertebereich der linken Taste bestimmen if (x < 0) x = 0; wenn (x > dies.rightBtnLeft) x = dies.rightBtnLeft; dies.leftBtn.style.left = x + "px"; } sonst wenn (dieser.btnType === "rightBtn") { //Bestimmen Sie den Wertebereich der rechten Schaltfläche abzüglich des 1px-Rands, wenn (x < this.leftBtnLeft) x = this.leftBtnLeft; wenn (x > this.bgRange.offsetWidth - 2) x = this.bgRange.offsetWidth - 2; dies.rightBtn.style.left = x + "px"; } //Textbereich anzeigen this.changeRangeText(); brechen; Fall "mouseup": //Ereignis-Listener verschieben document.removeEventListener("mousemove", this.mouseHandlers); document.removeEventListener("mouseup", this.mouseHandlers); brechen; } } rangeClick(e){ //Berechnen Sie den Wert der Mausklickposition let click_X=e.clientX-this.rangeContainer.getBoundingClientRect().x-this.leftBtn.offsetWidth/2; //Beurteilen Sie, ob sich die aktuelle Klickposition auf der linken Seite der linken Taste befindet oder ob sich die linke und die rechte Taste überlappen und sich die Klickposition auf der linken Seite der Taste befindet. Bewegen Sie die linke Taste an die Position, an der mit der Maus geklickt wird. if (Math.abs (click_X-this.leftBtnLeft) <Math.abs (click_X-this.rightBtnLeft) || (diese.leftBtnLeft===diese.rightBtnLeft && Klick_X<diese.leftBtnLeft)) dies.leftBtn.style.left=Klick_X+"px"; //Andernfalls bewegen Sie die rechte Taste an die Position, an der die Maus geklickt wurde, sonst this.rightBtn.style.left=click_X+"px"; //Nach dem Verschieben den linken Wert der linken und rechten Schaltflächen abrufen this.leftBtnLeft=parseInt(getComputedStyle(this.leftBtn).left); dies.rightBtnLeft=parseInt(getComputedStyle(this.rightBtn).left); //Textbereich anzeigen this.changeRangeText(); } Bereichstext ändern(){ //Mindest- und Maximalbereichswerte berechnen und runden let minTxt=Math.round(this.leftBtnLeft/(this.bgRange.clientWidth-2)*this.maxNum); let maxTxt=Math.round(this.rightBtnLeft/(this.bgRange.clientWidth-2)*this.maxNum); this.rangeText.innerText=`¥${minTxt}-${maxTxt}`; //Ändern Sie die Farbe des Schiebereglers this.changeRangeSlide(); } Bereichsschieber ändern(){ //Die Breite des Schiebereglers entspricht dem Abstand zwischen der linken und rechten Schaltfläche this.priceRange.style.width=this.rightBtnLeft-this.leftBtnLeft+"px"; //Der linke Wert des Schiebereglers entspricht dem linken Wert der linken Schaltfläche this.priceRange.style.left=this.leftBtnLeft+"px"; } statische setStyles(){ wenn(Slide.styleCss) return; Folie.styleCss=true; Utils.insertCss(".slideContainer",{ Breite: "260px", Höhe: "70px", Rand: „50px“ }) Utils.insertCss(".priceTxt",{ Schriftgröße: "14px", Farbe:"#666", Rand unten: „20px“ }) Utils.insertCss(".priceTxt span",{ float:"rechts" }) Utils.insertCss(".rangeContainer",{ Breite: "260px", Höhe: "20px", Position: „relativ“, }) Utils.insertCss(".bgRange",{ Breite: "240px", Höhe: "3px", Hintergrundfarbe: "#dedede", Position: „absolut“, links:"10px", oben: "9px" }) Utils.insertCss(".priceRange",{ Breite: "240px", Höhe: "3px", Hintergrund:"#ffa800", Position: „absolut“, links:"10px", oben: "9px" }) Utils.insertCss(".rangeContainer span",{ Breite: "20px", Höhe: "20px", borderRadius:"50%", Rahmen: „1px durchgezogen #ccc“, Hintergrund:"#fff", Position: „absolut“, oben: "0px", boxShadow:"2px 2px 2px #333" }) Utils.insertCss(".leftBtn",{ links:"0px" }) Utils.insertCss(".rightBtn",{ links:"238px" }) } } Utils.js-Datei: ist eine Tool-Paketdatei. exportiere Standardklasse Utils{ statisch erstellenE(Element,Stil,Vorbereitung){ elem = Dokument.Element erstellen(elem); wenn (Stil) für (let prop in Stil) elem.style[prop]=style[prop]; wenn (Vorbereitung) für (let prop in prep) elem[prop]=prep[prop]; Rücklaufelement; } statisches Anhängen an (Element, übergeordnetes Element) { wenn (übergeordneter.Konstruktor === String) übergeordnetes Element = document.querySelector(übergeordnetes Element); übergeordnetes Element.AnhängenKind(Element); } statische Zufallszahl(min,max){ gibt Math.floor(Math.random*(max-min)+min) zurück; } statische Zufallsfarbe (Alpha) { alpha=alpha||Math.random().toFixed(1); wenn(isNaN(alpha)) alpha=1; wenn (Alpha>1) Alpha = 1; wenn (alpha<0) alpha=0; Lassen Sie col="rgba("; für (lass i = 0; i < 3; i++) { col+=Utils.randomNum(0,256)+","; } col+=alpha+")"; Rückspalte; } statisches insertCss(Auswählen,Stile){ wenn(document.styleSheets.length===0){ let styleS = Utils.createE("Stil"); Utils.appendTo(styleS,document.head); } let styleSheet = Dokument.styleSheets[Dokument.styleSheets.Länge-1]; Lassen Sie str = auswählen + "{"; für (var prop in Stilen) { str+=prop.replace(/[AZ]/g,function(item){ return "-"+item.toLocaleLowerCase(); })+":"+Stile[Eigenschaft]+";"; } str+="}" styleSheet.insertRule(str,styleSheet.cssRules.length); } statisch getIdElem(elem,obj){ wenn(elem.id) obj[elem.id]=elem; wenn (elem.children.length===0) returniere obj; für (lass i = 0; i < Element. Kinder. Länge; i ++) { Utils.getIdElem(elem.children[i],obj); } } } Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Vollständige Schritte zur Installation von mysql5.7 auf dem Mac (mit Bildern und Text)
>>: Detaillierte Erklärung der wunderbaren Verwendung von SUID, SGID und SBIT in Linux
Wie unten dargestellt: def test_write(selbst): Fe...
Join verwendet den Nested-Loop-Join-Algorithmus. ...
Der wichtigste Schritt bei der Verpacken einer Id...
So lösen Sie das Problem, dass nach dem Neustart ...
Inhaltsverzeichnis 1. Baidu-Enzyklopädie 1. MySQL...
Auf einer Seite gibt es viele Steuerelemente (Elem...
In requireJS gibt es eine Eigenschaft namens base...
Dieser Artikel fasst hauptsächlich einige häufig ...
In diesem Artikel wird der spezifische Code von n...
Hintergrund Indizes sind ein zweischneidiges Schw...
Wenn Sie Eingabe und Bild in dieselbe Zeile setzen...
mysqldump-Befehl Einführung: Ein Datenbank-Backup...
Die Lösung für das Problem, dass Ubuntu 18.04 in ...
Im vorherigen Artikel haben wir drei gängige Meth...
<br />Gestern habe ich beim W3C gesehen, das...