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

HTML:如何在另一个<a>下面创建<a>?

  •  0
  • shakedzy  · 技术社区  · 8 年前

    在我的页面上有一个 <div> 这是一个链接 address1 . 在那个Div的角落里有一个下拉菜单,其中有一个指向 address2 . 由于某种原因,第二个链接取消了第一个链接,因此无法单击Link1。

    example

    在附加的图片-Link1文本中,图片和蓝色部分都应该链接到 地址1 ,只有当我将鼠标悬停在箭头上时出现的Link2应该指向 地址2 . 有什么办法解决这个问题吗?

    HTML格式:

    <html><head><link rel="stylesheet" href="style.css"></head><body><center>
        <a href="address1">
        <div class="card">
    <div class="dropdown"><img src="img/dropdown.png" class="dropdownarrow"><div class="dropdown-content">
    <a class="dropdown-content-item" href="address2">Link2</a>
    </div></div><img src="img/smiley.png" class="cardimg">
          <div class="container" align="center">
            Link1
          </div>
        </div></a>
    </center></body></html>
    

    CSS:

    .card {
      padding-top: 20px;
      box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
      background: white;
      transition: 0.3s;
      width: 20%;
      border-radius: 5px;
      height: 90%;
      display: inline-block;
      margin: 20px;
      position: relative;
    }
    
    .card:hover {
      box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
      background-color: #d3f3ff
    }
    
    .cardimg { 
      border-radius: 5px 5px 0 0;
      max-width: 50%;
      height: 100%;
      max-height: 100px;
      padding-bottom: 5px;
    }
    
    .dropdown {
      position: absolute; 
      right: 0px; 
      top: 0px;
    }
    
    .dropdown:hover .dropdown-content {
      display: block;
    }
    
    .dropdown:hover .dropdownarrow  {
      background-color: #96ffcc;
    }
    
    .dropdown-content {
        display: none;
        position: absolute;
        background-color: #f1f1f1;
        min-width: 160px;
        box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
        z-index: 1;
    }
    
    .dropdown-content-item {
        color: black;
        padding: 12px 16px;
        text-decoration: none;
        display: block;
    }
    
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    
    .container {
      padding-top: 5px;
      padding-bottom: 5px;
      background: #eeeeee;
      height: 100%;
    }
    
    4 回复  |  直到 8 年前
        1
  •  1
  •   SirPilan    8 年前

    你不能放一个 a 在一个 在里面 html markup (看看允许的父母)。

    .card {
      /* padding-top: 20px; */
      /* REMOVED*/
      box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
      background: white;
      transition: 0.3s;
      width: 20%;
      border-radius: 5px;
      height: 90%;
      display: inline-block;
      margin: 20px;
      position: relative;
    }
    
    .card:hover {
      box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2);
      background-color: #d3f3ff
    }
    
    .cardimg {
      border-radius: 5px 5px 0 0;
      max-width: 50%;
      height: 100%;
      max-height: 100px;
      padding-bottom: 5px;
      position: relative;
    }
    
    .cardbg {
      position: absolute;
      width: 100%;
      height: 100%;
      top: 0px;
      left: 0px;
    }
    
    .dropdown {
      position: absolute;
      right: 0px;
      top: 0px;
      z-index: 1;
    }
    
    .dropdown:hover .dropdown-content {
      display: block;
    }
    
    .dropdown:hover .dropdownarrow {
      background-color: #96ffcc;
    }
    
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2);
      z-index: 1;
    }
    
    .dropdown-content-item {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    
    .container {
      padding-top: 5px;
      padding-bottom: 5px;
      background: #eeeeee;
      height: 100%;
      position: relative;
    }
    
    
    /* ADDED */
    
    .card-link {
      padding-top: 20px;
      display: block;
    }
    <center>
      <div class="card">
        <div class="dropdown"><img src="https://via.placeholder.com/30x30" class="dropdownarrow">
          <div class="dropdown-content">
            <a class="dropdown-content-item" href="address2">Link2</a>
          </div>
        </div>
        <!-- moved a below absolute container -->
        <a class="card-link" href="address1">
          <img src="https://loremflickr.com/300/100" class="cardimg">
          <div class="container" align="center">
            Link1
          </div>
        </a>
      </div>
    </center>
        2
  •  0
  •   shakedzy    8 年前

    好吧,我找到了一个可行的解决方法:在 div ,并更改了 <a> 标签我用了很多 position 在CSS和 z-index 以确保菜单在最上面,但最终一切正常代码如下:

    HTML格式:

    <div class="card">
    <div class="dropdown"><img src="img/dropdown.png" class="dropdownarrow"><div class="dropdown-content">
    <a class="dropdown-content-item" href="address2">Link2</a>
    </div></div>
          <a href="address1"><img src="img/blank.png" class="cardbg"><img src="img/smiley.png" class="cardimg">
          <div class="container" align="center">
            Link1 
          </div></a>
        </div>
    

    CSS:

    .card {
      padding-top: 20px;
      box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
      background: white;
      transition: 0.3s;
      width: 20%;
      border-radius: 5px;
      height: 90%;
      display: inline-block;
      margin: 20px;
      position: relative;
    }
    
    .card:hover {
      box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
      background-color: #d3f3ff
    }
    
    .cardimg { 
      border-radius: 5px 5px 0 0;
      max-width: 50%;
      height: 100%;
      max-height: 100px;
      padding-bottom: 5px;
      position: relative;
    }
    
    .cardbg {
      position: absolute; 
      width: 100%; 
      height: 100%; 
      top: 0px; 
      left: 0px;
    }
    
    .dropdown {
      position: absolute; 
      right: 0px; 
      top: 0px;
      z-index: 1;
    }
    
    .dropdown:hover .dropdown-content {
      display: block;
    }
    
    .dropdown:hover .dropdownarrow  {
      background-color: #96ffcc;
    }
    
    .dropdown-content {
        display: none;
        position: absolute;
        background-color: #f1f1f1;
        min-width: 160px;
        box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
        z-index: 1;
    }
    
    .dropdown-content-item {
        color: black;
        padding: 12px 16px;
        text-decoration: none;
        display: block;
    }
    
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    
    .container {
      padding-top: 5px;
      padding-bottom: 5px;
      background: #eeeeee;
      height: 100%;
      position: relative;
    }
    
        3
  •  -1
  •   sanoj lawrence    8 年前

    试试这个

    .card {
      padding-top: 20px;
      box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
      background: white;
      transition: 0.3s;
      width: 20%;
      border-radius: 5px;
      height: 90%;
      display: inline-block;
      margin: 20px;
      position: relative;
    }
    
    .card:hover {
      box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
      background-color: #d3f3ff
    }
    
    .cardimg { 
      border-radius: 5px 5px 0 0;
      max-width: 50%;
      height: 100%;
      max-height: 100px;
      padding-bottom: 5px;
    }
    
    .dropdown {
      position: absolute; 
      right: 0px; 
      top: 0px;
    }
    
    .dropdown:hover .dropdown-content {
      display: block;
    }
    
    .dropdown:hover .dropdownarrow  {
      background-color: #96ffcc;
    }
    
    .dropdown-content {
        display: none;
        position: absolute;
        background-color: #f1f1f1;
        min-width: 160px;
        box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
        z-index: 1;
    }
    
    .dropdown-content-item {
        color: black;
        padding: 12px 16px;
        text-decoration: none;
        display: block;
    }
    
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    
    .container {
      padding-top: 5px;
      padding-bottom: 5px;
      background: #eeeeee;
      height: 100%;
    }
    <html><head><link rel="stylesheet" href="style.css"></head><body><center>
        
        <div class="card">
    <div class="dropdown"><img src="img/dropdown.png" class="dropdownarrow"><div class="dropdown-content">
    <a class="dropdown-content-item" href="address2">Link2</a>
    </div></div><img src="img/smiley.png" class="cardimg">
          <div class="container" align="center">
           <a href="address1"> Link1</a>
          </div>
        </div>
    </center></body></html>
        4
  •  -1
  •   Christopher Supertramp    8 年前

    如果图像正确,并且链接1应为灰色底部,则此操作有效:

    .card {
      padding-top: 20px;
      box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
      background: white;
      transition: 0.3s;
      width: 20%;
      border-radius: 5px;
      height: 90%;
      display: inline-block;
      margin: 20px;
      position: relative;
    }
    
    .card:hover {
      box-shadow: 0 8px 16px 0 rgba(0,0,0,0.2);
      background-color: #d3f3ff
    }
    
    .cardimg { 
      border-radius: 5px 5px 0 0;
      max-width: 50%;
      height: 100%;
      max-height: 100px;
      padding-bottom: 5px;
    }
    
    .dropdown {
      position: absolute; 
      right: 0px; 
      top: 0px;
    }
    
    .dropdown:hover .dropdown-content {
      display: block;
    }
    
    .dropdown:hover .dropdownarrow  {
      background-color: #96ffcc;
    }
    
    .dropdown-content {
        display: none;
        position: absolute;
        background-color: #f1f1f1;
        min-width: 160px;
        box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
        z-index: 1;
    }
    
    .dropdown-content-item {
        color: black;
        padding: 12px 16px;
        text-decoration: none;
        display: block;
    }
    
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    
    .container {
      padding-top: 5px;
      padding-bottom: 5px;
      background: #eeeeee;
      height: 100%;
    }
    
    .card a {
       text-decoration: none;
       color:black;
    }
      <div class="card">
          <div class="dropdown">
          <img src="img/dropdown.png" class="dropdownarrow"><div class="dropdown-content">
          <a class="dropdown-content-item" href="address2">Link2</a>
          </div>
        </div><img src="img/smiley.png" class="cardimg">
        <a href="address1">
          <div class="container" align="center">
            Link1
          </div>
          </a>
      </div>