当前位置: 首页 > news >正文

泉州网站建设 推广网站页脚优化怎么做

泉州网站建设 推广,网站页脚优化怎么做,公司网站开发需要什么证书,大连网页设计哪家好目录 事件修饰符 阻止默认事件 阻止冒泡 允许触发一次 捕获模式 self passive 键盘事件 keyup keydown 按键别名 注意tab 注意系统按键 自定义按键 鼠标事件 简介 鼠标焦点事件 计算属性 差值语法实现 methods实现 computed实现 get() set() 总…目录 事件修饰符 阻止默认事件 阻止冒泡 允许触发一次 捕获模式 self passive 键盘事件 keyup keydown 按键别名 注意tab 注意系统按键 自定义按键 鼠标事件  简介 鼠标焦点事件 计算属性 差值语法实现 methods实现  computed实现 get() set() 总结  计算属性简写 事件修饰符 使用v-on, 表示即将发生的事件, 例如点击事件click, 下面是一个例子: div idapph5 v-on:clickshowInfo点击我/h5a hrefhttps://www.baidu.com v-on:clickshowInfo点我/a/div v-on 可以简写为: div idapph5 clickshowInfo点击我/h5a hrefhttps://www.baidu.com clickshowInfo点我/a/div 阻止默认事件 点击a标签, 会执行click中的showInfo方法, 随后还会执行a中的默认跳转行为, 如果不想这类行为事件发生, 可以使用事件修饰符prevent来阻止进行: a hrefhttps://www.baidu.com click.preventshowInfo点我/a当然可以在Vue实例中定义方法的时候, 传入event, 然后调用event的preventDefault方法: new Vue({el : #app,data : {name : 王者荣耀},methods : {showInfo(e) {e.preventDefault()alert(你好)}}}) 阻止冒泡 既然是点击, 那么如果一个区域里面存在两个点击事件. 例如: bodydiv idappdiv clicktestDiv idouta hrefhttps://www.baidu.com click.preventshowInfo点我/a/div/divstyle#out {width: 200px;height: 200px;border: solid blue 1px;}/style /body scriptnew Vue({el : #app,data : {name : 王者荣耀},methods : {showInfo(e) {e.preventDefault()alert(你好)},testDiv() {alert(这是最外层的div)}}}) /script 点击a标签那么就会出现: 首先出现: 然后出现:   发现, 本来我的本意只想点击这个a标签, 但是因为层叠关系(冒泡), 就导致点击了a的同时, 也点击了div标签, 所以为了阻止这种情况, 使用event方法: event.stopPropagation() new Vue({el : #app,data : {name : 王者荣耀},methods : {showInfo(e) {e.preventDefault()e.stopPropagation();alert(你好)},testDiv(e) {alert(这是最外层的div)}}}) 简写, 在事件后面添加事件修饰符stop, 例如: a hrefhttps://www.baidu.com click.prevent.stopshowInfo点我/a允许触发一次 使用修饰符once : a hrefhttps://www.baidu.com click.onceshowInfo点我/a事件只触发一次 捕获模式 事件执行, 先开始捕获, 由外到内, 捕获完之后开始执行, 从内到外执行, 也就是冒泡, 现在更改为捕获状态就执行, 也就是添加.capture, 例如click.capture xxx self click.self, 只有在event.target 是本身的时候, 才会触发点击事件 passive 事件立即执行, 无序等待前置条件: .passive 键盘事件 keyup keydown keyupkeydown 这里使用keyup作为案例: bodydiv idappp欢迎来到{{name}}/pinput typetext placeholder按下回车提示输入 keyupshowInfo/div /bodyscriptnew Vue({el :#app,data : {name : world},methods : {showInfo(e) {console.log(e.target.value);}}}) /script 按下a建., 输入一个a, 这个时候控制台还没有输入, 但是松开a键之后, 控制台输出: 再按下一个a, 松开之后, 控制台输出 两个a : keydown的用法类似, 这里不一一列举  相同的keyup和keydown都有事件修饰符: enter,  键盘输入之后并不会触发事件, 只有在键入的值是enter(回车)的时候, 才会触发事件, 例如: div idappp欢迎来到{{name}}/pinput typetext placeholder按下回车提示输入 keyup.entershowInfo/divnew Vue({el :#app,data : {name : world},methods : {showInfo(e) {console.log(e.target.value);}}}) 输入一个a并不会触发事件showInfo, 但是在输入a后,再按一个回车, 控制台就输出了一个a : 按键别名 相同的还有很多其他的键盘事件修饰符, 这些别的修饰符是我们vue中常用的按键的别名: 回车 : enter 删除 : delete 空格 : space 退出 : esc 换行 : tab 上 : up 下 : down 左 : left 右 : right vue暂时没有提供别的按键别名, 可以使用按键原始的key进行绑定 系统按键修饰符: ctrlaltshiftmeta (win) 系统修饰键配合keyup使用, 按下修饰键的同时, 再按下其他键, 随后释放其他键, 事件才被触发 : 解释   因为同时按下之后, keyup是属于松开才触发事件, 但是现在除了ctrl等键之外, 其他的一些按键同样被按下了, 那么他们之间就有一个释放的顺序, 所以现在只有其他键先释放, 这个keyup状态才结束, 事件执行         配合keydown使用, 直接按下之后就可以正常触发事件 注意tab 有下面的例子: bodydiv idappp欢迎来到{{name}}/pinput typetext placeholder按下回车提示输入 keyup.tabshowInfo/div /bodyscriptnew Vue({el :#app,data : {name : world},methods : {showInfo(e) {console.log(e.target.value);}}}) /script 这是一个使用键盘事件, 并且使用tab修饰这个键盘事件 : 我们输入aaa, 然后按下tab: 发现这个玩意没有输出到控制台: 多按几次就会发现, 他并不是没有作用, 反而像是被什么锁定了一样, 不能在input中输入, : 多按下几次就会发现, 他会在浏览器上切换焦点 这个焦点被切走了. 那为什么没有触发事件?? 分析: 细心的你一定会发现, 这个tab是按下立即就生效的, 但是我们定义的键盘事件是keyup, 按下tab之后, 焦点立即调走, 还没来得及松开焦点就已经从输入框中切走, 那么vm也就无法捕捉到这个键入tab的行为, 更加捕获不到tab松开. 改进 : 所以这个时候, 我们就可以使用keydown事件 注意系统按键 同按键别名中的说明, 如果直接使用keyup.ctrl ..... 比如同时按下ctrl y, 然后松开y之后, 触发事件 还有一个需要注意的是, 你可以指定松开哪一个键执行事件: keyup.ctrl.y, 这个时候, 只有同时按下ctrl y, 然后松开y才有用, 按下ctrl z或者是其他的除y之外的按键都是没有用的.  自定义按键 Vue.config.keyCodes.huiche 13;input typetext placeholder按下回车提示输入 keyup.huihceshowInfo鼠标事件  简介 除了键盘事件, 那么肯定有鼠标事件的啦, 看看下面这几个鼠标事件的例子: !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlescript src../js/vue.js/script /head bodydiv idappdiv idtestDiv clicktestClick dblclicktestDBClick mouseentertestMouseEnter mouseleavetestMouseLeave mousedowntestMouseDownmouseuptestMouseUpmousemovetestMouseMove{{content}}/div brhr/div /body scriptvar vue new Vue({el : #app,data : {content: ,value : null},methods : {testClick() { // 单机this.content 鼠标单击;},testDBClick() { // 鼠标双击this.content 鼠标双击;},testMouseEnter() { // 鼠标进入事件this.content 鼠标进入;},testMouseLeave() { // 鼠标离开事件this.content 鼠标离开;}, testMouseDown() { // 鼠标按下事件this.content 鼠标按下;}, testMouseUp() {this.content 鼠标弹起;}, testMouseMove(event) { // 任何事件都可以添加事件event对象this.content event.offsetX --- event.offsetY; // 只要是的事件都可以使用event}, testFocus() {this.value 获得焦点}, testBlur() {this.value 失去焦点}}}); /script style#testDiv {width: 150px;height: 150px;border: 2px solid green;text-align: center;line-height: 100%;} /style /html 单击 双击 离开div 这里不一一展示 总结鼠标点击事件 : 鼠标事件所表示触发的前置条件click鼠标单机触发dblclick鼠标双击mouseenter鼠标进入mouseleave鼠标离开mousedown鼠标按下mouseup鼠标弹起mousemove鼠标移动 鼠标焦点事件 focus : 鼠标聚焦目标以触发事件blur : 鼠标聚焦跳出目标, 触发事件 案例:  !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlescript src../js/vue.js/script /head bodydiv idappinput typetext focustestFocus blurtestBlur v-modelvalue/div /body scriptvar vue new Vue({el : #app,data : {content: ,value : null},methods : { testFocus() {this.value 获得焦点}, testBlur() {this.value 失去焦点}}}); /script /html 首先不进行任何操作: 点击这个输入框, 触发聚焦事件 : 鼠标点击输入框之外的内容: 单词解释:  blur也就是鼠标模糊不清, 也就是失去焦点.  计算属性 差值语法实现 !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlescript src../js/vue.js/script /head bodydiv idroot姓 : input typetext v-modelfirstNamebr名 : input typetext v-modellastName br姓名 : span{{firstName}}{{lastName}}/span/div /body scriptnew Vue({el :#root,data : {firstName : 张,lastName : 三}}) /script /html methods实现  {{}}的里面写的是差值表达式, 所以这里直接使用方法名 ()的形式, 表示调用这个函数的返回值 bodydiv idroot姓 : input typetext v-modelfirstNamebr名 : input typetext v-modellastName br姓名 : span{{fullName()}}/span/div /body scriptnew Vue({el: #root,data: {firstName: 张,lastName: 三},methods :{fullName() {return 博子妹妹;}}}) /script 这里将博子妹妹 修改为 this.firstName - lastName的形式, 即可联动显示, 因为是双向绑定, 修改 姓 之后, 就会修改data中的值, 然后vm捕捉到这个修改, 然后用到这个name的地方就会更新 . 以后任何修改data的数据操作之后, vm都会重新解析一次. computed实现 get() 不用方法, 也不使用插值语法来表示, 那么就使用vm实例中的computed字段来实现, computed, 本就有计算的意思: 在computed的字段中定义fullName, 然后使用这个fullName去计算出 全名, 使用的时候, 可以像data中的数据那样去访问这个fullName, 例如: {{fullName}}, 访问这个fullName, vm会调用computed中的fullName的get()方法, 然后将其返回值最为fullName的值. new Vue({el: #root,data: {firstName: 张,lastName: 三},computed : {fullName : { // 这个fullName依然在vm身上// get() : 当有人读取fullName的时候, 就会调用get方法, 返回值就会被当做fullName的值get() {return this.firstName this.lastName;}}}}) 但是这个get方法中不能直接 return firstName lastName,因为他访问不到data中的数据,但是可以通过vm实例对象来访问. bodydiv idroot姓 : input typetext v-modelfirstNamebr名 : input typetext v-modellastName br姓名 : span{{fullName}}/span/div /body scriptnew Vue({el: #root,data: {firstName: 张,lastName: 三},computed : {fullName : { // 这个fullName依然在vm身上// get() : 当有人读取fullName的时候, 就会调用get方法, 返回值就会被当做fullName的值get() {return this.firstName this.lastName;}}}}) /script 思考 computed中的属性的get 会被调用?? 解释: 初次读取computed中的属性的时候,对应的get方法会被调用, 由于调用之后, 其返回值被缓存, 下次读取就不会调用get方法, 其次就是所依赖的数据被修改的时候, 就上面例子而言, 如果输入框中的姓被修改的时候, get方法就会被重新调用. fullName虽然是个对象, 但是不能直接使用: {{fullName.get()}}.  set() 有get, 那么必然有set() : computed : {fullName : { // 这个fullName依然在vm身上// get() : 当有人读取fullName的时候, 就会调用get方法, 返回值就会被当做fullName的值get() {return this.firstName this.lastName;},set (value) {const arr value.split(-);this.firstName arr[0];this.lastName arr[1];}}} 我们讲到, 如果调用了set方法, 那么就会修改firstName和lastName属性, 那么vm就会捕获到这个修改, 从而重新更新使用到这两个属性的地方, 同时set方法也捕获到了这个修改, 然后将引用这个fullName的地方进行更新: 总结  计算属性:         1.定义:要用的属性不存在要通过已有属性计算得来。 如果计算属性中存在在vm外部定义的变量, 那么确实是可以像已有的属性那样显示出来, 但是vm无法捕捉到这个外部定义的变量的变化. 2.原理: 底层借助了objcet.defineproperty方法提供的getter和setter。         3.get函数什么时候执行?                 (1).初次读取时会执行一次。                 (2).当依赖的数据发生改变时会被再次调用。         4.优势:与methods实现相比内部有缓存机制 (复用) 效率更高调试方便。         5.备注:                 1.计算属性最终会出现在vm上直接读取使用即可。                 2.如果计算属性要被修改那必须写set函数去响应修改且set中要引起计算时依赖的数据发生变化 计算属性简写 计算属性中的每一个属性都是当做对象处理: 对象中的每个方法使用逗号分割, 但是实际上这个set方法一般都用不到, 所以直接将这个fullName定义为一个方法 : const vm new Vue({el: #root,data: {firstName: 张,lastName: 三},computed : {fullName : function(){ // 这个fullName依然在vm身上return this.firstName this.lastName;}}}) 更甚将其改为: fullName(){ // 这个fullName依然在vm身上return this.firstName this.lastName;} 注意这里简写的前置条件是, 我不会去调用set方法, 如果调用set方法: [vue警告]计算属性, “FulName”分配给了它但它没有set方法.
http://www.zqtcl.cn/news/363379/

相关文章:

  • 网站加图标网站开发属于无形资产
  • 个人网站开发与设计摘要企业营销策划心得体会
  • 专注苏州网站优化自建网站的优缺点
  • 网络建站怎么做js与asp.net做的网站
  • 个人网站设计理念自己做简历网站
  • 做网页设计的网站网站流量多少做网盟
  • 上海协会网站建设网站制作培训费用
  • 学会网站建设总结淮北市建市
  • 泉州开发网站的公司有哪些域名不用了需要注销吗
  • 重庆网站推广平台东莞整站优化火速公司
  • 商务网站建设综合实训网站推广效果怎么样
  • 成都品牌网站建设电话项目外包平台接活
  • 教育培训类网站模板上海有几个区最好
  • 公司网站维护怎么维护东莞网站建设it s
  • pc网站怎么做男科医院治疗一次2000元
  • 电子网站建设心得企业查询app排行榜
  • 杭州做网站的科技公司永川做网站的公司
  • 动物自己做的网站网站优化外包公司
  • 企业网站建设的三种方式并举例手机wap网站是什么
  • 做深圳门户网站起什么名字好建设网站对公司起什么作用是什么
  • 长春企业网站设计建设公司资质查询官网
  • 医疗网站前置审批查询免费网站建设可信赖
  • 摄影师个人网站模板宝坻集团网站建设
  • 比较多人用什么网站做推广wordpress数据库表管理系统
  • 网页开发和游戏开发东莞优化怎么做seo
  • 北京网站搭建开发高级网页设计教程
  • 北京南站是中高风险地区吗网站建设上机实验心得
  • 大学生做兼职的网站有哪些免费行情软件网站有哪些
  • 静安手机网站建设常见的网络营销方法及其效果
  • 怎么改版网站湖南长沙地图