vue动态绑定背景图片
// tempalte
<div :style="{'backgroundImage': 'url(' + imgList[randomIndex] + ')'}"></div>
// script
data () {
return {
imgList: [
require('../assets/images/bg1.jpg'),
require('../assets/images/bg2.jpg'),
require('../assets/images/bg3.jpg')
],
randomIndex: 0
}
},
vue开发和生产构建时的配置修改
// config/index.js(静态资源引入问题)
build: {
assetsPublicPath: './', // (修改后)
}
// build/utils.js(解决图标问题)
return ExtractTextPlugin.extract({
use: loaders,
publicPath: '../../', // 这里是修改后的
fallback: 'vue-style-loader'
})
手机移动端使用适配问题,修改配置项
// 第一种做法(这种做法可以使用适配elementui,做的时候直接使用px为单位)
`npm install --save lib-flexible px2rem-loader`安装
// build/utils.js 中配置
const px2remLoader = {
loader: 'px2rem-loader',
options: {
remUnit: 75(设置为75能够解决引入element-ui的适配问题,所以设计稿尽量为750的)
}
}
找到generateLoaders函数修改启动的loaders
const loaders = options.usePostCSS ? [cssLoader, postcssLoader,px2remLoader] : [cssLoader,px2remLoader]
// 另一种做法(不能适配elementui,需要以先计算rem但是可以是任意的设计稿)
// assets/js/remConfig.js
export default function() {
// var devicePixelRatio = 1;
// var scale = 1 / devicePixelRatio;
// document.querySelector('meta[name="viewport"]').setAttribute('content','initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
// 7.5根据设计稿的横向分辨率/100得来
// alert(document.documentElement.clientWidth)
var deviceWidth = document.documentElement.clientWidth;
// var deviceWidth = window.screen.availWidth
// alert(navigator.userAgent)
// alert(deviceWidth)
// console.log(navigator.userAgent)
if(deviceWidth > 750) {
// deviceWidth = 750;
deviceWidth = 7.5 * 50;
}
document.documentElement.style.fontSize = deviceWidth / 7.5 + 'px';
// 禁止双击放大
document.documentElement.addEventListener('touchstart', function (event) {
if (event.touches.length > 1) {
event.preventDefault();
}
}, false);
var lastTouchEnd = 0;
document.documentElement.addEventListener('touchend', function (event) {
var now = Date.now();
if (now - lastTouchEnd <= 300) {
event.preventDefault();
}
lastTouchEnd = now;
}, false);
}
// main.js 中调用
import remConfig from './assets/js/remConfig';
import 'lib-flexible/flexible.js'
remConfig()
vue中的页面一些监听js会被别的页面调用
// window,document的监听事件可以在destroy中清除
destory(){
document.body.removeEventListener('onscroll', this.scroll) // 记得移除监听
}
// 使用keep-alive缓存的可以在钩子deactivated 中清除
deactivated (){
window.removeEventListener('scroll',this.scrollPage)
},
destroyed (){
window.removeEventListener('scroll',this.scrollPage)
}
sass 安装
cnpm install --save-dev node-sass sass-loader vue-style-loader
修改webpack.base.config.js中的module
{
test: /\.scss$/,
loaders: ['style','css','sass']
}
vue 打包多行省略号失效
// 解决办法是加上特定注释
{
overflow : hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
/*! autoprefixer: off */
-webkit-box-orient: vertical;
/* autoprefixer: on */
}
vue 监听路由的变化
watch: {
$route(){
this.initPage()
}
}
vue的滑动插件
vue-scroller插件
参照:https://www.jianshu.com/p/a39f5276ff0b
