JS implementiert Städtelisteneffekt basierend auf VUE-Komponente

JS implementiert Städtelisteneffekt basierend auf VUE-Komponente

In diesem Artikelbeispiel wird der spezifische Code zur Implementierung des Städtelisteneffekts basierend auf der VUE-Komponente zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

  • Die Grundidee besteht darin, die Städtelistendaten lokal zwischenzuspeichern
  • Verwenden Sie dann JS auf der Seite, um sofortige Fuzzy-Abfragen und Abfragen zur Positionierung des Anfangsbuchstabens usw. zu implementieren.
  • Um das Projekt zu schützen, wurden einige Codes gelöscht

Wirkung

erreichen

H5:

<Vorlage>
    <div id="Stadt">
        <div Klasse="Suche-Stadt-zurück">
            <div Klasse="Suchstadt">
                <img src="../assets/img/Shop/search.png">
                <input type="text" placeholder="Bitte geben Sie den Städtenamen ein" v-model="citySearch">
                <a @click="citySearch=''" href="javascript:;" class="img-del" v-show="citySearch"></a>
            </div>
        </div>
        <div Klasse="Stadt-Inhalt">
            <div id="showCityContent"></div>
            <div Klasse = "letter-item" v-if = "showCity&&sourcePageType===1">
                <div></div>
                <div @click="cityChoose('*','StadtChoose')">StadtChoose</div>
            </div>
            <div v-for="(val,key) in showCity" Klasse="letter-item">
                <div><a :id="Schlüssel">{{Schlüssel}}</a></div>
                <div v-for="i in val">
                    <div :class="{'city-hide': i.Code==='*'&&sourcePageType===3}" Klasse="item-buttom"
                         @click="Stadtauswahl(i.Code,i.Name)">{{i.Name}}


                    </div>
                </div>
            </div>
        </div>
        <aside class="letter-aside" :style="{color: config.letterColor}" v-if="showCity">
            <ul>
                <!--<li>Positionierung</li>-->
                <!--<li>Beliebt</li>-->
                <li v-for="(val,key) in showCity" @click="naver(key)">{{key}} </li>
            </ul>
        </aside>
        <div id="tip">{{tipString}}</div>
    </div>
</Vorlage>

JS:

<Skript>
    importiere {GetCityList} von 'service'
    importiere {setTitle, setSessionStore, getSessionStore} aus '../utils/method'

    Standard exportieren{
        Name: 'CityList',
        Daten () {
            zurückkehren {
                citysAllSSKey: 'XMall-Component-AllCityList', // Sitzungscache aller Städte cities: [],
                showCity: null,
                tipString: null,
                Buchstabe: null,
                Stadtsuche: '',
                Quellseitentyp: 1
            }
        },
        Requisiten: {
            Konfiguration: {
                Typ: Objekt,
                Standard: () => {
                    zurückkehren {
                        Buchstabenfarbe: '#f44f0f',
                    }
                }
            },
            Seitentyp: {
                Typ: Nummer,
                default: 1 // 1: bundesweite Städteliste},
            Shop-ID: {
                Typ: Zeichenfolge, 
                Standard: null
            }
        },
        betrachten:
            citySearch: Funktion () {
                dies.cityFilter()
            }
        },
        erstellt: Funktion () {
            setTitle('Wählen Sie eine Stadt aus')
        },
        montiert: Funktion () {
            dies.in()
        },
        Methoden: {
            hinein(){
                this.sourcePageType = parseInt(this.$props.pageType)
                wenn (dieser.sourcePageType === 1) {
                    diese.Städte = JSON.parse(getSessionStore(this.citysAllSSKey))
                    wenn (diese.Städte) {
                        diese.showCity = diese.städte
                    } anders {
                        this.getAllCityList()
                    }
                }
            },
            // Nationale Städteliste abrufen getAllCityList: function () {
                // Anzeige wird geladen
                dies.$vux.loading.show({text: 'Wird geladen'})
                GetCityList(
                    {
                        Stichwort: ''
                    },
                    (res) => {
                        diese.Städte = res
                        diese.showCity = res
                        //Ladevorgang ausblenden
                        dies.$vux.loading.hide()
                        setSessionStore(this.citysAllSSKey, res)
                    }, (err) => {
                        console.log(fehler)
                        //Ladevorgang ausblenden
                        dies.$vux.loading.hide()
                    })
            },
            // Die seitlichen Buchstaben positionieren und zur entsprechenden Position scrollen naver: function (letter) {
                this.tipString = Buchstabe
                let obj = document.getElementById(letter)
                let Tipp = document.getElementById('Tipp')
                tip.setAttribute('Klasse', 'tipAppear')
                setzeTimeout(Funktion () {
                    tip.removeAttribute('Klasse')
                }, 500)
                let oPos = obj.offsetTop
                gibt window.scrollTo(0, oPos - 36) zurück
            },
            // Städtesuche cityFilter: function () {
                let nodata = true
                wenn (diese.citySearch) {
                    // Durchlaufe das Objekt und wähle den Wert aus, der die Bedingungen erfüllt let showCityNew = {}
                    für (let-Schlüssel in this.cities) {
                        let arrayNew = []
                        für (let Wert von this.cities[Schlüssel]) {
                            wenn (Wert.Name.Index von (dieser.Stadtsuche) > -1) {
                                arrayNew.push(Wert)
                            }
                        }
                        wenn (arrayNew.length > 0) {
                            showCityNew[Schlüssel] = ArrayNew
                            nodata = falsch
                        }
                    }
                    this.showCity = StadtNeu anzeigen
                } anders {
                    diese.showCity = diese.städte
                    nodata = falsch
                }
                wenn (keine Daten) {
                    this.showCity = null
                    let _showCityContent = document.getElementById('showCityContent')
                    _showCityContent.innerText = 'Keine Ergebnisse gefunden'
                    _showCityContent.setAttribute('Klasse', 'tipShow')
                } anders {
                    document.getElementById('showCityContent').innerText = ''
                }
            },
            //Städteauswahl cityChoose: function (code, name) {
                dies.$emit('Stadt auswählen', {Code: Code, Name: Name})
            }
        }
    }
</Skript>

CSS:

<style lang="scss" scoped>
  #Stadt {
    Position: relativ;
    Hintergrund: #f6f4f5;
  }
  #Stadt{
    .Stadt-Inhalt {
      Polsterung: 60px 0 0 0;
    }

    .letter-item{
      Hintergrundfarbe: #fff;
    }

    .letter-item > div:erstes-kind {
      Farbe: #999;
      Hintergrund: #f6f4f5;
      Rand rechts: 30px;
    }

    .letter-item > div {
      Farbe: #333;
      Zeilenhöhe: 45px;
      Schriftgröße: 14px;
      Polsterung: 0 30px 0 15px;
      Hintergrundfarbe: #fff;
    }

    .letter-item .item-buttom {
      Rahmen unten: 1px durchgezogen #e6e6e6;
    }

    .letter-aside {
      Position: fest;
      rechts: 5px;
      oben: 5,3rem;
    }

    .letter-aside ul {
      Listenstil: keiner;
      Zeilenhöhe: 1,4em;
      Schriftgröße: 14px;
      Textausrichtung: zentriert;
    }

    #Tipp {
      Position: fest;
      links: 0;
      rechts: 0;
      oben: 0;
      unten: 0;
      Rand: automatisch;
      Rand: 1px durchgezogen #333333;
      Breite: 100px;
      Höhe: 100px;
      Z-Index: 10;
      Textausrichtung: zentriert;
      Zeilenhöhe: 100px;
      Schriftgröße: 50px;
      Deckkraft: 0;
    }

    .tipAppear {
      Animation: Tipp 1 erscheint linear 0,5 s;
    }

    @-webkit-keyframes erscheinenTip {
      0% {
        Deckkraft: 1;
      }
      80 % {
        Deckkraft: 0,5;
      }
      100 % {
        Deckkraft: 0;
      }
    }

    @keyframes erscheinenTip {
      0% {
        Deckkraft: 1;
      }
      80 % {
        Deckkraft: 0,5;
      }
      100 % {
        Deckkraft: 0;
      }
    }

    .search-city-back {
      Breite: 100 %;
      Position: fest;
      Hintergrundfarbe: #f6f4f5;
      maximale Breite: 414px;
    }

    .Suchstadt {
      Höhe: 30px;
      Zeilenhöhe: 30px;
      Polsterung: 0 15px;
      Rahmenradius: 14px;
      Rand: 12px 15px;
      Hintergrundfarbe: #ffffff;
    }

    .Suchstadt img {
      Höhe: 18px;
      Breite: 18px;
    }

    .search-city Eingabe {
      Breite: 80%;
      Rand links: 5px;
      Zeilenhöhe: 24px;
      Rahmenradius: 5px;
      Gliederung: keine;
      Schriftgröße: 15px;
    }

    .tipShow {
      Textausrichtung: zentriert;
      Zeilenhöhe: 60px;
      Schriftgröße: 16px;
      Farbe: #bbbbbb;
    }

    .Stadt-verstecken {
      Anzeige: keine;
    }

    .img-del {
      Breite: 16px;
      Höhe: 16px;
      Position: absolut;
      oben: 19px;
      rechts: 30px;
      Hintergrundfarbe: rgba(0, 0, 0, .2);
      Rahmenradius: 8px;
    }

    .img-del::vorher, .img-del::nachher {
      Inhalt: ' ';
      Breite: 0;
      Höhe: 50%;
      Position: absolut;
      oben: 4px;
      rechts: 7px;
      Rahmen rechts: 1px durchgezogen #fff;
    }

    .img-del::vor {
      transformieren: drehen (45 Grad);
    }

    .img-del::nach {
      transformieren: drehen (-45 Grad);
    }
  }

</Stil>

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:
  • Vue implementiert eine Städtelistenauswahlfunktion
  • Natives js zur Implementierung einer HTML-Mobilstadtliste mit Indexauswahl für Städte
  • JS implementiert Navigations-Städteliste und Eingabesuchfunktion
  • JS implementiert mobiles Terminal zur Suche in der Städteliste nach Anfangsbuchstaben mit Quellcode-Download

<<:  So verwenden Sie reguläre Ausdrücke, um Platzhalterdomänennamen in Nginx automatisch abzugleichen

>>:  Mybatis-Statistiken zur Ausführungszeit jeder SQL-Anweisung

Artikel empfehlen

CSS3-Beispielcode zum Erreichen einer Elementbogenbewegung

So verwenden Sie CSS, um die Bogenbewegung von El...

Detaillierte Analyse der MySQL Master-Slave-Replikation

Vorwort: In MySQL sollte die Master-Slave-Archite...

Detaillierte Erklärung zur Einstellung des Hintergrundbild-Attributs in HTML

Bei Bildern denken wir zuerst an das Hintergrundb...

JavaScript erklärt die Kapselung und Verwendung von Zeitlupenanimationen

Durchführung von Prozessanalysen (1) Wie rufe ich...

So konvertieren Sie ein JavaScript-Array in eine Baumstruktur

1. Nachfrage Das Backend stellt solche Daten bere...

So deaktivieren Sie Webseitenstile mit dem Webentwickler von Firefox

Voraussetzung: Das Webentwickler-Plugin wurde inst...

Drei Möglichkeiten zur Implementierung von Animationen in CSS3

Hiermit werden die Grundkenntnisse des Interviewt...

Häufige Fehler und Gründe für MySQL-Verbindungsfehler

=================================================...

Beispieloperation für die Summe des Mysql-Varchar-Typs

Einige Freunde haben beim Erlernen von Datenbanke...

Shtml Kurzanleitung

Shtml und asp sind ähnlich. In Dateien mit dem Nam...

Implementierung des iview-Berechtigungsmanagements

Inhaltsverzeichnis iview-admin2.0 integrierte Ber...

Aktivieren oder Deaktivieren des GTID-Modus in MySQL online

Inhaltsverzeichnis Grundlegende Übersicht GTID on...

Verwendung von Linux-Netzwerkkonfigurationstools

Dieser Artikel stellt RHEL8-Netzwerkdienste und N...

Tutorial zur Installation von MYSQL5.7 aus dem OEL7.6-Quellcode

Laden Sie zunächst das Installationspaket von der...