完成的效果图如下: 一.首先,我们简单布局一下: <template> <div class="select"> <div class="inner"> <div class="inputWrapper"> <input type="text" readonly placeholder="请选择菜品"> <span class="i…
创建下拉框组件 Select.vue <template> <div class="selects"> <div :class="{selects0show: !isshow,selects0hade: isshow}" class="selects0" @click="isshow=!isshow" > <p ref="mybox">请选择</p>…
一个vue文件可以写多个<style></style>, 如果在style加上socped代表本组件的样式,不污染全局. 如果需要覆盖第三方组件样式,则不能加scoped,因此需要另写一个<style>.xxx-component{...}</style>,这里用一个大类包裹防止污染全局. 接着,用比较笨的方法,就是打开f12检查究竟要覆盖哪些样式,然后写在没有加scoped的style里即可.…
消息弹框组件,默认3秒后自动关闭,可设置info/success/warning/error类型 效果图: 文件目录: Message.vue <template> <transition name="fade"> <div class="message" :class="type" v-if="visible"> <i class="icon-type iconfont&q…
1.子组件往父组件传值 点击子组件的值,子组件自增,父组件的值也跟着自增 通过:this.$emit('change')方法向父组件暴露事件,在子组件中引用,可以调用父组件的方法 点击子组件触发click事件,调用子组件的add方法 子组件的add方法触发了父组件的事件,调用了父组件的changeAdd方法 <body> <div id="app"> <!-- 调用父组件的方法--> <number @change="countAdd…
先上效果图: (1) 看起来可能有点卡顿,但是实际上页面上看起来挺顺畅的. (2) 思路就是获取每一个列表的宽度,设置定时器移动列表,当移动的距离达到一个列表的宽度的时候,把这个距离放到数组的最后.这样就能达成无缝循环滚动了. 大致的情况就是下面这样: 接下来就是代码的实现: index.vue 引入组件 <template> <div> <marqueeLeft :send-val='send'></marqueeLeft > </div> &…
参数名 类型 说明 visible Boolean 是否显示,默认false title String 标题 update:visible Boolean 更新visible, 使用:visible.sync实现动态绑定 Modal.vue <template> <transition name="fade"> <div class="modal-wrap" v-if="visible"> <div cl…
查看文档寻找解决办法 增加这两个参数即可完满解决 <el-dialog :lock-scroll="false" :append-to-body="true" > </el-dialog>…
使用Vue.use()写一个自己的全局组件. 目录如下: 然后在Loading.vue里面定义自己的组件模板 <template> <div v-if="loadFlag"> Loading... </div> </template> <script> export default { name: "MyLoading",//组件名称 props: ['loadFlag'], } </script&g…
import {myfun} from '../static/js/test.js' //se6的正确写法export default {methods:{ diyfun:function () { myfun(); } } 或Vue.prototype.funcName = function (){}this.funcName(); vue 自定义全局方法,在组件里面的使用介绍 https://www.jb51.net/article/135674.htm…