Vue 2.x折腾记 - (22) Vue 打包图片在safari不显示的问题

简介: 图片不显示这个问题在safari上会出现,不管是PC还是手机端,而其他浏览器是可以正常预览


前言


图片不显示这个问题在safari上会出现,不管是PC还是手机端,而其他浏览器是可以正常预览


问题


效果图



safari(桌面、手机)不显示图片,其他浏览器都是正常的。


代码如下


<script>
import png_no_message from '@assets/layout/message/no_message.png';
export default {
  name: 'NoMessage',
  render() {
    return (
      <div class="no-message">
        <img class="no-message__img" src={png_no_message} />
        <div class="no-message__desrc">暂时没有任何消息啦~</div>
      </div>
    );
  }
};
</script>
<style lang="scss" scoped>
.no-message {
  height: 80vh;
  @include flex(column);
  &__img {
    display: block;
    width: 376px;
    height: 350px;
  }
  &__desrc {
    font-size: 32px;
    color: #302c48;
  }
}
</style>


解决姿势


有问题先自我排错!


  • 语法错误?
  • 资源被拦截?
  • vue框架问题?
  • 不支持 jsx 加载资源?
  • 换成 template 写法?


一一排查下来,啥毛病都没,资源也没有被拦截(safari的资源管理器可以看到图片资源)。


google大法,群友,没有一个人能说出个所以然。


最终打开一些大厂的站点,看看人家有木有问题,对比一下,写法上有点差异!!

  • 图片元素自身设置宽高百分百 100%
  • 给元素包裹一层父,然后设置父的宽高即可解决

代码实现


<script>
import png_no_message from '@assets/layout/message/no_message.png';
export default {
  name: 'NoMessage',
  render() {
    return (
      <div class="no-message">
        <div class="no-message__img">
          <img src={png_no_message} />
        </div>
        <div class="no-message__desrc">暂时没有任何消息啦~</div>
      </div>
    );
  }
};
</script>
<style lang="scss" scoped>
.no-message {
  height: 80vh;
  @include flex(column);
  &__img {
    display: block;
    width: 376px;
    height: 350px;
  }
  &__desrc {
    font-size: 32px;
    color: #302c48;
  }
}
</style>


  • App.vue 上再设置下,因为这里是主入口,不设置scope,那这样所有图片元素都默认继承宽高比了


<template>
  <div id="app">
    <router-view />
  </div>
</template>
<style lang="scss">
@import url('./styles/vue_common_transition.scss');
@import url('./styles/global.scss');
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow: hidden;
  color: #2c3e50;
  height: 100%;
}
img {
  height: 100%;
  width: 100%;
}
#nav {
  padding: 30px;
  a {
    font-weight: bold;
    color: #2c3e50;
    &.router-link-exact-active {
      color: #42b983;
    }
  }
}
</style>


效果图




目录
相关文章
|
4月前
|
缓存 监控 UED
升级 Vue3 时,如何减少打包体积的增加?
升级 Vue3 时,如何减少打包体积的增加?
282 59
|
4月前
|
API UED
升级 Vue3 后,项目的打包体积会有什么变化?
升级 Vue3 后,项目的打包体积会有什么变化?
162 57
|
3月前
|
JavaScript 前端开发
|
3月前
|
存储 JavaScript 前端开发
vue尚品汇商城项目-day05【30.登录与注册静态组件(处理公共图片资源问题)+31.注册的业务+登录业务】
vue尚品汇商城项目-day05【30.登录与注册静态组件(处理公共图片资源问题)+31.注册的业务+登录业务】
37 1
|
5月前
|
容器
Vue3图片(Image)
该图片预览组件提供丰富的功能,包括设置鼠标悬浮预览文本、图像描述、尺寸调整、适应容器模式等。支持单张或多张图片展示,具备旋转、缩放、镜像等功能,并可通过键盘或滚轮控制。组件允许自定义多项属性,如图像地址、宽度、高度、边框显示等,并兼容多种使用场景,如相册模式和循环切换。组件内部使用了 Vue3 的 `Spin` 和 `Space` 组件以及 `add` 函数辅助实现。
105 2
Vue3图片(Image)
|
4月前
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
180 6
|
3月前
|
JavaScript
vue尚品汇商城项目-day07【vue插件-48.(了解)图片懒加载插件】
vue尚品汇商城项目-day07【vue插件-48.(了解)图片懒加载插件】
38 0
|
5月前
|
JavaScript 前端开发 安全
svg图片hover变色,居然只用一个vue指令就可以搞定!千万别在写两个控制显影了!
【8月更文挑战第22天】svg图片hover变色,居然只用一个vue指令就可以搞定!千万别在写两个控制显影了!
425 3
|
5月前
|
JavaScript
如何在Vue页面中引入img下的图片作为背景图。../的使用
这篇文章介绍了在Vue页面中如何引入`img`目录下的图片作为背景图,提供了两种使用相对路径的方法。第一种是使用`../assets/img/`作为路径引入图片,第二种是使用`../../assets/img/`作为路径。文章还展示了使用这些方法的代码实现和效果展示,并鼓励读者学无止境。
如何在Vue页面中引入img下的图片作为背景图。../的使用
|
5月前
|
JavaScript
如何通过点击商品的信息(图片或者文字)跳转到更加详细的商品信息介绍(前后端分离之Vue实现)
该博客文章介绍了如何在Vue 2框架下实现前后端分离的商品信息展示和详情页跳转,包括排序筛选、详情展示、加入购物车和分享功能。
如何通过点击商品的信息(图片或者文字)跳转到更加详细的商品信息介绍(前后端分离之Vue实现)