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>


效果图




目录
相关文章
|
1月前
|
JavaScript 索引 容器
vue element plus Image 图片
vue element plus Image 图片
32 0
|
1月前
|
JavaScript
vue3 使用element plus 打包时 报错
vue3 使用element plus 打包时 报错
26 0
|
2月前
|
JavaScript
有关vue中两张图片,一个底图一个右上角的图片 点击右上角不触发底图方法
有关vue中两张图片,一个底图一个右上角的图片 点击右上角不触发底图方法
15 0
|
4月前
|
JavaScript 前端开发
Vue使用Element实现增删改查+打包
Vue使用Element实现增删改查+打包
24 0
|
5月前
|
人工智能 JavaScript 前端开发
vue打包如何开启gzip压缩
vue打包如何开启gzip压缩
|
3月前
|
JavaScript 前端开发
总结 Vue3 的一些知识点:Vue3 项目打包
总结 Vue3 的一些知识点:Vue3 项目打包
|
2天前
|
JavaScript
vue实现base64格式转换为图片
vue实现base64格式转换为图片
12 2
|
4月前
|
前端开发 API 开发者
Vue3如何优雅的加载大量图片?
Vue3如何优雅的加载大量图片?
|
18天前
|
JavaScript 前端开发
Vue鼠标悬浮切换图片
Vue鼠标悬浮切换图片
13 0
|
24天前
|
JavaScript 测试技术
vue不同环境打包环境变量处理
vue不同环境打包环境变量处理
36 0