前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue 2.x折腾记 - (22) Vue 打包图片在safari不显示的问题

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

作者头像
CRPER
发布2019-06-15 15:34:26
1.1K0
发布2019-06-15 15:34:26
举报
文章被收录于专栏:CRPER折腾记

前言

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

问题

效果图

image.png
image.png

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

代码如下

代码语言:javascript
复制
<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%
  • 给元素包裹一层父,然后设置父的宽高即可解决

代码实现

代码语言:javascript
复制
<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,那这样所有图片元素都默认继承宽高比了
代码语言:javascript
复制
<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>

复制代码

效果图

image.png
image.png

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年06月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 问题
    • 效果图
      • 代码如下
      • 解决姿势
        • 代码实现
          • 效果图
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档