前言:a标签,不止你在用,我也在用。但某些时候我们可以考虑用button替代a。

在多页应用中,a标签很常见,我们常用来作为一个普通超链接,进行页面跳转。

而在单页应用中,我们使用路由进行页面切换,a标签的使用就少了。

不过当我们不需要跳转,只需要点击某个元素来达到一些效果的需求时,常常使用a标签。

如图,智联招聘上的这些选项,就是a标签,没有使用a标签进行页面的跳转,而是监听点击事件然后进行一些操作,这其实也是我们比较普遍的a标签用法。

这是一个修改了样式的a标签——

a{
text-decoration: none;
color: #666666;
font-size: 20px;
}
a:hover{
color: #3EA4DA;
}

看似很好,但隐藏着一些我们不想要的效果——

1.能拖拽  

 2.会跳转,即使不写href地址,也会刷新页面

当然,我们可以通过js解决以上两个问题:

href值为javascript:;   点击后执行一条空代码不跳转页面

ondragstart='return false'   阻止拖动事件的默认行为

<a href="javasricpt:;" ondragstart='return false' >我是一个a标签</a>

不过我想提出另一个思路:用button替代a

这是同样进行了样式修改的button标签  

和a标签对比,差别不大,只需修改样式,无需写js代码。

且样式修改也很简单,三个关键——border、background、outline设为none即可

button{
border: none;
background: none;
outline: none;
font-size: 20px;
color: #666666;
}
button:hover{
color: #3EA4DA;
}

最后,并不是要求大家都要使用button,而舍去a,而且我个人有时也会习惯用a,只是提供一个思路:可用button替代a


补充:

Q:反正都是要去除默认样式的,为什么不直接用一个span标签?

A:

1.鼠标样式:当鼠标移入span时,显示的样式为,不像button和a标签是我们比较喜欢的效果:

  当然,这个可以通过样式cursor:default;修改。default是默认样式,箭头,同button;pointer是手指,同a。

2.双击选中文本:双击span就会选中文本,如图。用户点击某一元素时,有时会多次点击,点击时间间隔短,便会产生双击效果,就会选中文字如图,这个效果就不是很好了。

3.HTML语义化:HTML100多个标签的存在,就是为了HTML语义化,而不是让我们所有元素都是div或span。

  HTML丰富的标签,目的在于通过标签名传达标签内容类型的一些信息,就像h1标签传达了标题,header标签传达了头部...

  在这里a标签和button标签,则传达了是链接、按钮,都是用于点击的元素

 Q:为什么要语义化?(转载自:https://blog.csdn.net/qq_38128179/article/details/80811339

A:

  1. 代码结构: 使页面没有css的情况下,也能够呈现出很好的内容结构
  2. 有利于SEO: 爬虫依赖标签来确定关键字的权重,因此可以和搜索引擎建立良好的沟通,帮助爬虫抓取更多的有效信息
  3. 提升用户体验: 例如title、alt可以用于解释名称或者解释图片信息,以及label标签的灵活运用。
  4. 便于团队开发和维护: 语义化使得代码更具有可读性,让其他开发人员更加理解你的html结构,减少差异化。
  5. 方便其他设备解析: 如屏幕阅读器、盲人阅读器、移动设备等,以有意义的方式来渲染网页。

你还在用a标签吗?——用button替代a的更多相关文章

  1. odoo开发笔记 -- div标签代替odoo button写法

    odoo开发笔记 -- div标签代替odoo button写法 并调用自定义js <footer> <div id="confirm_request_cloud_repo ...

  2. button标签和input button

    一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...

  3. jq动态增加的button标签click回调失效的问题,即动态增加的button标签绑定事件$("button.class").click(function)无效

    对于新增加的页面元素,改变了页面结构,如果是使用老办法$("button.class").click(function)去监听新的button标签事件,会失效. 笔者的应用是文字的 ...

  4. 来吧,HTML5之基础标签(下)

    <dialog> 标签 定义对话框或窗口. <dialog> 标签是 HTML 5 的新标签.目前只有 Chrome 和 Safari 6 支持 <dialog>  ...

  5. 记一次与a标签相遇的小事

    最近做的一个项目,按钮使用的是a标签做的,样子还不错.不过正是这个a标签把我坑死了,有一个场景是点击a标签去调后台服务,为了防止用户频繁点击按钮提交,在去请求后台服务的时候肯定要先把按钮的事件给禁止掉 ...

  6. thinkphp自定义标签库

    thinkphp ~ php中 的类, 的成员变量, 本身是没有类型说明的, 那么我怎么知道它的类型呢? 或初始值呢? 通常在类定义中, 如果能给一个初始值的(对于已知简单类型的),最好给一个初始值, ...

  7. HTML5新增标签

    section标签  <section>标签,定义文档中的节.比如章节.页眉.页脚或文档中的其它部分.一般用于成节的内容,会在文档流中开始一个新的节.它用来表现普通的文档内容或应用区块,通 ...

  8. jquery.tagthis和jquery.autocomplete一起实现标签

    目的 jquery.tagthis:http://www.dangribbin.co/jquery-tag-this/demo/ 使用tagthis控件实现标签的输入提醒功能,每个标签具有id和tex ...

  9. 【初探HTML本相】道之真谛不过自然,html标签脱俗还真

    前言 须弥般若有无空,阴阳道化真虚同:洗尽前恩本非相,还吾面目下九重. 咳咳,其实老夫对佛教文化有点点研究啦,说以我们这里来了一点很有哲理的东西,因为我这里准备干一件很戳的事情,我准备来看看我们的ht ...

随机推荐

  1. 【算法】题目分析:Aggressive Cow (POJ 2456)

    题目信息 作者:不详 链接:http://poj.org/problem?id=2456 来源:PKU JudgeOnline Aggressive cows[1] Time Limit: 1000M ...

  2. PHP is_bool() 函数

    is_bool() 函数用于检测变量是否是布尔型.高佣联盟 www.cgewang.com PHP 版本要求:PHP 4, PHP 5, PHP 7 语法 bool is_bool ( mixed $ ...

  3. PHP strtoupper() 函数

    实例 把所有字符转换为大写: <?php高佣联盟 www.cgewang.comecho strtoupper("Hello WORLD!");?> 定义和用法 str ...

  4. luogu P4294 [WC2008]游览计划

    LINK:游览计划 斯坦纳树例题. 斯坦纳树是这样一类问题:带权无向图上有K个关键点 求出包含这K个点的最小生成树. 也就是说 求最小生成树 但是 并不是整张图 仅限于K个点. 可以发现我们利用克鲁斯 ...

  5. 使用nexus搭建maven私库

    什么是nexus? nexus是一个maven仓库管理器,使用nexus可以快速便捷的搭建自己的maven私有仓库. docker安装nexus 拉取镜像 docker pull sonatype/n ...

  6. Lucas(卢卡斯)定理

    公式 $$C_n^m\%p=C_{n/p}^{m/p}*C_{n\%p}^{m\%p}\%p~~(p为素数)$$ 代码如下 typedef long long ll; ll mod_pow(ll x, ...

  7. OAuth2.0-3客户端授权放到数据库

    授权得客户端信息.授权码信息全都存在数据库 1.建表 官方给了个sql文件:https://github.com/spring-projects/spring-security-oauth/blob/ ...

  8. 自身写Android组合多个布局的经历

    今天不总结课程了,留着有时间补上. 今天的是ExpandListView,就是可以扩展的列表视图. 今天我做了个总结,然后模仿了扣扣的聊天界面,仅仅写了三个页面而已,用到的xml和活动就不下于10个, ...

  9. python5.3二进制文件的读写

    fh=open(r"C:\1.png","rb")#转换成二进制数据data=fh.read()#对二进制数据进行读取 fh1=open(r"C:\2 ...

  10. SSH安全端口

    端口安全指的是尽量避免服务器的远程连接端口被不法分子知道,为此而改变默认服务端口号的操作 如何改变SSH服务端口 修改 /etc/ssh/sshd_config 配置 配置修改后执行命令 servic ...