欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vue-cli3+ 打包部署到服务器后,svg在iphone上无法正常显示 -- 工作笔记

程序员文章站 2023-12-27 15:38:15
...

用vue-cli3初始化项目配置完,然后打包部署到服务器上,svg图片在iPhone不能正常显示(.png格式可以显示),在安卓可以正常显示。
下面是我的做法(iphone不正常显示的做法)
我是用img标签引入

<div class="CPRdiv" @click="mapLink('CPR')">
    <img  class="CPR"
    src="@/assets/images/CoastalPlankRoad.svg" type="image/svg+xml">
  </div>

把svg图片放在assets/images里面

vue-cli3+ 打包部署到服务器后,svg在iphone上无法正常显示 -- 工作笔记
在这之前在vue.config.js需要配置下引入svg的,不然会报错
chainWebpack

let path = require('path')
function resolve (dir) {
  return path.join(__dirname, dir)
}

module.exports = {
  publicPath: './',
  outputDir: 'dist',
  lintOnSave: true,
  runtimeCompiler: true, // 

  // 调整内部的 webpack 配置。
  // 查阅 https://github.com/vuejs/vue-doc-zh-cn/vue-cli/webpack.md
  chainWebpack: config => {
    config.resolve.alias.set('@', resolve('src'))
    config.module
      .rule('images')
      .use('url-loader')
      .loader('url-loader')
      .tap(options => Object.assign(options, { }))
  },
  configureWebpack: () => {},
  // 配置 webpack-dev-server 行为。
  devServer: {
    host: '0.0.0.0',
    port: 8080,
    proxy: {
      '/': {
        // target: 'http://www.xxxxxx.com/',
        target: 'http://192.168.0.0:8000/', // 自己的ip地址
        changeOrigin: true,
        ws: false,
        pathRewrite: {
          '^/': ''
        }
      }
    }
  }

}

解决方法:
更改引入svg的方式,改为background的方式
如下

<div
      class="NCPdiv"
      @click="mapLink('NCP')"
      :class="{active :NcpIsActive}"

css
.NCPdiv {
    position: absolute;
    width: 95px;
    height: 42px;
    left: 260px;
    top: 146px;
    background:url('aaa@qq.com/assets/images/NuwaCoastalPark.svg');
    background-size: cover;
    }

然后重新打包后部署到服务器上就可以正常显示了。

在这里具体的原理我也不懂,属于误打误撞,记录一下。

这里顺便也记一下,配置移动端适配。
创建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: 375, // 根据ui给的设计图配置
      viewportHeight: 603, // (Number) The height of the viewport.
      unitPrecision: 2, // (Number) The decimal numbers to allow the REM units to grow to.
      viewportUnit: 'vw', // (String) Expected units.
      selectorBlackList: ['.ignore', '.hairlines'], // (Array) The selectors to ignore and leave as px.
      minPixelValue: 1, // (Number) Set the minimum pixel value to replace.
      mediaQuery: false // (Boolean) Allow px to be converted in media queries.
    },
    'postcss-viewport-units': {},
    'cssnano': {
      preset: 'advanced',
      autoprefixer: false,
      'postcss-zindex': false
    }
  }
}

噢,还需要安装依赖包,不知道是哪几个了
vue-cli3+ 打包部署到服务器后,svg在iphone上无法正常显示 -- 工作笔记

相关标签: 工作经验

上一篇:

下一篇: