【问题标题】:A tags have height but cannot be clicked一个标签有高度但不能被点击
【发布时间】:2014-02-15 00:25:24
【问题描述】:

我有一个问题,我有一个标签包裹的 li 标签,它们都有一个高度,但链接不起作用。我对为什么感到困惑,但这是一个小提琴和我的代码。

<div id="homepageContentLeft">
        <ul>
            <a href="register.php"><li><span>Register Here</span></li></a>
            <a href="map.php"><li><span>Race Map</span></li></a>
            <a href="donate.php"><li><span>Donate</span></li></a>
            <a class="last" href="http://cff.org" target="_blank"><li class="last" ><img src="pictures/cfflogo1.png" alt="CFF" /></li></a>
        </ul>
    </div>

    <div id="slidesContainer">
        <div href="register.php" id="freeTShirt">Free T-shirt W/ Registration.</div>

        <div id="slides">
            <img src="pictures/pic1.jpg" alt="Race Beginning"/>
            <img src="pictures/pic2.jpg" alt="Race Beginning"/>
            <img src="pictures/pic3.jpg" alt="Race Beginning"/>
            <img src="pictures/pic4.jpg" alt="Race Beginning"/>
        </div>
    </div>

这是我的scss

#homepageContent {
    width: $pageWidth;
    margin: 1% auto;
    margin-bottom: 0;
    overflow: hidden;

    #homepageContentLeft, #slides {
        float: left;
    }

    #homepageContentLeft {
        width: 30%;
        text-align: center;

        ul {
            list-style: none;
            margin-top: 0px;
            margin-right: 15px;
            margin-left: 0px;
            padding-left: 0px;
            margin-bottom: 0px;

            li:first-of-type {
                margin-top: 0px;
                //background-image: -webkit-linear-gradient(top, #A21945, #7A0026);
            }

            a {
                overflow: hidden;
                cursor: pointer;
                display: block;
                height: 85px;
                margin-bottom: 17px;


                li {
                    height: 85px;
                    vertical-align: middle;
                    font-size: 1.6em;
                    background-color: #0099ff;
                    color: white;
                    border-radius: 10px;
                    cursor: pointer;

                    span {
                        display: inline-block;
                        vertical-align: middle;
                        line-height: 85px;
                        width: 100%;
                    }

                    img {
                        display: block;
                        max-width: 100%;
                        height: 90%;
                        width: auto/9;
                        margin: 0 auto;
                    }
                }
            }


            li:hover {
                //background-image: -webkit-linear-gradient(top, #666666, #3d3d3d);
            }
            li.last, a.last {
                margin-bottom: 0px;
            }
        }
    }

http://jsfiddle.net/keS96/

【问题讨论】:

  • 您的 HTML 无效,您必须将 &lt;a&gt; 放在 &lt;li&gt; 内,而不是相反

标签: html css sass


【解决方案1】:

快速浏览了一下,发现您有很多可疑/错误的标记。

  1. 将链接放在 li 中,而不是将 li 放在链接中。
<ul>
  <li>
    <a href="#" title="Link title" class="yourClass">Linktext</a>
  </li>
</ul>
  1. 通过 CSS 指定样式,而不是在标记中指定样式。标记用于标记,样式表用于样式。

回答您的问题: 您将 float: left; 分配给 homepageContentLeft 元素。 slidesContainer 没有浮动属性,因此它的宽度“覆盖”了导航。为它分配一个浮动元素,您将解决您的问题。

【讨论】:

  • 我从不在我的标记中添加样式。这是因为我从 safari web 检查中复制并粘贴了我的 html,因为我的 html 是从 php 脚本生成的,我只想发布 html,而不是因为包含我的整个脚本而使其复杂化。在 safari web 检查中,我正在更改 css,以便看到它的效果。
【解决方案2】:

您的问题与列表项或链接的高度无关。问题是#slidesContainer 正在渲染所有内容并阻止点击事件。当您从 DOM 中手动删除该节点时,链接会按预期工作。

【讨论】:

  • 感谢您,我最近将该容器添加到我的图像滑块中,完全忘记为其添加适当的样式。
  • 还值得一提的是,与您收到的其他答案相反,在 HTML5 中将块级元素包装在 a 标签中是有效的。在许多情况下,它甚至更可取,因为为触摸设备创建了更大的目标区域。 html5doctor.com/block-level-links-in-html-5
  • 是的,我完全同意。这就是为什么我用我的 a 标签包装我的块级元素。
【解决方案3】:

您的“a”标签需要在您的“li”标签内。

【讨论】:

    猜你喜欢
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多