【问题标题】:anchor tag not clickable unless absolute positioned?除非绝对定位,否则锚标记不可点击?
【发布时间】:2016-06-04 08:36:29
【问题描述】:

我有以下 HTML:

@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,400italic,500,700,900);

/* global css */

body {
  font-size: 16px;
  font-family: 'Roboto', sans-serif;
  color: #fff;
  padding: 0;
  margin: 0;
}
.col-md-4 {
  width: 33.33%;
  float: left;
}
.info-boxes {
  display: block;
  position: relative;
  background: #7accc8;
  padding: 2em 0;
  overflow: hidden;
  text-align: center;
  -webkit-transition: all .3s;
  -o-transition: all .3s;
  transition: all .3s;
}
.info-boxes h5 {
  font-size: 30px;
  margin: 0;
  text-transform: uppercase;
  font-weight: 700;
}
.info-boxes p {
  margin: 0.5em 0;
}
.info-boxes h5,
.info-boxes p {
  -webkit-transition: all .3s;
  -o-transition: all .3s;
  transition: all .3s;
  -webkit-transform: translateY(50%);
  -ms-transform: translateY(50%);
  -o-transform: translateY(50%);
  transform: translateY(50%);
}
.info-boxes:hover h5,
.info-boxes:hover p {
  -webkit-transform: translateY(0);
  -ms-transform: translateY(0);
  -o-transform: translateY(0);
  transform: translateY(0);
}
.info-boxes span {
  display: inline-block;
  font-weight: 700;
  position: relative;
  /*	position: absolute;
    	bottom: 0;
    	left: 0;
    	right: 0;
    */
  /*left: 50%;
    	-webkit-transform: translateX(-50%);
    	-ms-transform: translateX(-50%);
    	-o-transform: translateX(-50%);
    	transform: translateX(-50%);*/
  -webkit-transform: translateY(100px);
  -ms-transform: translateY(100px);
  -o-transform: translateY(100px);
  transform: translateY(100px);
  -webkit-transition: all .3s;
  -o-transition: all .3s;
  transition: all .3s;
}
.info-boxes:hover {
  background: #f5989d;
}
.info-boxes:hover span {
  -webkit-transform: translateY(0);
  -ms-transform: translateY(0);
  -o-transform: translateY(0);
  transform: translateY(0);
}
.info-boxes span:before,
.info-boxes span:after {
  content: '';
  position: absolute;
  top: 50%;
  right: 50%;
  width: 100%;
  height: 1px;
  background: #fff;
  /*-webkit-transform: translateY(-50%);
    	-ms-transform: translateY(-50%);
    	-o-transform: translateY(-50%);
    	transform: translateY(-50%);*/
  -webkit-transition: all .3s ease .2s;
  -o-transition: all .3s ease .2s;
  transition: all .3s ease .2s;
  opacity: 0
}
.info-boxes span:after {
  right: initial;
  left: 50%;
}
.info-boxes:hover span:after,
.info-boxes:focus span:after,
.info-boxes:active span:after {
  left: calc(100% + 10px);
  opacity: 1;
}
.info-boxes:hover span:before,
.info-boxes:focus span:before,
.info-boxes:active span:before {
  right: calc(100% + 10px);
  opacity: 1;
}
<a class="info-boxes">
  <h5>2200AED</h5>
  <p>5 Private Sessions / Validity: 2 Months</p>
  <span>Online Booking</span>
</a>

现在为什么 a 不再是锚点了。我不能再点击&lt;a&gt;,为什么?

现在我发现的一个解决方案是将容器更改为 div 标记并在内部有一个 a 并对其应用以下样式:

.info-boxes a {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    top: 0;
    z-index: 99;
}

但这是一个“为什么”的问题,而不是“如何解决这个问题”的问题。

所以我想问的是,在这个给定的例子中,为什么 &lt;a&gt; 标记不像 one ?

【问题讨论】:

    标签: html css


    【解决方案1】:

    一个可能的答案,因为您没有指定是要转到另一个页面还是仅在单击时执行某些操作。

    您应该改用button 标签。为什么?好吧,您应该通过指定href 属性来使用锚链接&lt;a&gt; 如果它转到页面。如果它是可点击的,它必须做一些事情但不会转到另一个页面,你应该使用 button 标记。

    【讨论】:

      【解决方案2】:

      您需要添加href,否则a 将无法点击

      如果您不使用href,则它仅被视为占位符超链接,请在W3C 上查看更多信息

      @import url(https://fonts.googleapis.com/css?family=Roboto:400,300,400italic,500,700,900);
      
      /* global css */
      
      body {
        font-size: 16px;
        font-family: 'Roboto', sans-serif;
        color: #fff;
        padding: 0;
        margin: 0;
      }
      .col-md-4 {
        width: 33.33%;
        float: left;
      }
      .info-boxes {
        display: block;
        position: relative;
        background: #7accc8;
        padding: 2em 0;
        overflow: hidden;
        text-align: center;
        -webkit-transition: all .3s;
        -o-transition: all .3s;
        transition: all .3s;
      }
      .info-boxes h5 {
        font-size: 30px;
        margin: 0;
        text-transform: uppercase;
        font-weight: 700;
      }
      .info-boxes p {
        margin: 0.5em 0;
      }
      .info-boxes h5,
      .info-boxes p {
        -webkit-transition: all .3s;
        -o-transition: all .3s;
        transition: all .3s;
        -webkit-transform: translateY(50%);
        -ms-transform: translateY(50%);
        -o-transform: translateY(50%);
        transform: translateY(50%);
      }
      .info-boxes:hover h5,
      .info-boxes:hover p {
        -webkit-transform: translateY(0);
        -ms-transform: translateY(0);
        -o-transform: translateY(0);
        transform: translateY(0);
      }
      .info-boxes span {
        display: inline-block;
        font-weight: 700;
        position: relative;
        /*	position: absolute;
          	bottom: 0;
          	left: 0;
          	right: 0;
          */
        /*left: 50%;
          	-webkit-transform: translateX(-50%);
          	-ms-transform: translateX(-50%);
          	-o-transform: translateX(-50%);
          	transform: translateX(-50%);*/
        -webkit-transform: translateY(100px);
        -ms-transform: translateY(100px);
        -o-transform: translateY(100px);
        transform: translateY(100px);
        -webkit-transition: all .3s;
        -o-transition: all .3s;
        transition: all .3s;
      }
      .info-boxes:hover {
        background: #f5989d;
      }
      .info-boxes:hover span {
        -webkit-transform: translateY(0);
        -ms-transform: translateY(0);
        -o-transform: translateY(0);
        transform: translateY(0);
      }
      .info-boxes span:before,
      .info-boxes span:after {
        content: '';
        position: absolute;
        top: 50%;
        right: 50%;
        width: 100%;
        height: 1px;
        background: #fff;
        /*-webkit-transform: translateY(-50%);
          	-ms-transform: translateY(-50%);
          	-o-transform: translateY(-50%);
          	transform: translateY(-50%);*/
        -webkit-transition: all .3s ease .2s;
        -o-transition: all .3s ease .2s;
        transition: all .3s ease .2s;
        opacity: 0
      }
      .info-boxes span:after {
        right: initial;
        left: 50%;
      }
      .info-boxes:hover span:after,
      .info-boxes:focus span:after,
      .info-boxes:active span:after {
        left: calc(100% + 10px);
        opacity: 1;
      }
      .info-boxes:hover span:before,
      .info-boxes:focus span:before,
      .info-boxes:active span:before {
        right: calc(100% + 10px);
        opacity: 1;
      }
      <a href="#" class="info-boxes">
        <h5>2200AED</h5>
        <p>5 Private Sessions / Validity: 2 Months</p>
        <span>Online Booking</span>
      </a>

      【讨论】:

        【解决方案3】:

        a 可能没有href。不知道原代码是不是也这样,不过好像可以解决问题。

        当我添加你的代码时,这显然解决了它,它对我不起作用,所以我认为你在更改 HTML 时添加了一个 href。

        【讨论】:

          猜你喜欢
          • 2011-10-18
          • 2020-05-21
          • 1970-01-01
          • 2020-06-08
          • 2012-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-07
          相关资源
          最近更新 更多