webpack的移动端适配方案小结

yizhihongxing

webpack的移动端适配方案小结

了解了Vue/React之后,我们都知道构建工具Webpack,它能够打包、压缩和优化资源,并且通过其插件系统可以支持许多功能。其中之一就是移动端适配方案。在这篇文章中,我们将探讨如何实现Webpack的移动端适配方案。

首先,什么是移动端适配?

移动端的屏幕、设备尺寸、分辨率、浏览器版本等诸多因素会导致 Web 应用的展示效果受到较大影响。其中尺寸和分辨率最为关键,想要在不同设备上达到一致的展示效果就需要进行移动端适配。

为什么需要移动端适配?

因为不同设备的分辨率、屏幕大小以及浏览器兼容性等问题需要进行移动端适配来解决,否则会导致页面错位、字体变小或变大、输入框无法正常使用等问题,严重影响用户体验。

移动端适配的主要方法

像素单位(px)的使用

在设计 Web 页面时,我们经常使用像素这个单位,但是像素在不同的设备上所代表的大小是不同的。

Viewport

Viewport 是用户网页的可见区域。不同的设备的 Viewport 大小是不同的,以一个普遍的尺寸为例,移动设备上的 Viewport 尺寸一般为 320px × 568px。

响应式布局

响应式布局是一种流式布局的变体,它可以根据用户设备的屏幕大小和分辨率,自适应地展示页面。

媒体查询

媒体查询是一个可以用来检测设备特性和环境的 CSS 语句块,可以根据不同的屏幕尺寸,应用不同的样式。

实现移动端适配

使用rem作为单位

rem是一种相对单位,与根元素(通常是 元素)相关联。在不同分辨率下,rem单位所代表的大小是不同的。

使用rem的方案有两种:

方案一:手写vw+rem方案

手动来写vw单位作为基准,然后使用sass\less等预处理 CSS 工具中提供的函数将设计稿的px或rem尺寸转换成rem。

例如:

@media screen and (max-width: 1024px) {
  html {
    /* 设置1rem = 100px */
    font-size: 100px;
  }
}
@media screen and (max-width: 750px) {
  html {
    /* 设置1rem = 75px */
    font-size: 75px;
  }
}

方案二:使用webpack自带插件实现

我们可以使用PostCSS工具解析CSS文件,并且通过postcss-px2rem插件将CSS中的px单位转化为rem单位,然后通过html-webpack-plugin插件生成HTML文件并插入meta标签,以此来设置rem单位基准值。

使用过程中需要注意:

  1. postcss-px2rem插件默认1rem=16px,可以通过配置修改其转换比例。
  2. viewport的meta标签需要在index.html文件中手写,然后通过html-webpack-plugin插件自动注入到生成的HTML文件中。

例如:

const px2rem = require('postcss-px2rem');
const htmlwp = require('html-webpack-plugin');
module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ['style-loader', 'css-loader', {
          loader: 'postcss-loader',
          options: {
            plugins: [
              px2rem({
                // 将1rem转化为100px,(默认为16px)
                remUnit: 100
              })
            ]
          }
        }]
      }
    ]
  },
  plugins: [
    new htmlwp({
      template: 'index.html',
      meta: {
        // 设置viewport,让页面在移动端展示的效果更佳
        viewport: 'width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no'
      },
      inject: true
    })
  ]
}

使用vw作为单位

使用vw(Viewport width 单位)作为单位可以帮助解决移动端适配问题,因为它是根据Viewport宽度来设置长度的,所以在不同宽度的屏幕上,它所代表的长度也不同。

需要注意的是,使用vw的方案和使用rem的方案是不同的,因为rem是根据根元素的font-size来确定长度的。

例如:

.box {
  width: 30vw;
  height: 50vw;
  border-radius: 4vw;
  font-size: 3.5vw;
}

总结

通过本文我们可以了解到移动端适配的主要方法,以及使用rem或vw作为单位来实现适配的两种方案。对于使用Webpack的开发者来说,可以通过安装postcss-px2rem等插件,将CSS中的px单位自动转换为rem单位,并且使用html-webpack-plugin插件生成HTML文件并插入meta标签,以此来设置rem单位基准值。这样能够方便快捷地实现移动端适配。

示例

示例一:使用rem作为单位

假设你有一个设计稿,比如375*667,然后你将设计稿给前端同事,要求实现与设计稿一样的效果。

  1. 在你的根组件中设置根元素的font-size大小。比如:
html {
  font-size: 100px;
}
  1. 在你的scss文件中,所有的数字都使用rem作为单位。比如:
.box {
  width: 2rem;
  height: 4rem;
  font-size: 0.6rem;
}

这样,在不同分辨率下,rem单位所代表的大小是不同的。比如在iPhone 6s上,1rem等于 375/7.5/100=0.5px

示例二:使用vw作为单位

假设你有一个设计稿,比如375*667,同时你的视口宽度为360px,希望你的页面在不同的屏幕大小上都能够保持设计稿一致的效果。

  1. 将所有的尺寸属性(例如,width、height、font-size等)写成vw单位。比如:
.box {
  width: 50vw;
  height: 20vw;
  font-size: 5vw;
}

这个时候,在不同的屏幕上,vw单位所代表的大小也是不同的。比如在iPhone 6s上,1vw等于 375/100=3.75px。因此,在iPhone 6s上,上述box的宽度为 50*3.75=187.5px

  1. 使用组件级别的css,配合position和transform调整UI页面。比如:
.box {
  position: absolute;
  left: 50vw;
  top: 50vw;
  transform: translate(-50%, -50%);
}

这个时候,可以使用vw作为left和top,然后使用transform来让组件居中。这样,无论在哪种分辨率的手机上,都能实现中心对齐的效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:webpack的移动端适配方案小结 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 配置vite.confgi.ts无法使用require问题以及解决

    Vite是一个面向现代浏览器的轻量级Vue.js开发构建工具。它能够提供快速的开发和热重载,但是在使用中,有可能会出现“配置vite.config.ts无法使用require问题”的情况。这种情况的原因是由于在Vite2版本中移除了require函数,而在Vite.config.ts中使用了该函数。 以下是解决该问题的步骤: 1.更改配置文件 打开vite.…

    node js 2023年6月8日
    00
  • Ajax中post方法直接返回以0开头数字出错问题分析

    当我们使用Ajax中的post方法发起请求时,有时可能会出现返回值以0开头数字出错的情况。这个问题的原因是在Ajax里面,返回以0开头的数字会被解析成八进制数,而不是十进制数,因此造成了解析错误。 解决这个问题的方法很简单,一种方法是将返回值转换成字符串类型,另一种方法是在服务器端设置返回头,让其返回值以JSON格式输出。 下面,我将分别演示这两种解决方法:…

    node js 2023年6月8日
    00
  • Node.js包管理器Yarn的入门介绍与安装

    当谈到Node.js的包管理器时,人们通常会想到NPM(Node.js包管理器)。然而,另外一个包管理器Yarn也已经成为了Node.js生态系统的重要组成部分。在这篇攻略中,我们将会提供一个Yarn的入门介绍及安装说明。 什么是Yarn? Yarn最初是Facebook推出的一个Node.js包管理器。它旨在弥补NPM在安装速度、并行处理效率和安全性方面的…

    node js 2023年6月8日
    00
  • Node.js编程中客户端Session的使用详解

    Node.js编程中客户端Session的使用详解 在Node.js编程中,我们通常需要向客户端保存一些数据或状态,以便在后续的请求中进行使用。其中一种常用的实现方式是使用Session。本文将详细讲解Node.js编程中客户端Session的使用方法。 什么是Session Session是Web应用程序中常用的一种状态管理机制,通过在服务端存储用户的信息…

    node js 2023年6月8日
    00
  • Node.js控制台彩色输出的方法与原理实例详解

    对于Node.js控制台彩色输出的方法与原理,这是一篇基础又实用的教程。接下来将详细讲解。 标题一:控制台彩色输出 Node.js作为一款流行的服务器端JavaScript环境,其强大的NPM(Node.js Package Manager)体系和灵活的模块化机制,让前端开发者强势入驻后端开发领域。在Node.js中,颜色在命令行终端的界面上,可以帮助我们更…

    node js 2023年6月8日
    00
  • Node.js如何响应Ajax的POST请求并且保存为JSON文件详解

    首先,我们需要创建一个Node.js服务器,以响应Ajax的POST请求。具体步骤如下: 创建Node.js服务器 在终端中运行 mkdir my-project 创建一个新的项目文件夹,并进入该文件夹 cd my-project。 运行 npm init 命令来创建项目的 package.json 文件。 运行 npm install express 安装…

    node js 2023年6月8日
    00
  • Windows下安装 node 的版本控制工具 nvm

    下面是详细讲解如何在 Windows 下安装 Node.js 版本控制工具 NVM 的完整攻略,包含两条示例说明。 1. 安装 Git NVM 需要使用 Git 来进行安装和版本控制,因此需要先安装 Git。可以在 Git官网 下载相应的安装包进行安装。 2. 下载并安装 NVM 在命令行终端输入以下命令下载 NVM: curl -o- https://ra…

    node js 2023年6月8日
    00
  • node.js三个步骤实现一个服务器及Express包使用

    下面我来详细讲解“node.js三个步骤实现一个服务器及Express包使用”的完整攻略: 第一步:创建服务器 在node.js中创建一个服务器,可以使用内置模块http,具体步骤如下: 1.引入http模块 const http = require(‘http’); 2.创建服务器实例 const server = http.createServer((r…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部