前端开发:a标签嵌套解决方案

开发 开发工具
在实际网页布局之中,我们有时候需要一整块点击区域中间还要有部分按钮点击,也就是需要a标签嵌套a标签,但是我们会发现,这种嵌套,浏览器会直接错误解析,那么针对这种情况如何解决呢?

a标签里面再嵌套其他元素,你肯定会遇到的。

前端开发

问题

在实际网页布局之中,我们有时候需要一整块点击区域中间还要有部分按钮点击,也就是需要a标签嵌套a标签,如下:

  1. <!-- a标签进行嵌套的时候 --><a href="#haorooms">outerA    <a href="#haoroomsinner">innerA</a></a> 

但是我们会发现,这种嵌套,浏览器会直接错误解析,解析结果如下:

  1. <!-- 而浏览器则会解析成 -- > 
  2. <a href="#haorooms">outerA</a> 
  3. <a href="#haoroomsinner">innerA</a> 

那么针对这种情况如何解决呢?

方案一:使用object标签进行嵌套 

例如我么如下写,就不会错误解析了!

  1. <a href="#haorooms"> 
  2.     outerA    <object><a href="#haoroomsinner">innerA</a></object></a> 

这种写法的典型应用最多的是列表整个需要点击,列表里面有电话号码需要单独点击拨打!

  1. <a class="haorooms_list" href="跳转页面"> 
  2.     列表内容    <object><a href="tel:694434565">拨打电话</a></object></a> 

方案二:使用定位方式

这种方式是迫不得已的方式,思路就是我们不用嵌套。直接代码如下书写:

  1. <a href="#haorooms">outerA</a><a href="#haoroomsinner">innerA</a> 

外层的haorooms通过设置display:inline-block,以及绝对定位,将其放在里层a标签的位置。然后通过调整里层a标签及外层a的z-index大小,使得鼠标能正确选中a标签;这种方法的核心思想就是通过定位来模拟实现我们想要达到的效果!

方案三:使用 HTML的 < area>< map>标签来实现

记得在学校学校网页制作的时候,用的是dreamweaver,dreamweaver中可以使用图片热区来实现图片的点击效果。没错,我们可以使用热区来实现a标签的嵌套效果啊!

area标签很久没有使用了,普及一下基础知识:

area可以指定shape及coords。

  • 如果 shape 属性设置为 "rect",则该值规定矩形左上角和右下角的坐标。(x1,y1,x2,y2)
  • 如果 shape 属性设置为 "circ",则该值规定圆心的坐标和半径。(x,y,radius)
  • 如果 shape 属性设置为 "poly",则该值规定多边形各顶点的值。如果***个坐标和***一个坐标不一致,那么为了关闭多边形,浏览器必须添加***一对坐标。(x1,y1,x2,y2,..,xn,yn)

area和map要配合使用,可以在图片上面指定部分热区,也可以在列表中指定热区。

假如我们运用area和map在列表中a标签内部指定热区,就可以实现类似我们上面a标签嵌套的效果了!

还是上面的例子,我们可以如下书写:

  1. <a href="#haorooms"> 
  2.        outerA          <map> 
  3.            <area shape="rect" coords="0,0,200,21" href="haoroomsinner" > 
  4.        </map> 
  5.    </a> 

方案四:使用span等标签加js事件来代替a标签 

当然我们也可以用span,标签等替代a标签,只不过要多写一些js跳转代码了,通过js来实现a标签所能实现的效果!

 【本文为51CTO专栏作者“谢军”的原创稿件,转载可通过作者微信公众号(jingfeng18)获取联系】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2023-09-11 07:11:04

CSSNesting

2018-09-14 16:20:37

2020-03-23 14:35:28

前端架构应用程序

2013-04-25 14:26:54

GridView

2020-09-04 13:50:35

前端异常监控代码

2021-04-20 20:03:28

Systemjs模块化前端

2018-12-03 11:59:42

Inventec解决方案

2018-12-03 12:13:21

Mellanox解决方案

2018-12-03 12:26:30

YADRO解决方案

2010-09-10 11:15:34

DIV嵌套

2020-09-17 13:33:39

开发

2018-12-03 12:17:27

Semptian解决方案

2012-05-27 16:21:31

IDC华为

2019-10-25 22:36:02

谷歌Android开发者

2016-03-13 17:58:57

2020-10-14 21:38:32

物联网智能停车IOT

2020-12-09 18:22:00

微前端微服务前端

2020-12-09 09:30:57

前端开发技术

2010-09-10 12:59:33

DIV嵌套CSS

2016-03-13 17:35:18

点赞
收藏

51CTO技术栈公众号