Vue2.0 implementiert adaptive Auflösung

Vue2.0 implementiert adaptive Auflösung

In diesem Artikel wird der spezifische Code von Vue2.0 zur Erzielung einer adaptiven Auflösung zu Ihrer Information bereitgestellt. Der spezifische Inhalt ist wie folgt

1. Front-End-Framework: Vue2.0+elementUI 2.15.7

2. Entwicklungstools: VS Code

3. Installieren Sie das erforderliche Rack-Paket:

"postcss-import": "12.0.1",
"postcss-loader": "4.0.1",
"postcss-pxtorem": "^5.1.1",

Überprüfen Sie, ob das „flexible“ Paket installiert ist. Wenn es installiert ist, deinstallieren Sie es oder brechen Sie den Verweis ab. Die Paketdatei steht in Konflikt mit der geänderten „flexiblen“ Datei.

4. Erstellen Sie die Datei flexibleEx.js (diese Datei ist die flexible.js-Datei, die das flexible Paket ändert, das nach Bedarf geändert werden kann) und platzieren Sie sie an einem beliebigen Ort, beispielsweise im Verzeichnis „/src/utils“.

Führen Sie dann „flexibleEx.js“ in „main.js“ ein, etwa:

importiere '@/utils/flexibleEx.js'

Dateicode:

(Funktion(win, lib) {
  var doc = win.document
  var docEl = doc.documentElement
  var metaEl = doc.querySelector('meta[name="viewport"]')
  var flexibleEl = doc.querySelector('meta[name="flexible"]')
  var dpr = 0
  var Skala = 0
  var tid
  var flexible = lib.flexible || (lib.flexible = {})
 
  wenn (MetaEl) {
    console.warn('Der Zoomfaktor wird entsprechend den vorhandenen Meta-Tags eingestellt.')
    var match = metaEl
      .getAttribute('Inhalt')
      .match(/initial\-scale=([\d\.]+)/)
    wenn (Übereinstimmung) {
      Skala = parseFloat(Übereinstimmung[1])
      dpr = parseInt(1 / Skala)
    }
  } sonst wenn (flexibleEl) {
    var Inhalt = flexibleEl.getAttribute('Inhalt')
    wenn (Inhalt) {
      var initialDpr = Inhalt.match(/initial\-dpr=([\d\.]+)/)
      var maximumDpr = content.match(/maximum\-dpr=([\d\.]+)/)
      wenn (initialDpr) {
        dpr = parseFloat(initialDpr[1])
        Skala = parseFloat((1 / dpr).toFixed(2))
      }
      wenn (maximalDpr) {
        dpr = parseFloat(maximumDpr[1])
        Skala = parseFloat((1 / dpr).toFixed(2))
      }
    }
  }
 
  wenn (!dpr && !scale) {
    var isAndroid = win.navigator.appVersion.match(/android/gi)
    var isIPhone = win.navigator.appVersion.match(/iphone/gi)
    var devicePixelRatio = win.devicePixelRatio
    wenn (istIPhone) {
      // Unter iOS verwenden Sie für 2 und 3 Bildschirme die 2x-Lösung und für den Rest die 1x-Lösung if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
        dpr = 3
      } sonst wenn (Gerätepixelverhältnis >= 2 und (!dpr || dpr >= 2)) {
        dpr = 2
      } anders {
        dpr = 1
      }
    } anders {
      // Für andere Geräte wird weiterhin die 1x-Lösung verwendet dpr = 1
    }
    Maßstab = 1 / dpr
  }
 
  docEl.setAttribute('data-dpr', dpr)
  wenn (!metaEl) {
    metaEl = doc.createElement('meta')
    metaEl.setAttribute('Name', 'Ansichtsfenster')
    metaEl.setAttribute(
      'Inhalt',
      'Anfangsmaßstab=' +
            Maßstab +
            ', maximaler Maßstab =' +
            Maßstab +
            ', Mindestmaßstab=' +
            Maßstab +
            ', benutzerskalierbar=nein'
    )
    wenn (docEl.erstesElementKind) {
      docEl.firstElementChild.appendChild(metaEl)
    } anders {
      var wrap = doc.createElement('div')
      wrap.appendChild(metaEl)
      doc.write(innerHTML umschließen)
    }
  }
 
  Funktion refreshRem() {
    const weiße Liste = [
      '/managementKanban',
      '/ProduktionKanban',
      '/Bedienfeld',
      '/hauptsächlich'
    ] // Whitelist-Routen nicht umleiten var width = docEl.getBoundingClientRect().width
    var rem = 0
 
    var hrefList = window.location.href.split('/')
    var url = hrefList[hrefList.Länge - 1]
    var url0 = url.split('?')
    var urlEnd
    wenn (url0.Länge > 0) {
      urlEnd = url0[0]
    }
    wenn (!whiteList.includes('/' + urlEnd)) {
      wenn (Breite / dpr <= 1980 und Breite / dpr > 768) {
        Breite = 1980 * dpr
        rem = Breite / 48
      } sonst wenn (Breite / dpr >= 5760) {
        Breite = 5760 * dpr
        rem = Breite / 48
      } anders {
        Breite = 540 * dpr
        rem = Breite / 20
      }
      docEl.style.fontSize = rem + 'px'
      flexible.rem = win.rem = rem
    }
  }
 
  win.addEventListener(
    'Größe ändern',
    Funktion() {
      Zeitüberschreitung löschen(tid)
      tid = setzeTimeout(refreshRem, 300)
    },
    FALSCH
  )
  win.addEventListener(
    "DOMNodeEingefügt",
    Funktion() {
      Zeitüberschreitung löschen(tid)
      tid = setzeTimeout(refreshRem, 50)
    },
    FALSCH
  )
  win.addEventListener(
    'Seitenshow',
    Funktion(e) {
      wenn (e.persistent) {
        Zeitüberschreitung löschen(tid)
        tid = setzeTimeout(refreshRem, 300)
      }
    },
    FALSCH
  )
 
  wenn (doc.readyState === 'abgeschlossen') {
    doc.body.style.fontSize = 12 * dpr + 'px'
  } anders {
    doc.addEventListener(
      „DOMContentLoaded“,
      Funktion(e) {
        doc.body.style.fontSize = 12 * dpr + 'px'
      },
      FALSCH
    )
  }
 
  aktualisierenRem()
 
  flexible.dpr = win.dpr = dpr
  flexible.refreshRem = aktualisierenRem
  flexible.rem2px = Funktion(d) {
    var val = parseFloat(d) * this.rem
    wenn (Typ von d === 'Zeichenfolge' und d.match(/rem$/)) {
      Wert + = "px"
    }
    Rückgabewert
  }
  flexible.px2rem = Funktion(d) {
    var val = parseFloat(d) / dies.rem
    wenn (Typ von d === 'Zeichenfolge' und d.match(/px$/)) {
      Wert + = "rem"
    }
    Rückgabewert
  }
})(Fenster, Fenster['lib'] || (Fenster['lib'] = {}))

5. Ändern Sie die Datei „build/utitls.js“ und fügen Sie den folgenden Code hinzu:

Funktion generateLoaders(loader, loaderOptions) {
    const loaders = options.usePostCSS ? [cssLoader] : [cssLoader];
 
    wenn (Lader) {
      loaders.push({
        Lader: Lader + "-Lader",
        Optionen: Objekt.assign({}, loaderOptions, {
          Quellkarte: Optionen.Quellkarte
        })
      });
    }
 
    // CSS extrahieren, wenn diese Option angegeben ist
    // (was während der Produktionserstellung der Fall ist)
    wenn (Optionen.extrahieren) {
      returniere ExtractTextPlugin.extract({
        Einsatz: Lader,
        Fallback: „Vue-Style-Loader“,
        öffentlicher Pfad: "../../"
      });
    } anders {
      Geben Sie ["vue-style-loader"].concat(loader) ein.
    }
  }

6. Ändern Sie die Datei "postcssrc.js" im Verzeichnis

modul.exporte = {
    Plugins: {
        'Autoprefixer': {
            Browserliste überschreiben: [
                „Android 4.1“,
                „iOS 7.1“,
                'Chrome > 31',
                'ff > 31',
                'dh >= 8'
            ]
        },
        'postcss-pxtorem': {
            Wurzelwert: 37,5,
            Eigenschaftenliste: ['*']
        }
    }
}

7. Hinweis: Das Problem der Schnittstellenanpassung wurde gelöst, es gibt jedoch immer noch einige Probleme mit der Schnittstellendarstellung. Jetzt müssen Sie die abnormale Schnittstelle selbst ändern. Versuchen Sie, rem für die Schnittstellenentwicklung zu verwenden, und versuchen Sie, keine Inline-Stile zu verwenden. Diese müssen alle manuell geändert werden.

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:
  • Beispielcode zur Implementierung der PC-Auflösungsanpassung in Vue
  • Vue3.0 Adaptiver Betrieb von Computern mit unterschiedlichen Auflösungen
  • Vue implementiert den PC-Auflösungsanpassungsvorgang

<<:  Einführung mehrerer benutzerdefinierter Schriftarten in CSS3

>>:  So fügen Sie Bilder in HTML-Seiten ein und fügen Kartenindexbeispiele hinzu

Artikel empfehlen

Detaillierte Erklärung, wo Docker Protokolldateien speichert

Inhaltsverzeichnis Wo werden die Protokolle gespe...

Einführung in die Fuzzy-Abfragemethode mit instr in MySQL

Die Verwendung der internen Funktion instr in MyS...

So installieren Sie pyenv unter Linux

Voraussetzungen Git muss installiert werden Insta...

Lösung zum Vergessen des MySQL-Datenbankkennworts unter MAC

Schnelle Lösung zum Vergessen des MySQL-Datenbank...

Zusammenfassung der MySQL-Tabellen- und Spaltenkommentare

Genau wie bei Code können Sie den Tabellen und Sp...

Erstellen Sie mit PS in zwei Minuten eine Homepage für eine XHTML+CSS-Website

Es gibt zu viele Artikel über Webstandards zur We...

So installieren Sie OpenJDK in Docker und führen das JAR-Paket aus

Bild herunterladen Docker-Pull OpenJDK Erstellen ...

So implementieren Sie Web-Stresstests mit Apache Bench

1. Einführung in Apache Bench ApacheBench ist ein...

Zusammenfassung der MySQL-Datenmigration

Inhaltsverzeichnis Vorwort: 1. Über die Datenmigr...

Tipps zur Datenstatistik in MySQL

Als häufig verwendete Datenbank erfordert MySQL v...

Javascript Blob-Objekt zum Erzielen eines Dateidownloads

Inhaltsverzeichnis veranschaulichen 1. Blob-Objek...

Einige wichtige Punkte des visuellen Website-Designs

Vom Kunsthandwerksdesign über Grafikdesign bis hin...