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

JavaScript-Canvas zum Erzielen von Meteoreffekten

In diesem Artikel wird der spezifische Code für J...

Detaillierte Erläuterung der gleichzeitigen Parameteranpassung von MySQL

Inhaltsverzeichnis Abfrage-Cache-Optimierung Über...

Detaillierte Erklärung zur Verwendung von HTML-Header-Tags

HTML besteht aus zwei Teilen: Kopf und Text ** Da...

Implementieren Sie eine einfache Suchmaschine auf Basis von MySQL

Inhaltsverzeichnis Implementierung einer Suchmasc...

Detaillierte Erklärung zu Padding und Abkürzungen im CSS-Boxmodell

Wie oben gezeigt, sind Füllwerte zusammengesetzte...

Unbekannte Verwendung von Object.entries in JavaScript

Inhaltsverzeichnis Vorwort 1. Verwenden Sie for.....

Weitere Möglichkeiten zur Verwendung von spitzen Klammern in Bash

Vorwort In diesem Artikel werden wir weitere Verw...

Linux-Installation, MongoDB-Start und Lösung allgemeiner Probleme

MongoDB-Installationsprozess und Problemaufzeichn...

UL-Listen-Tag-Design für Webseiten mit mehrspaltigem Layout

Als ich vor ein paar Tagen ein dreispaltiges Layou...

Teilen Sie 13 hervorragende Web-Wireframe-Design- und Produktionstools

Wenn Sie mit der Arbeit an einem Projekt beginnen...

Detaillierte Erklärung der MySQL-Gruppensortierung, um die Top N zu finden

MySQL-Gruppensortierung, um die obersten N zu fin...