vue+postcss-plugin-px2rem大屏页面问题

vue大屏页面 使用postcss-plugin-px2rem插件进行自适应
会出现这种问题 但是多刷新几次就会好 再刷新几次 就又会出现这种问题 这是什么原因?
还有 vue大屏自适应 一般采用什么方式?

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 看下这篇博客,也许你就懂了,链接:vue cli3+项目使用postcss-px2rem或者postcss-plugin-px2rem适配
  • 除此之外, 这篇博客: H5移动端插件中的 1、postcss-plugin-px2rem(vue中移动端自适应) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    postcss-plugin-px2rem是PostCSS插件,可从px单位生成rem单位,响应式改变根元素的字体大小
    
  • 以下回答来自chatgpt:

    首先,我们需要添加一些prompt,以便chatgpt更好地理解您的问题。建议问题标题和内容应包含以下内容:

    问题标题:如何解决使用postcss-plugin-px2rem插件的vue大屏页面自适应问题?

    问题内容:我正在开发一个使用postcss-plugin-px2rem插件的vue大屏页面。这个插件可以将px单位转换为rem单位,以达到页面自适应的效果。但是,我发现有时候页面会显示不正确,需要多次刷新才能正常显示。我想知道这个问题的原因,并且想了解一下vue大屏页面自适应通常采用哪些方式解决这个问题。谢谢!

    接下来,我们来解决这个问题。首先,我们需要确定问题原因。这个问题可能是由于浏览器缓存导致的。为了解决这个问题,我们需要使用PostCSS插件来生成不同的文件名,以避免缓存问题。

    我们可以安装node-md5-file插件来生成不同的文件名。在webpack的配置文件中,我们需要对postcss-loader进行修改,添加postcss-md5,以确保文件名每次都不同。具体的代码如下:

    const md5File = require('md5-file');
    const postcssMd5 = require('postcss-md5');
    const cssFilePath = 'path-to-your-css-file';
    
    {
      loader: 'postcss-loader',
      options: {
        plugins: function() {
          return [
              require('postcss-plugin-px2rem')({
                  rootValue: 100,
                  minPixelValue: 2,
                  exclude: /node_module/,
              }),
              postcssMd5({
                cssFilePath: cssFilePath,
                createHash: md5File.sync
              })
          ];
        }
      }
    }
    

    还有一个方法是使用webpack的hash值作为文件名,这个方法也可以避免浏览器缓存问题。具体代码如下:

    {
      loader: 'postcss-loader',
      options: {
        plugins: function() {
          return [
              require('postcss-plugin-px2rem')({
                  rootValue: 100,
                  minPixelValue: 2,
                  exclude: /node_module/
              }),
              require('cssnano')({
                  preset: 'default',
              }),
          ];
        }
      }
    }
    
    output: {
      filename: '[name].[hash].js',
    }
    

    这两种方法都可以解决浏览器缓存问题,确保自适应在不同的设备上都能正常显示。

    Vue大屏页面自适应通常采用flex布局。这种布局方式可以让页面在不同设备上自适应,而不需要使用媒体查询。同时,我们还可以使用rem作为单位,这样可以避免在不同设备上的单位转换。通过设置根元素的字体大小,我们可以使用rem作为单位来开发页面。

    具体的代码如下:

    html {
      font-size: 16px; // 设置根元素的字体大小
    }
    
    .container {
      display: flex; // 使用flex布局
      justify-content: center; // 横向居中
      align-items: center; // 纵向居中
      width: 100%;
      height: 100%;
      background-color: #f0f0f0;
    }
    
    .item {
      flex: 1; //自适应宽度
      height: 100%;
    }
    

    以上就是解决问题的具体步骤和代码。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^