vue-cli配置flexible过程详解

下面我将为你详细讲解“vue-cli配置flexible过程详解”的完整攻略。

1. 安装依赖

我们需要安装以下依赖:
- postcss-px2rem
- lib-flexible

在vue-cli项目中,使用以下命令安装:

npm install postcss-px2rem lib-flexible --save-dev

2. 配置postcss

在 vue-cli 项目下,新建 /build/postcss.config.js,并写入以下代码:

module.exports = {
  plugins: {
    'postcss-import': {},
    'postcss-url': {},
    'postcss-aspect-ratio-mini': {},
    'postcss-write-svg': { utf8: false },
    'postcss-cssnext': {},
    'postcss-px-to-viewport': {
      viewportWidth: 750,     // 视窗宽度,单位为px
      viewportHeight: 1334,   // 视窗高度,单位为px
      unitPrecision: 3,       // 指定'px'转换为视窗单位值的小数位数(很多时候无法整除)
      viewportUnit: 'vw',     // 指定转换的视窗单位,建议使用vw
      selectorBlackList: ['.ignore', '.hairlines'], // 指定不转换为视窗单位的类名,可以自定义
      minPixelValue: 1,       // 小于或等于'1px'时,不转换为视窗单位
      mediaQuery: false       // 允许在媒体查询中转换'px'
    },
    'postcss-viewport-units':{},
    'cssnano': {
      preset: 'advanced',
      autoprefixer: false,
      'postcss-zindex': false
    }
  }
}

注意:以上代码中 postcss-px-to-viewport 是将 px 转换为 vw,如果要将 px 转换为 rem,使用 postcss-px2rem

3. 引入lib-flexible

main.js 中引入 lib-flexible

import 'lib-flexible/flexible'

4. 添加视窗标记

index.html 中添加视窗参数:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <!-- 添加以下视窗参数,使得在移动端设备上,1px = 1真实像素 -->
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css">
    <title>Vue App</title>
  </head>
  <body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>

5. 配置webpack

webpack.base.conf.js 中,找到 module.exports 中的 module,添加 postcss 后置处理器:

const VueLoaderPlugin = require('vue-loader/lib/plugin')
const PostcssFlexbugsFixes = require('postcss-flexbugs-fixes')
// 添加以下代码
const postcssPresetEnv = require('postcss-preset-env')
const postcssAspectRatioMini = require('postcss-aspect-ratio-mini')
const postcssViewportUnits = require('postcss-viewport-units')
const postcssPxToViewport = require('postcss-px-to-viewport')

module.exports = {
  // ...
  module: {
    rules: [
      // ...
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          // ...
          // 可以在这里添加 postcss
          postcss: [
            PostcssFlexbugsFixes(),
            postcssPresetEnv({
              autoprefixer: {
                grid: true,
                flexbox: 'no-2009'
              },
              stage: 3
            }),
            postcssAspectRatioMini(),
            postcssPxToViewport({
              viewportWidth: 750,
              viewportHeight: 1334,
              unitPrecision: 3,
              viewportUnit: 'vw',
              selectorBlackList: ['.ignore', '.hairlines'],
              minPixelValue: 1,
              mediaQuery: false
            }),
            postcssViewportUnits()
          ],
          // ...
        }
      },
      // ...
    ]
  },
  plugins: [
    new VueLoaderPlugin()
  ]
}

示例说明

示例1

假设现在有一个设计稿为750px*1334px的页面,需要在移动端上显示。我们可以将页面宽度设置为100vw(视窗宽度的1倍),高度设置为 1334/750 * 100vw,这样就可以保证在移动端上宽高比与设计稿一致,如下所示:

.page {
  width: 100vw;
  height: 177.87vw; /* 1334/750 * 100vw */
  background-color: #fff;
}

使用上述方法可以很好的适配不同设备的屏幕。

示例2

假设现在有一个需求,页面上有一个字体大小为20px的标题,“七年之痒”,在移动端上需要相对于设计稿缩小三倍,因为视觉上感觉20px太大了。可以使用 postcss-px-to-viewport 将 px 转换成视窗相对单位,例如将20px转换为20vw/3,如下所示:

.title {
  font-size: 6.67vw; /* 20 / 3 vw */
  font-weight: bold;
  color: #333;
}

这样就可以在移动端上以视觉上适合的字体大小进行显示了。

以上就是完整的“vue-cli配置flexible过程详解”的攻略。希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue-cli配置flexible过程详解 - Python技术站

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

相关文章

  • 教你如何用CSS来控制网页字体的显示样式

    以下是“教你如何用CSS来控制网页字体的显示样式”的完整攻略: 教你如何用CSS来控制网页字体的显示样式 CSS可以控制网页字体的显示样式,包括字体类型、字体大小、字体颜色、字体粗细等。以下是实现字体样式控制的步骤: 选择字体:选择需要使用的字体,可以使用系统字体或者自定义字体。 设置字体大小:设置字体的大小,可以使用绝对大小或者相对大小。 设置字体颜色:设…

    css 2023年5月18日
    00
  • 一个通俗小故事告诉你溢出隐藏(overflow:hidden)失效的原因

    我来为您详细讲解“一个通俗小故事告诉你溢出隐藏(overflow:hidden)失效的原因”: 什么是溢出隐藏(overflow:hidden)? 在CSS样式中,溢出隐藏(overflow:hidden)通常是用来控制某个元素的内容超出部分是否可见的一种方式。当元素的内容超出了其容器的范围时,溢出隐藏可以将超出部分隐藏起来,以保证网页整体的美观和可用性。 …

    css 2023年6月10日
    00
  • HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等

    HTML5中通过li-canvas可以轻松实现各种图像和文字的绘制。以下是绘制单图、多图、圆角图片和单行、多行文字的攻略。 绘制单图 使用li-canvas绘制单个图片非常简单。首先需要在HTML中创建一个canvas元素,然后使用下面的JavaScript代码实现: var canvas = document.getElementById("my…

    css 2023年6月11日
    00
  • 一个css与js结合的下拉菜单支持主流浏览器

    实现一个下拉菜单可以使用CSS和JavaScript相结合的方法,同时支持主流浏览器的话,可以按以下步骤进行: 第一步:HTML 结构设计 首先,我们需要设计一下 HTML 结构,这里我们使用一个简单的无序列表的结构,每个子菜单项都是一个列表项 li,其中标题部分是一个带有子菜单的 a 标签,子菜单则将放置在一个 div 中: <ul class=&q…

    css 2023年6月10日
    00
  • div层调整z-index属性无效原因分析及解决方法

    下面是关于“div层调整z-index属性无效原因分析及解决方法”的完整攻略。 标题:div层调整z-index属性无效原因分析及解决方法 问题描述 在网页设计过程中,遇到了div层调整z-index属性无效的问题。即在元素设置了z-index属性后,发现另一个元素(通常是原本处于下方的元素)仍然遮盖在其上方,无法显示在视觉层中。 原因分析 该问题通常是由以…

    css 2023年6月10日
    00
  • 网页表格或div层在网页中被撑开解决之道

    网页中的表格或DIV层在内容较多时可能出现被撑开的情况,导致页面布局混乱,影响用户体验。下面是解决这种情况的完整攻略。 方法一:使用CSS属性overflow CSS属性overflow可以用来控制元素溢出的部分如何显示,可以将其设置为auto或scroll,来自动或手动添加滚动条。 示例一: table { width: 100%; overflow-x:…

    css 2023年6月10日
    00
  • 利用CSS3实现进度条的两种姿势详解

    关于“利用CSS3实现进度条的两种姿势详解”的攻略,我将会提供以下的详细步骤及示例说明来帮助读者更好地理解。 一、实现进度条的基本原理 实现进度条的基本原理是利用CSS3中提供的transition属性和transform属性来实现。transition属性决定了进度条过渡的时间、过渡方式以及过渡对象;而transform属性则可以使过渡对象发生缩放、旋转、…

    css 2023年6月11日
    00
  • js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合

    让我来详细地讲解一下“js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合”的完整攻略。 一、使DIV始终居于屏幕中间 实现方法 <div class="center"> <p>元素始终居于屏幕中央</p> </div> .center { position: fixed;…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部