代码之家  ›  专栏  ›  技术社区  ›  Jimmy

重写此代码:可单击divs

  •  2
  • Jimmy  · 技术社区  · 17 年前

    我想改变这个:

    <a href='foo'> 
        <div> Moo </div>
    </a>
    

    符合标准(内联元素中不应该有块元素)。将javascript连接到DIV只是为了导航,这似乎是一种黑客行为,降低了可访问性。。在本例中,我的要求是在我的固定维度链接上设置两组边框,因此在应用样式后,上述不合规代码可以完美地工作。

    还有,是“ a { display:block; } “规避验证的合法途径?

    5 回复  |  直到 17 年前
        1
  •  14
  •   Zack The Human Kunal    17 年前

    为什么不使用 <span> 而不是 <部门> 设定 显示:块

    另外,回答你的后一个问题:我不相信添加 显示:块;

        2
  •  3
  •   Mr. Shiny and New 安宇    17 年前

    你可能想考虑把 div 外面 a

    <div class="dbl_border_links"><a href="blah">Blah text</a></div>
    

    或者这个:

    <a class="dbl_border_links" href="blah"><span>Blah text</span></a>
    

    将起作用,您可以使用以下内容:

    <style>
      .dbl_border_links, .dbl_border_links>* {
        display: block;
        border: 1px solid;
        padding: 1px;
      }
      .dbl_border_links {
        border-color: red;
      }
      .dbl_border_links > * {
        border-color: blue;
      }
    </style>
    

    div 包含 A. 但这两种方法都有效。

        3
  •  1
  •   Joel Coehoorn    17 年前

    我通常认为 <a > 标签是用于此目的的特殊情况。你应该能够把它应用到任何事情上——它是在超文本的整个观点之后( <tr > 我想到了一个很好的例子)。验证器,但如果我必须通过的话。

    你能用javascript吗 onclick

        4
  •  1
  •   Ola Tuvesson    17 年前

    首先,给出锚显示肯定没有什么错:block;我要说的是,这是人们用CSS做的比较常见的事情之一,完全符合标准。其次,有许多方法可以在HTML元素上实现双边框。首先,请查看“大纲”属性:

    http://webdesign.about.com/od/advancedcss/a/outline_style.htm

    诚然,这只适用于更现代的浏览器,但由于大纲不占用页面的任何空间,因此应该优雅地降级。如果链接的内容是图像,您只需给出<a>一点填充和背景色,以及一个普通边框(另一种颜色),以创建一个双边框的印象。或者给图像一个自己的边框。当然,您也可以按照您最初的想法做一些事情,尽管将HTML以另一种方式嵌套,只需为每个元素指定不同的边框。或者您可以在链接内使用内联元素(如<span>或<em>或其他内容),并将其设置为显示:block;(是的,这也是有效的!)。快乐编码!

        5
  •  0
  •   Esteban Küber    17 年前

    如果我正确理解了您的意图,您应该像前面提到的那样,将div放置在锚之外,并且,为了获得相同的演示,制作锚 width:100%;height:100% . 跨浏览器的差异可能会有所不同。 此外,你可以完全抛开div,然后抛锚 display:block;

    你到底想干什么?