上线前本地调试
上线后(通过webpack打包)
受影响的包括<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是相同的
3月7日再更新
发现与线上线下无关,同样的cdn地址的文件在不一样的服务器环境下产生的效果都不一样,求大神解惑
坑了两天终于还是靠自己找到了问题的答案和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服务器、浏览器字体兼容一步一步查到这里,感慨平时最容易忽略的才是问题的关键~