elementui样式重复-H5、vue、elementui、vant组件项目踩坑

1 更改富文本样式和vant组件样式时需要注意的事项

使用vue的v-html属性后。 如果要更改富文本上的样式,则不能将样式写在范围上

如果想要改变vant组件的样式,只能使用css语法来修改样式,并且要注意层级关系

2 防止页面滚动

@touchmove.prevent

3 使用DropDown组件时,无法绑定子选项处理风暴

 	<el-dropdown-menu slot="dropdown">
        <el-dropdown-item icon="el-icon-check" @click.native='func'>双皮奶</el-dropdown-item>
        <el-dropdown-item icon="el-icon-circle-check" @click.native='choose'>蚵仔煎</el-dropdown-item>
      </el-dropdown-menu>

4 限制结束日期不能小于开始日期-element-ui

elementui样式重复_样式重复构图_样式重复引入

data(){
        return {
            pickerOptions0: {
                disabledDate: (time) => {
                    if (this.value2 != "") {
                        return time.getTime() > Date.now() || time.getTime() > this.value2;
                    } else {
                        return time.getTime() > Date.now();
                    }
                }
            },
            pickerOptions1: {
                disabledDate: (time) => {
                    return time.getTime() < this.value1 || time.getTime() > Date.now();
                }
            },
        }
 }

5 使用element-ui后很难进入

<input v-model="form.name" placehoder="昵称" @keyup.enter="submit">
<el-input v-model="form.name" placehoder="昵称" @keyup.enter.native="submit"></el-input>

6 子组件不可用 更改父组件传递的值。 解决办法是emit一个方法给父组件,通过父组件传递参数,重新形成参数给子组件 7.添加滚动风暴后记得去掉 8.使用 v-lazy 实现图片懒加载

<ul>
  <li v-for="(item,index) in demoArr" :key = "index">
  	<!-- 循环一定不能放图片上!!!! -->
	<!-- 使用v-lazy代替src -->
  	<img  v-lazy = "item"/>
  </li>
</ul>

91:Vue的单向绑定原理答案:利用数据绑架和发布者-订阅者模式窃听数据值的变化,利用Object.defineproperty重新定义对象的Get和Set方法。 二:Vue 能否窃听链表或对象值的变化。 答案:不能。 10 有两种情况Vue无法监听链表的变化。

一:直接按照我在按钮风暴中写的那样改变arr的值(arr[0]=1000)

解决方案是将 this.arr[0]=1000 重写为 Vue 可以窃听的方式 this.set(this.arr,0,1000)this.set(this.arr,0,1000) this.set(this .arr, 0,1000) this.set接受三个参数,第一个是要操作的链表对象,第二个是要改变的数据的链表下标,第三个是改变后的值。

二:直接改变链表的宽度如this.arr.length=3

解决办法是使用js中的链表方法arr.splice来操作链表改变宽度。

很难窃听Vue中对象属性的变化

解决方案:this.$set(obj, name, 'xxx') 对对象进行操作时elementui样式重复,set 接受三个参数,第一个是对象的名称,第二个是对象的键值,第三个是对象的键值key 对应的 value 值。

如果需要同时插入多个值。

this.obj=Object.assign({}this.arr,{
age:21,
major:'soft'
}

11vue中的风暴委托

vue提供的特殊变量$event相当于js中addEventListenr()方法的回调函数中的event参数

elementui样式重复_样式重复构图_样式重复引入

<div @click="change($events)">
	<span id="a">one</span>
    <span id='b'>two</span>
</div>
methods:{
	change(e){
		if(e.target.id === 'a'){e.target.innerHTML = 'c'}
		if(e.target.id === 'b'){e.target.innerHTML = 'd'}
	}
}

12 自定义组件触发原生干扰

Dom元素支持的风暴如:click、keyup,这些风暴可以直接绑定到元素上生效,但是在vue中,如果你将@click等原生风暴绑定到你写的组件上,是不会触发的。

解决办法是使用native修饰符触发风暴:

<self-item  @click.native="changeSize" />

13 主动触发视图更新

在使用Element的表时,遇到了一个问题,动态改变表中的数据,但是表不会立即更新。 经过检查,我发现虽然是ES5的Object.defineproperty方法的缺陷,但是Vue在初始化实例时会将属性转换为getter/setter,所以属性必须在数据对象上,这样Vue才能将其转换为它反应灵敏。

数据发生变化后elementui样式重复,重新定义data中的数据:(比如我的tableData经过一系列的逻辑之后,上面的数据发生了变化,但是视图并没有触发变化)

样式重复构图_elementui样式重复_样式重复引入

解决办法如下

method:{
	reloadData(){
		this.$set(this.tableData,'name',username)
	}

Vue 在更新 DOM 时异步执行。 只要检测到数据变化,Vue就会打开一个队列并缓冲同一风暴循环中发生的所有数据变化。 如果同一个watcher被触发多次,它只会被扔进队列一次。 缓冲时的重复数据删除对于防止不必要的计算和 DOM 操作非常重要。 然后,在下一个风暴循环“tick”中,Vue 刷新队列并执行实际的(重复数据删除的)工作。 Vue 内部尝试使用原生 Promise.then、MutationObserver 和 setImmediate 来实现异步队列。 如果执行环境不支持,则会使用setTimeout(fn, 0)代替。

举个栗子

<template>
  <div>
    <p ref="p_1">{{msg}}</p>
    <button @click="fn">change</button>
  </div>
</template>
<script>
    export default {
        data() {
            return {
                msg: 1
            }
        },
        methods: {
            fn: function () {
                this.msg = 33
                console.log(this.$refs.p_1.innerHTML) //输出为1
                this.$nextTick(function () {
                        console.log(this.$refs.p_1.innerHTML) //输出为33
                    }
                )
            }
        }
    }
</script>

14、h5边框1px和1rem在移动端显示问题

问题:设置边框值为1pxsolid#ccc,边框在苹果手机上不会显示但在安卓手机上可以显示,单位可以改为rem,在苹果手机上可以正常显示,但在Android手机上不会显示。 有哪些解决方案可以使其在两种设备上正常显示?

有!,

样式重复引入_elementui样式重复_样式重复构图

var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
this.$toast('是否是Android:'+isAndroid);
this.$toast('是否是iOS:'+isiOS);

15、h5中android机的document.documentElement.scrollTop不生效。 尝试使用scrollintoview来实现锚点跳跃。 16.vue h5通过input上传文件,重复上传同一个文件没有响应。 可以通过改变input的显示和隐藏来消除input的值 17、vue css3实现页面平滑过渡效果

	//js
	this.scrollTo(offsetTop, 1000
 	scrollTo (top, duration) {
      if (top) {
        window.scrollTo(0, top)
        return false
      }
    },
 //css
 	html,
	body {
	  scroll-behavior: auto;
	  scroll-behavior: smooth;
	}

18、微信jsdk分享复制获取本地资源图片

NUtil.getShareImg = function () {
  let url = location.href.split('#')[0].replace('index.html', '')
  let img = require('../../src//assets/img/share.jpg').replace('./static', 'static')
  console.log(url + img)
  return url + img
}

19git指定回滚到某个版本

git重置--hard c9f2fb23c52b1efe115bcc4391e7fe673d571aa4

最后也是最后。 可以的话请点个赞,也可以加我交流技术问题