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

Erste Schritte mit Nginx Reverse Proxy

Inhaltsverzeichnis Überblick Die Rolle des Revers...

Vue implementiert Paging-Funktion

In diesem Artikelbeispiel wird der spezifische Co...

Zusammenfassung der benutzerdefinierten JavaScript-Objektmethoden

Inhaltsverzeichnis 1. Verwenden Sie Objekt, um ei...

Detaillierte Analyse der MySQL-Optimierung von like und = Leistung

Einführung Die meisten Leute, die schon einmal Da...

Beispiele für personalisiertes und kreatives Website-Design (30)

Aus diesem Grund haben wir eine Auswahl von 30 Kom...

JavaScript-Countdown zum Schließen von Anzeigen

Verwenden von Javascript zum Implementieren eines...

Kurze Einführung und Verwendung von Table und div

Web-Frontend 1 Studierendenausweis Name Geschlech...

Detaillierte Erklärung der Tastaturereignisse von Vue

Inhaltsverzeichnis Allgemeine Schlüsselaliase Sch...