【问题标题】:Centring drop-down content?居中下拉内容?
【发布时间】:2020-05-26 12:42:48
【问题描述】:

如何在以下代码中将下拉元素与它来自的主标题居中?我已经尝试过 margin: auto 和 text-align: center 但似乎无法正常工作,下面是我能得到的最接近我想要的方式,但它向左对齐太多了。我在下面包含了一个代码笔:

CSS:

.square-link
{
    z-index: 80;
    text-align: center;
    display: flex;
    flex-wrap: wrap;
    position: relative;
  align-items:flex-start;
}

.square-link a
{
    border: 2px solid #373737;
    border-radius: 5px 5px 5px 5px !important;
    color: #373737;
    background-color: transparent;
    font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
    text-align: center;
    padding: 6px;
    padding-right: 2vw;
    padding-left: 2vw;
    margin-right: 1vw;
    margin-bottom: 3%;
}

.square-link a:hover, .square-link a.active
{
    background-color: #373737;
    color: #ffffff;
    transition: 0.2s
}

.dropbtn {
    border: 2px solid #373737;
    border-radius: 5px 5px 5px 5px !important;
    color: #373737;
    background-color: transparent;
    font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
    text-align: center;
    padding: 6px;
    padding-right: 2vw;
    padding-left: 2vw;
    margin-right: 1vw;
  cursor: pointer;
  overflow: hidden;
  transition: 0.2s;
}

.dropbtn-active {
    border: 2px solid #373737;
    border-radius: 5px 5px 5px 5px !important;
    color: #ffffff !important;
    background-color: #373737;
    font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
    text-align: center;
    padding: 6px;
    padding-right: 2vw;
    padding-left: 2vw;
    margin-right: 1vw;
  cursor: pointer;
  overflow: hidden;
  transition: 0.2s;
}

.dropdown {
  position: relative;
  display: block;
  z-index: 75 !important;
}

.dropdown-content {
  display: none;
  position: relative;
  background-color: #f9f9f9;
  z-index: 100 !important;
  max-width: 100%;
  margin-right: -4vw;
  margin-left: -4vw;
}

.dropdown-content a {
  color: black !important;
  text-decoration: none;
  margin-bottom: 0px;
  display: block;
  z-index: 75 !important;
  border: none;
 margin-right: 0px;
 border-bottom: solid 1px #b6b6b6;
border-radius: 0px !important;
}

.dropdown-content a:hover {background-color: #d1d1d1;}

.dropdown:hover .dropdown-content {
  display: block;
}

.dropdown:hover .dropbtn {
  color: #ffffff;
  background-color: #373737;
  transition: 0.2s;
}

.caret-down
{
    color: #373737;
}

HTML:

<link rel="stylesheet" href="//libapps-custom.library.curtin.edu.au/css/fontawesome.min.css?ver=5.8.11">
<div class="contentbox">
    <div class="square-link">
        <a href="">Header One</a>
<div class="dropdown">
  <button class="dropbtn">Header Two<i class="fa fa-caret-down"></i></button>
  <div class="dropdown-content">
  <a href="">1</a>
  <a href="">2</a>
    <a href="">3</a>
  <a href="">4</a>
  <a href="">5</a>
  </div>
</div>
 <a href="">Header Three</a>
<a href="">Header Four</a>
<a href="">Header Five</a>
    </div>
</div>

https://codepen.io/adms2000/pen/bGVJjNa

谢谢!

【问题讨论】:

    标签: html css


    【解决方案1】:

    我将您的代码移动到下面的交互式 sn-p 中。我调整了一些与边距相关的东西,以使它们的间距更加一致。

    .square-link {
      z-index: 80;
      text-align: center;
      display: flex;
      flex-wrap: wrap;
      position: relative;
      align-items: flex-start;
    }
    
    .square-link a {
      border: 2px solid #373737;
      border-radius: 5px 5px 5px 5px !important;
      color: #373737;
      background-color: transparent;
      font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
      text-align: center;
      padding: 6px;
      padding-right: 2vw;
      padding-left: 2vw;
      margin-right: 1vw;
      margin-left: 1vw;
      margin-bottom: 3%;
    }
    
    .square-link a:hover,
    .square-link a.active {
      background-color: #373737;
      color: #ffffff;
      transition: 0.2s
    }
    
    .dropbtn {
      border: 2px solid #373737;
      border-radius: 5px 5px 5px 5px !important;
      color: #373737;
      background-color: transparent;
      font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
      text-align: center;
      padding: 6px;
      padding-right: 2vw;
      padding-left: 2vw;
      margin-right: 1vw;
      margin-left: 1vw;
      cursor: pointer;
      overflow: hidden;
      transition: 0.2s;
    }
    
    .dropbtn-active {
      border: 2px solid #373737;
      border-radius: 5px 5px 5px 5px !important;
      color: #ffffff !important;
      background-color: #373737;
      font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
      text-align: center;
      padding: 6px;
      padding-right: 2vw;
      padding-left: 2vw;
      margin-right: 1vw;
      cursor: pointer;
      overflow: hidden;
      transition: 0.2s;
    }
    
    .dropdown {
      position: relative;
      display: block;
      z-index: 75 !important;
    }
    
    .dropdown-content {
      display: none;
      position: relative;
      background-color: #f9f9f9;
      z-index: 100 !important;
      max-width: 100%;
      margin-right: 1vw;
      margin-left: 1vw;
    }
    
    .dropdown-content a {
      color: black !important;
      text-decoration: none;
      margin-bottom: 0px;
      display: block;
      z-index: 75 !important;
      border: none;
      margin-right: 0px;
      margin-left: 0px;
      border-bottom: solid 1px #b6b6b6;
      border-radius: 0px !important;
    }
    
    .dropdown-content a:hover {
      background-color: #d1d1d1;
    }
    
    .dropdown:hover .dropdown-content {
      display: block;
    }
    
    .dropdown:hover .dropbtn {
      color: #ffffff;
      background-color: #373737;
      transition: 0.2s;
    }
    
    .caret-down {
      color: #373737;
    }
    <link rel="stylesheet" href="//libapps-custom.library.curtin.edu.au/css/fontawesome.min.css?ver=5.8.11">
    <div class="contentbox">
      <div class="square-link">
        <a href="">Header One</a>
        <div class="dropdown">
          <button class="dropbtn">Header Two<i class="fa fa-caret-down"></i></button>
          <div class="dropdown-content">
            <a href="">1</a>
            <a href="">2</a>
            <a href="">3</a>
            <a href="">4</a>
            <a href="">5</a>
          </div>
        </div>
        <a href="">Header Three</a>
        <a href="">Header Four</a>
        <a href="">Header Five</a>
      </div>
    </div>

    【讨论】:

      【解决方案2】:

      请更改.dropdown-content 上的margin-leftmargin-right 属性。然后它应该按预期工作。

      .dropdown-content {
        display: none;
        position: relative;
        background-color: #f9f9f9;
        z-index: 100 !important;
        max-width: 100%;
        margin-right: 1vw; /* Change to 1vw - same as parent button */
        /* margin-left: -4vw; */ /* REMOVE */
      }
      

      【讨论】:

        【解决方案3】:

        当你知道 css 中的定位关系时会很有趣,如果你的父母有相对而孩子有绝对,那么你不必调整它将使用父母属性的东西。

        .square-link
        {
            z-index: 80;
            text-align: center;
            display: flex;
            flex-wrap: wrap;
            position: relative;
          align-items:flex-start;
        }
        
        .square-link a
        {
            border: 2px solid #373737;
            border-radius: 5px 5px 5px 5px !important;
            color: #373737;
            background-color: transparent;
            font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
            text-align: center;
            padding: 6px;
            padding-right: 2vw;
            padding-left: 2vw;
            margin-right: 1vw;
            margin-bottom: 3%;
        }
        
        .square-link a:hover, .square-link a.active
        {
            background-color: #373737;
            color: #ffffff;
            transition: 0.2s
        }
        
        .dropbtn {
            border: 2px solid #373737;
            border-radius: 5px 5px 5px 5px !important;
            color: #373737;
            background-color: transparent;
            font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
            text-align: center;
            padding: 6px;
            padding-left: 2vw;
          cursor: pointer;
          overflow: hidden;
          transition: 0.2s;
        }
        
        .dropbtn-active {
            border: 2px solid #373737;
            border-radius: 5px 5px 5px 5px !important;
            color: #ffffff !important;
            background-color: #373737;
            font-size: calc(7px + (26 - 18) * ((100vw - 300px) / (1600 - 300)));
            text-align: center;
            padding: 6px;
            padding-right: 2vw;
            padding-left: 2vw;
          cursor: pointer;
          overflow: hidden;
          transition: 0.2s;
        }
        
        .dropdown {
          position: relative;
          display: block;
          z-index: 75 !important;
          margin-right: 1vw;
        }
        
        .dropdown-content {
          display: none;
          position: absolute;;
          background-color: #f9f9f9;
          z-index: 100 !important;
          max-width: 100%;
          min-width:100%;
        }
        
        .dropdown-content a {
          color: black !important;
          text-decoration: none;
          margin-bottom: 0px;
          display: block;
          z-index: 75 !important;
          border: none;
         margin-right: 0px;
         border-bottom: solid 1px #b6b6b6;
        border-radius: 0px !important;
        }
        
        .dropdown-content a:hover {background-color: #d1d1d1;}
        
        .dropdown:hover .dropdown-content {
          display: block;
        }
        
        .dropdown:hover .dropbtn {
          color: #ffffff;
          background-color: #373737;
          transition: 0.2s;
        }
        
        .caret-down
        {
            color: #373737;
        }
        <link rel="stylesheet" href="//libapps-custom.library.curtin.edu.au/css/fontawesome.min.css?ver=5.8.11">
        <div class="contentbox">
          <div class="square-link">
            <a href="">Header One</a>
            <div class="dropdown">
              <button class="dropbtn">Header Two<i class="fa fa-caret-down"></i></button>
              <div class="dropdown-content">
                <a href="">1</a>
                <a href="">2</a>
                <a href="">3</a>
                <a href="">4</a>
                <a href="">5</a>
              </div>
            </div>
            <a href="">Header Three</a>
            <a href="">Header Four</a>
            <a href="">Header Five</a>
          </div>
        </div>

        【讨论】:

          猜你喜欢
          • 2018-11-19
          • 1970-01-01
          • 1970-01-01
          • 2013-08-25
          • 2020-12-31
          • 1970-01-01
          • 1970-01-01
          • 2015-10-24
          • 2021-07-27
          相关资源
          最近更新 更多