Beispiel für die Anpassung des Vue-Projekts an den großen Bildschirm

Beispiel für die Anpassung des Vue-Projekts an den großen Bildschirm

Eine kurze Analyse von rem

Zunächst einmal ist rem eine CSS-Einheit. Im Vergleich zur festen Pixeleinheit px ist rem flexibler und vm ist jetzt auch relativ gut. Wer es noch nicht kennt, kann hier gerne erst einmal einen Blick hineinwerfen.

rem adaptiv. CSS3 REM legt die Schriftgröße fest

Schriftgröße des Stammelements.

Einfach ausgedrückt wird rem basierend auf der Schriftgröße des HTML-Elements berechnet. Unsere Anforderung ist, dass sich die Größe unserer Elemente je nach Auflösung entsprechend ändern kann, damit wir einen sehr angenehmen visuellen Effekt erzielen können. Bedenken Sie, dass wir bei der Arbeit auf der PC-Seite normalerweise eine mittlere Größe festlegen, z. B. 1200 Pixel, und dann das Minimum von 1200 Pixeln, wobei auf beiden Seiten Leerraum gelassen wird, sodass der Effekt nicht beeinträchtigt wird, egal, ob wir hinein- oder herauszoomen. Doch durch die Einführung unterschiedlicher mobiler Bildschirme ist die Anpassungsfähigkeit jetzt noch größer. Um die Schriftgröße von HTML entsprechend unterschiedlicher Auflösungen zu ändern, schreiben wir rem in die Seite. Da rem relativ zur Schriftgröße des Stammelements berechnet wird, kann ein adaptiver Effekt erzielt werden.

1. Anpassungsmethode

Die Anpassungslösung verwendet REM-Layout. Die Schriftgröße des HTML-Stammelements wird entsprechend der unterschiedlichen Bildschirmauflösung angepasst, sodass die Breite und Höhe jedes Elements automatisch geändert werden kann, um sich an unterschiedliche Bildschirme anzupassen.

2. Verwenden Sie das Plugin postcss-px2rem-exclude

Installnpm installiere postcss-px2rem-exclude --save-dev

Erstellen Sie eine Datei postcss.config.js im Stammverzeichnis des Projekts

modul.exporte = {
  Plugins: {
    Autopräfix: {},
    'postcss-px2rem-exclude': {
      remEinheit: 192
      // ausschließen: /node_modules|Ordnername/i,
    }
  }
}

3. Installieren Sie flexible.js (es wird empfohlen, es lokal zu speichern)

Installationsbefehl npm install lib-flexible

(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')
      // eslint-disable-next-line kein nutzloses Escape
      .match(/initial\-scale=([\d\.]+)/)
    wenn (Übereinstimmung) {
      Skala = parseFloat(Übereinstimmung[1])
      dpr = parseInt(1 / Skala)
    }
  } sonst wenn (flexibleEl) {
    var Inhalt = flexibleEl.getAttribute('Inhalt')
    wenn (Inhalt) {
      // eslint-disable-next-line kein nutzloses Escape
      var initialDpr = Inhalt.match(/initial\-dpr=([\d\.]+)/)
      // eslint-disable-next-line kein nutzloses Escape
      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 + ', Maximalmaßstab=' + Maßstab + ', Minimalmaßstab=' + Maßstab + ', benutzerdefiniert skalierbar=nein')
    wenn (docEl.erstesElementKind) {
      docEl.firstElementChild.appendChild(metaEl)
    } anders {
      var wrap = doc.createElement('div')
      wrap.appendChild(metaEl)
      doc.write(innerHTML umschließen)
    }
  }

  Funktion refreshRem() {
    var Breite = docEl.getBoundingClientRect().width
    wenn (Breite / dpr > 540) {
      Breite = Breite * dpr
    }
    var rem = Breite / 10
    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(
    '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() {
        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'] = {}))

Der obige Code unterscheidet sich vom installierten flexible.js

Geändert

  Funktion refreshRem() {
    var Breite = docEl.getBoundingClientRect().width
    wenn (Breite / dpr > 540) {
      Breite = Breite * dpr
    }
    var rem = Breite / 10
    docEl.style.fontSize = rem + 'px'
    flexible.rem = win.rem = rem
  }

Importieren in main.js

importiere 'Pfad/flexible.js'

Zusammenfassen

Dies ist das Ende dieses Artikels über die Anpassung des Vue-Projekts an den großen Bildschirm. Weitere relevante Inhalte zur Anpassung von Vue an den großen Bildschirm finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Beispielcode zur Implementierung der Großbildanpassung auf dem PC mit vue+px2rem (REM-Anpassung)

<<:  Zusammenfassung zum Hinzufügen von Root-Berechtigungen für Benutzer in Linux

>>:  MySQL-Fehler 1290 (HY000) Lösung

Artikel empfehlen

So konfigurieren Sie Nginx zur Rückgabe von Text oder JSON

Manchmal müssen Sie beim Anfordern bestimmter Sch...

Der Ansichtsbereich im Meta-Tag steuert das Gerätebildschirm-CSS

Code kopieren Der Code lautet wie folgt: <meta...

Kompatibilitätsprobleme mit CSS3-Farbverlaufshintergründen

Wenn wir eine Hintergrundfarbe mit Farbverlauf er...

JS realisiert Spezialeffekte der Webseiten-Navigationsleiste

In diesem Artikel erfahren Sie mehr über einen pr...

HTML-Tabellen-Tag-Tutorial (35): spaltenübergreifendes Attribut COLSPAN

In einer komplexen Tabellenstruktur erstrecken si...

So übertragen Sie Dateien zwischen Docker-Container und lokalem Computer

Zum Übertragen von Dateien zwischen dem Host und ...

Welche Vorteile bietet die Verwendung des B+-Baumindex in MySQL?

Bevor wir dieses Problem verstehen, schauen wir u...

Einführung in die Überwachung des MySQL MHA-Betriebsstatus

Inhaltsverzeichnis 1. Projektbeschreibung 1.1 Hin...

Die Rolle und Öffnung des MySQL-Protokolls für langsame Abfragen

Vorwort Das MySQL Slow Query Log ist ein Protokol...

Beispielcode zur Implementierung einer Hohlmaskenebene mit CSS

Inhalt dieses Artikels: Seitenhohlmaskenebene, Se...

Einführung in die Verwendung von MySQL-Quellbefehlen

Inhaltsverzeichnis Gedanken, die durch eine Onlin...

Docker stellt MySQL bereit, um Beispielcode für eine Remoteverbindung zu erreichen

1. Docker durchsucht MySQL查看mysql版本 2. Docker Pul...

Docker installiert und führt den RabbitMQ-Beispielcode aus

Ziehen Sie das Bild: [mall@VM_0_7_centos ~]$ sudo...