当一个div中包含多个链接时,某些href链接无法正常工作

前端开发 2026-07-12

我越来越困惑的是,为什么中间的 <a href> 链接不起作用(Tahiti和 Hawaii)。h2链接和图片链接都能工作,但目标链接却不行。把鼠标悬停在每个链接上,浏览器左下角的URL弹窗会显示,但中间两个无法跳转。

<div class="card">
  <div class="dark">
    <a href="https://pedalers.travel/pacific-islands-bicycle-tours-hawaii-tahiti-bora-bora.htm">
      <header><h2 class="title3">South Pacific Bike Tours</h2></header>
    </a>
    <a href="https://pedalers.travel/bicycling-tahiti-french-polynesia.htm">Tahiti</a>,
    <a href="https://pedalers.travel/hawaii-bike-tours-big-island-dreams-cycling-tours.htm">Hawaii</a>
  </div>
  <a href="https://pedalers.travel/pacific-islands-bicycle-tours-hawaii-tahiti-bora-bora.htm"><img src="img/pedalers-homepage/cycling-on-raiatea-island.jpg" alt="cycling in French Polynesia"></a>
</div>

我尝试了各种变体:图片去掉 <a href>,把图片移到顶部。也尝试过不使用 <header>,并把 <a href> 链接放在H2里面。

<div class="card">
  <div class="dark">
    <a href="https://pedalers.travel/pacific-islands-bicycle-tours-hawaii-tahiti-bora-bora.htm">
      <header><h2 class="title3">South Pacific Bike Tours</h2></header>
    </a>
    <a href="https://pedalers.travel/bicycling-tahiti-french-polynesia.htm">Tahiti</a>,
    <a href="https://pedalers.travel/hawaii-bike-tours-big-island-dreams-cycling-tours.htm">Hawaii</a>
  </div>
  <img src="img/pedalers-homepage/cycling-on-raiatea-island.jpg" alt="cycling in French Polynesia">
</div>

<div class="card">
  <img src="img/pedalers-homepage/cycling-on-raiatea-island.jpg" alt="cycling in French Polynesia">
  <div class="dark">
    <a href="https://pedalers.travel/pacific-islands-bicycle-tours-hawaii-tahiti-bora-bora.htm">
      <header><h2 class="title3">South Pacific Bike Tours</h2></header>
    </a>
    <a href="https://pedalers.travel/bicycling-tahiti-french-polynesia.htm">Tahiti</a>,
    <a href="https://pedalers.travel/hawaii-bike-tours-big-island-dreams-cycling-tours.htm">Hawaii</a>
  </div>
 </div>

下面是应用于这些卡片的CSS,cardcontainer被分配给父级div。

.cardcontainer {
  display: flex;
  flex-flow: row wrap;
  justify-content: center;
}

.card {
  flex-grow: 0;
  flex-shrink: 0;
  height: 50vh;
  max-height: 325px;
  color: #fff;
  font-weight: 600;
  line-height: 1.2;
  font-size: 1.6rem;
  text-shadow: 1px 1px 1px rgb(0, 0, 0), 0 0 7px rgba(60, 48, 40,.85), 0 0 15px rgba(60, 48, 40,.55);
  overflow: hidden;
  cursor: pointer;
  border-radius: 50px 15px;
  box-shadow: 2px 2px 10px rgba(60,48,40,0.5);
}

.card .dark {
  position: absolute;
  top: 0;
  width: 100%;
  padding: 20px 20px 25px;
  z-index: 1;
  background: linear-gradient(180deg, rgba(33, 33, 33, 0.5) 0%, rgba(0, 0, 0, 0) 100%);
  text-align: center;
}

a {
  text-decoration: none;
}

这很可能是一些显而易见的东西,我自己看不到。

解决方案

并不是HTML或 CSS的问题,但看来是JS的问题。

在我们JS文件的事件委托部分,有一个 e.preventDefault(); 与其他内容没有关联。移除它解决了问题。

但这让我百思不得其解,为什么它只影响每个卡片中四个链接中的其中两个,而不是全部链接。当前在事件委托部分没有对这些卡片的链接进行目标设定。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章