iview <Table> <Page> webpack打包发布后样式问题

上线前本地调试

clipboard.png

上线后(通过webpack打包)

clipboard.png

受影响的包括
<Table>中的表格高度, 表格内字体大小;
<Page>中的翻页箭头的位置从居中变成的顶头

引入iview.css的方式是在main.js 中加入的,工程是用vue-cli生成的,本地调试一切安好,上线使用打包后的文件产生上述问题,求大神帮助

import Vue from 'vue'
import iView from 'iview'
import App from './App'
import router from './router'
import store from './store'
import 'iview/dist/styles/iview.css'

Vue.config.productionTip = false
Vue.use(iView)

/* eslint-disable no-new */
new Vue({
  el: '#app',
  store,
  router,
  components: { App },
  template: '<App/>'
})

通过chrome的network工具,线上线下所有的js、css、ttf文件都已经加载,对比不出差别
但还是怀疑线上有字体冲突或者是集体加载不正确

3月7日更新
diff 了线上线下的css文件 ,除了cdn的域名以外没有任何区别,可以看到文件名称里面的hashcode是相同的
clipboard.png

3月7日再更新
发现与线上线下无关,同样的cdn地址的文件在不一样的服务器环境下产生的效果都不一样,求大神解惑

阅读 3.5k
1 个回答

坑了两天终于还是靠自己找到了问题的答案和vue、i-view、webpack打包都没啥关系,实际问题出在了index.html这个入口文件上,在vue-cli的index.html里面第一行<!DOCTYPE html>就是问题的关键所在,有了这一行,html 会按照w3c标准模式 document.compatMode:CSS1Compat 来渲染,否则就会是噩梦的开始,document.compatMode:BackCompat,怪异模式,浏览器使用自己的怪异模式解析渲染页面,导致出现上文描述的问题。
为什么会出现上传cdn发布后得到的效果与开发环境不一致,就是因为server端在集成cdn的js时使用的index.html里面不包含<!DOCTYPE html>,从而导致了上述一系列问题。
从css作用域、编译打包配置、cdn上传脚本、cdn服务器、浏览器字体兼容一步一步查到这里,感慨平时最容易忽略的才是问题的关键~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题