前端页面a标签嵌套a标签效果的两种解决方案

摘要:
然而,众所周知,标记是一个内联元素。如果标记是嵌套的,浏览器将解析为:1˂!这里介绍了两种解决方案:1。使用object标记嵌套outerAinnerA,这样页面将被解析为:在内部a标记中添加一层对象标记嵌套,这可以解决嵌入标记的问题。然而,IE8及其以下版本会有问题,因为IE8不支持对象标记。它会将对象解析为一个标记,并且不会显示标记的内容。下面是第二个方案。如果有更好的解决方案,欢迎大家一起交流学习。

这是由工作中的一个小改动需求得到的这个解决方案的;那个需求是这样的,如图:

前端页面a标签嵌套a标签效果的两种解决方案第1张

需求原来是球队名字没有点击功能的,而蓝色方框两队之间的比赛点击的时候会跳转到比赛文字直播页面。现在需要要求点击球队名字要跳转到球队资料库页面。

这样就会产生了a标签的嵌套。

但是总所周知a标签是内联元素(inline element),如果嵌套a标签的话浏览器则会解析成:

1 <!-- a标签进行嵌套的时候 -->
2 <a href="#outer">outerA
3     <a href="#inner">innerA</a>
4 </a>
5 
6 <!-- 而浏览器则会解析成 -- >
7 <a href="http://t.zoukankan.com/leungUwah-p-6234832.html#outer">outerA</a>
8 <a href="http://t.zoukankan.com/leungUwah-p-6234832.html#inner">innerA</a>

前端页面a标签嵌套a标签效果的两种解决方案第2张

这样的话就不符合需求了。

这里介绍的解决方案有两种:

1.使用object标签进行嵌套

<a href="#outer">
    outerA
    <object><a href="#inner">innerA</a></object>
</a>

这样页面就会解析成:

前端页面a标签嵌套a标签效果的两种解决方案第3张

这样在内层a标签加一层object标签嵌套,可以解决了a标签嵌套的问题了。这个办法在火狐和谷歌、IE9及以上是没问题的。但是IE8及以下就会有问题,因为IE8不支持object标签,它会将object解析成一个对象a标签的内容显示不出来。所以就有了下面的第二种方案。

2.将外层a标签改为行内块级元素即display:inline-block;设置height/width并设置为绝对定位将其放在里层a标签的位置,通过调整里层a标签及外层a的z-index大小,使得鼠标能正确选中a标签;

由于产品要求兼容到IE8,所以公司目前使用的是这种方案:

前端页面a标签嵌套a标签效果的两种解决方案第4张

前端页面a标签嵌套a标签效果的两种解决方案第5张

这样通过改变外层a标签的display并调整position及z-index也可以达到a标签嵌套的效果,注意这里说的是效果而不是具体的解析就是嵌套的。

更多情况下推荐第一种方式,这样浏览器解析的会更好。

如果有更好的解决方案,欢迎大家一起交流学习。谢谢~

免责声明:文章转载自《前端页面a标签嵌套a标签效果的两种解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#远程调用技术WebService修炼手册C#速成之二(Quick C#)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

手把手图文教程让你C#开发的winform程序打包发布应用和卸载程序

1:新建安装部署项目 打开VS,点击新建项目,选择:其他项目类型->安装与部署->安装向导(安装项目也一样),然后点击确定.(详细见下图) 此主题相关图片如下: 2:安装向导关闭后打开安装向导,点击下一步,或者直接点击完成. 3:开始制作 安装向导完成后即可进入项目文件夹: 双击"应用程序文件夹"在右边的空白处右击,选择添加->文件,将你...

Visual Studio 2010单元测试(2)--运行测试并查看代码覆盖率

Visual Studio 2010 单元测试--运行测试并查看代码覆盖率 运行测试并查看代码覆盖率对程序集中的代码运行测试时,可以通过收集代码覆盖率数据来查看正在测试的项目代码部分。 运行测试并查看代码覆盖率请注意“解决方案资源管理器”中的解决方案的名称。假定解决方案的名称为 CUnitTest。 此解决方案包含测试代码。1)在“解决方案资源管理器”的“...

win10 .net3.5的问题及解决方案

近日有网友反映在windows10_64位系统电脑上安装Net framework3.5,操作时总失败,怎么办呢?小编下面就介绍win10 64位系统无法安装Net framework3.5的两种解决方案吧 在Windows10中,当我们安装某些软件的时候会提示“你的电脑上的应用需要使用以下Windows功能:.NET Framework 3.5(包括....

libevent 和 libev 提高网络应用性能

构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。有许多解决方 案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力。在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法。libev 和 libevent 都可以在高...

sql server 2008 r2 "远程过程调用失败"解决方案

 sql server 2008 r2 "远程过程调用失败"解决方案     不少人会遇到sql server 2008 r2 "远程过程调用失败"问题,这个主要是因为同时安装了sql server 2008 r2 和visual studio 2012,产生了冲突,只要删除Microsoft SQL Server 2012Local DB就行了。  ...

1-4 Sass的基本特性-基础

[Sass]声明变量 定义变量的语法: 在有些编程语言中(如,JavaScript)声明变量都是使用关键词“var”开头,但是在 Sass 不使用这个关键词,而是使用大家都喜欢的美元符号“$”开头。我想用一张图来解释,我一直坚信,一图胜千言万语: 上图非常清楚告诉了大家,Sass 的变量包括三个部分: 声明变量的符号“$” 变量名称 赋予变量的值...