zoukankan      html  css  js  c++  java
  • a链接嵌套无效,嵌套链接最优解决办法

    <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;
         100%; height: 100%;
    }
    具体更多内容可访问原创作者http://www.zhangxinxu.com/wordpress/2017/05/html-area-map/
  • 相关阅读:
    python 递归计算阶乘
    python引用
    python3 函数参数
    名片管理系统V0.0.2(函数实现)
    python 之socket语法及相关
    常见模块(一)
    常见模块(二)
    Python之迭代器、生成器、装饰器和递归
    python 之自定义函数
    python 之SET和collections
  • 原文地址:https://www.cnblogs.com/brainworld/p/6855176.html
Copyright © 2011-2022 走看看