开发者社区> 问答> 正文

vue滚动到一定高度更换图片问题

如题,我原先用的jquery判断高度,后替换图片、

image.png

前方高能!! 我的目录结构是这样的(此处省略由于一开始把img放在与src同级的static带来的心酸泪史,各种图片打包路径问题,这坑好大!)

image.png

这时候我发现我用的vue-cli npm run build 之后图片都被打包到assets,但是路径不一样了!!原先img->header->logo.png打包后直接成img->logo.ad7783.png,所以我上面的写法是无法找到图片的,我又把hash给去掉了(找了好久)。 终于成功了,但是,想要通过logo_status来判断更换图片[这样是不是就能用上图片hash了,猜测],可是并没有变化,是哪里写错了吗? PS:有其他更好的方案亦可,前提我想知道我这样写错在哪~

header.vue

LOGO

data() { return { logo_status:0, logo_src: this.$store.state.logo_src, logo1_src:this.$store.state.logo1_src, } }, methods: { changeLogo(){ let haschange = false; $(window).scroll(function () { var top = parseInt($pele.height()) * 0.3; var scrollTop = parseInt($(window).scrollTop()); if (scrollTop > top) { if (!haschange) { $ele.addClass(style); // $img.attr('src', './assets/img/LOGO1.png'); // $img.attr('src', this.$store.state.logo1_src); this.logo_status =1;

            $a.css('color', '#414458').last().css('color', ' #fff');
            $('.drop-menu li a').css('color', '#ffffff');
            haschange = true;
        }
    } else {
        if (haschange) {
            $ele.removeClass(style);

// $img.attr('src', './assets/img/LOGO.png'); // $img.attr('src', this.$store.state.logo_src); this.logo_status =0; $a.css('color', '#fff'); haschange = false } } }) } }

store

const state = {
  logo_src:require('../assets/img/header/LOGO.png'),
  logo1_src:require('../assets/img/header/LOGO1.png')
}

展开
收起
问问小秘 2020-01-09 16:05:39 664 0
1 条回答
写回答
取消 提交回答
  • 解决办法: 1.使用require

    $img.attr('src', require('./assets/img/LOGO1.png')); 动态设置为了一个模块,require可以正确找到这个图片。

    2.放到public文件夹下 打包后public里的资源会复制到dist,动态设置绝对路径后,还是能根据绝对路径找到这个地址

    2020-01-09 16:07:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
利用编译将 Vue 组件转成 React 组件 立即下载
Vue.js在前端服务化上的实践与探索 立即下载