序
实习第三个月,最近重温Vue框架——开发被迫前端,我都快深度怀疑自己了,自己写案例,对照源码对比,我硬是觉得明明都一样,为啥偏我的不行,然后通过实验,发现了是href属性这个小妖精在作祟。
实例
是打算写一个图片更换的例子,第一张图左箭头消失,最后一张右箭头消失,其余均能实现正常图片左右切换。
基本代码
<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>事件绑定</title>
<script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
<a href="" @click="prev" v-show="index==0?false:true"><img src="img/翻页1.png" alt=""></a>
<img width="1000px" :src="url[index]" alt=""/>
<a href="" @click="next" v-show="index==6?false:true"><img src="img/翻页2.png" alt=""></a>
</div>
<script>
new Vue({
el:'#app',
data:{
url:[
"img/1.png", "img/2.png",
"img/3.png", "img/4.png",
"img/5.png", "img/6.png",
"img/7.png"
],
index:0
},
methods:{
prev:function () {
this.index--;
},
next:function () {
this.index++;
}
}
})
</script>
</body>
</html>
分析
- 图片显示:将要切换的图片资源放在数组中,通过
v-bind
——可简写为:属性
与img图片标签的src属性绑定 - 左右切换:用超链接标签包裹左右箭头的图片,用
v-show
来确定该箭头是否显示,源码中index==0?false:true
/index==6?false:true
该部分可替换为index>0
/index<6
- 事件绑定:给左右箭头添加单击事件修改数组下标值从而达到切换资源的目的
问题
至此,基本功能已经基本实现,然后切换时,如基本代码所示,a标签中添加了href属性,但值为空,<a href=""></a>
切换图片时会一闪而过,一直停留在当前图片,无法切换。原因其实是,值为空时默认刷新了。
当href属性值为#时,<a href="#"></a>
图片能正常切换,但如果在div
前加上多行<br>
,就可以发现,每切换一张图片,都是默认回到顶端,往下滑动才能看到图片。此时#的作用是锚点,#自定义位置名
能够指定跳转到某一位置。
当href属性值为javascript:;
/javascript:void(0);
时,<a href="javascript:void(0);"></a>
图片能正常切换,页面不需要移动(上下滑动,如果有多个空行)。此时,它与<a></a>
效果一致,禁用掉了href属性,仅仅作为一个占位符使用。
总结
<a href=""></a>
,href属性为空,点击超链接会默认刷新<a> </a>
标签是超链接,但是没有 href 属性,它仅仅是超链接的一个占位符。<a href="#"></a>
,href属性值为#,则表示的该标签作用是定位,#包含了一个位置信息,默认的锚在页面的顶端<a href="javascript:void(0);"></a>
,href的这一串属性值表示禁用掉了该属性,不进行资源的跳转与访问,仅作为普通标签使用