1、父元素使用了flex:1,子元素设置了出现省略号,没反应,解决办法
给父元素加一个min-width:0
2、
显示和隐藏的时候,为了让左右俩部分同步,我们可以设置transition: all 0.3s linear;(transition后的值一致)
3、我们在项目中使用CSS预处理器(Sass/Less/Stylus)的时候,要想让定义好的样式在全局使用,可以这样配置
https://cli.vuejs.org/zh/guide/css.html#css-modules
// vue.config.js module.exports = { css: { loaderOptions: { // 给 sass-loader 传递选项 sass: { // @/ 是 src/ 的别名 // 所以这里假设你有 `src/variables.scss` 这个文件 data: `@import "@/variables.scss";` // 主要是这部分,配置以后,就可以在所有的Vue组件中直接使用温经理定义好的class } } } }
4、项目中遇到这样一个问题
bookConfig和adminConfig是其他文件引入的,然后放到homeRouter中,现在要做的是把homeRouter保存到Vuex中,虽然保存成功,但是一直报错
之后试了很多方法,还是没有解决
报错原因: 数组是引用数据类型,只要对数组进行操作,就相当于直接改Vuex中的值,所以就会报错
解决办法:1、对数组进行拷贝,然后再进行操作
2、直接引入了,没有保存到Vuex中
5、当我们在项目中使用localStorage,如果浏览器关闭了localhStorage或者用的隐身模式,会报错,这时我们可以使用try catch
let defaultCity = '上海' try { if (localStorage.city) { defaultCity = localStorage.city } } catch (e) {} export default { city: defaultCity }
6、对全局事件的解绑
当我们在组件里给window绑定一个scroll事件的时候,会出现这样一个问题,跳转到其他组件,滚动的时候,这个事件也会继续触发,
原因就是:我们把这个事件绑定在了window上,而且没有解绑
可以这样:
只是在组件是用来keep-alive的时候用的,你也可以在其他生命周期里调用
activated () { window.addEventListener('scroll', this.handleScroll) }, deactivated () { window.removeEventListener('scroll', this.handleScroll) }
7.渐隐渐显效果
<template> <div> <router-link tag="div" to="/" class="header-abs" v-show="showAbs"> <div class="iconfont header-abs-back"></div> </router-link> <div class="header-fixed" v-show="!showAbs" :style="opacityStyle" > <router-link to="/"> <div class="iconfont header-fixed-back"></div> </router-link> 景点详情 </div> </div> </template> <script> export default { name: 'DetailHeader', data () { return { showAbs: true, opacityStyle: { opacity: 0 } } }, methods: { handleScroll () { const top = document.documentElement.scrollTop if (top > 60) { let opacity = top / 140 opacity = opacity > 1 ? 1 : opacity this.opacityStyle = { opacity } this.showAbs = false } else { this.showAbs = true } } }, activated () { window.addEventListener('scroll', this.handleScroll) }, deactivated () { window.removeEventListener('scroll', this.handleScroll) } } </script> <style lang="stylus" scoped> @import '~styles/varibles.styl' .header-abs position: absolute left: .2rem top: .2rem .8rem height: .8rem line-height: .8rem border-radius: .4rem text-align: center background: rgba(0, 0, 0, .8) .header-abs-back color: #fff font-size: .4rem .header-fixed z-index: 2 position: fixed top: 0 left: 0 right: 0 height: $headerHeight line-height: $headerHeight text-align: center color: #fff background: $bgColor font-size: .32rem .header-fixed-back position: absolute top: 0 left: 0 .64rem text-align: center font-size: .4rem color: #fff </style>
重点在这俩部分,给要显示和隐藏的div加一个style
在60和140范围内,当大于60时,逐步改版opacity的值,最大为1
然后把opactity赋值给style
9、真机调试的时候,有可能会出现白屏,有俩种可能:
一、版本太低,不支持promise。解决办法:npm install --save babel-polyfill,然后在main.js里面引入 import 'babel-polyfill'
二、打包的时候路径不对,webpack引起的,注意这部分