a链接嵌套无效,嵌套链接最优解决办法
2024-08-25 19:28:45
<a>
不支持嵌套。例如:
<a href="#1">11111111111<a href="#2">22222222222</a></a>
浏览器会将其解析为相邻兄弟关系,而不是父子关系。
所以,如果我们有链接嵌套的需求,就可以试试使用<area>
元素。
对于传统嵌套链接一般方法有:
1.改变视觉DOM结构和顺序,使链接内容变成相邻关系,再通过CSS重新布局定位。
2.使用JS,点击目标区域preventDefault
阻止默认事件,然后再location.href
跳转之类
实际上,还有一种更好的做法,就是<a>
元素中嵌套<area>
元素,可以保证DOM结构符合视觉呈现,又无需JS辅助。
eg.
<a href="......" class="book-layout" target="_blank">
<img src="book.jpg" class="book-cover" alt="area" usemap="#bookCover">
<map id="bookCover" name="bookCover">
<area shape="rect" coords="0,0,200,21" href="/book/1003477570" alt="area" target="_blank">
</map>
</a>
通过<a>元素中嵌套<map>和<area>对于图片类的链接可完美使用,
如果是文字类的链接由于考虑到Firefox浏览器不支持(Firefox的<area>
元素默认display:none
,且无法重置,同时ie8及以下不支持,
可以使用透明图片覆盖 然后使用<area>。
如果无需考虑firefox等兼容性,可直接使用 position:absolute实现,使用<area>
元素覆盖的方法还有一些局限:无法使用键盘Tab索引访问,如果没有外面的<a>
元素是可以的,有了之后,这种取巧的做法就不行了
<h4 class="book-title">
<area class="area" href="....." target="_blank">
area
</h4>
.book-title {
position:relative;
}
.book-title > .area {
position: absolute;
left: 0; top: 0;
width: 100%; height: 100%;
}
具体更多内容可访问原创作者http://www.zhangxinxu.com/wordpress/2017/05/html-area-map/
最新文章
- windows下使用pip安装python的第三方lxml库
- IE8下调用Active控件
- 第一课 python的几种环境配置
- YOLO: Real-Time Object Detection 安装和测试
- Android之activity中新建控件
- Python学习日记
- Loadrunner基础:Loadrunner Controller基本概念和使用
- 树上的DP
- 分享一个圆角自定义的漂亮AlertDialog
- -_-#【video】
- JUnit使用Eclipse建立Test Suite - 就是爱Java
- WINFORM中几句程序获取整个屏幕的图片及当前窗口的图片快照
- 微信小程序开发基础知识总结
- [洛谷P3383][模板]线性筛素数-欧拉筛法
- Windows -- cmd命令: netstat 和 arp
- JVM垃圾回收器
- 617. Merge Two Binary Trees
- SaltStack 和 Ansible 的简单比较
- 部署基于Maven的war文件到Tomcat
- 添加mysamba
热门文章
- HttpServletResponse response详解
- [spring]xml配置文件中bean属性的两种写法(p:configLocation <;=>; <;property name=";configLocation";/>;)
- Django框架数据库模型
- sqlserver存储过程杀掉数据库中死锁
- 【原创】Centos 7利用软件Raid搭建ISCSI过程
- 搞懂分布式技术11:分布式session解决方案与一致性hash
- poj-3046-dp
- nyi63——树
- 利用PXE引导安装centos7
- CF 913 A