【问题标题】:Can't get list in sidebar to center vertically无法让侧边栏中的列表垂直居中
【发布时间】:2020-09-25 22:39:06
【问题描述】:

我正在尝试将我的无序列表置于边栏中的中心,但以下应用于我的 CSS 的解决方案均无效:

align-items: center;
vertical-align: middle;
transform: translateY(-50%);
top: 0;
bottom: 0;

我在这一点上感到非常困惑,并希望您的解决方案。这是我的 SCSS 和 HTML:

  
$font-primary: "Roboto", sans-serif;
$body-bg: rgb(240, 230, 230);
$sidebar-bg: rgb(255, 210, 235);
$text: black;
$shadow: 0px 0px 100px 0px rgb(207, 207, 207);

body {
  -webkit-touch-callout: none; /* iOS Safari */
  -webkit-user-select: none;   /* Safari */
  -khtml-user-select: none;    /* Konqueror HTML */
  -moz-user-select: none;      /* Firefox */
  -ms-user-select: none;       /* Internet Explorer/Edge */
  user-select: none;           /* Non-prefixed */
  
  background-color: $body-bg;
  color: $text;
}

#sidebar {
  background-color: $sidebar-bg;
  min-width: 300px;
  max-width: 300px;
  min-height: 100vh;

  -moz-box-shadow: $shadow; /*hor-length shadodow-start-point shadow-depth darkness */
  -webkit-box-shadow: $shadow;
  box-shadow: $shadow;

  * {
    text-align: center;
  }

  ul {
    padding: 0px;
    margin: 0px;
  }

  li {
    text-decoration: none;
    list-style: none;
  }

}
<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!--Makes mobile viewing good-->

    <!-- CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
    <link rel="stylesheet" href="css/style.css">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">

    <title>Hello, world!</title>
  </head>
  <body>
    <div class="d-flex">
      <nav id="sidebar">
        <h1 class="display-3 pt-4 pb-4">DRIP</h1>
        <ul>
          <li>Finances</li>
          <li>Development</li>
          <li>DIY</li>
        </ul>
      </nav>
    </div>

    <!-- Optional JavaScript -->
    <script src="script.js"></script>

    <!-- jQuery, Popper, Bootstrapper JavaScript -->
    <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
    </body>
</html> 

我的目标是让列表相对于它所在的侧边栏居中(如果有意义的话)。即使当我在 UL 项目之间添加样式(例如填充)或添加更多 UL 项目时,我也希望它在侧边栏中保持居中。遗憾的是,我的解决方案都没有影响我希望它们如何影响列表。

【问题讨论】:

  • 您可以尝试将margin: 0 auto;display: table; 添加到您的&lt;ul&gt; 标签。看看这个帖子stackoverflow.com/questions/19443013/…
  • @KiprasBielinskas 刚刚尝试过,没有引起任何变化:(
  • 那么您的实际代码可能与您的问题有点不同,因为运行您的代码并应用 css,&lt;ul&gt; 元素确实会转到容器的中心 see the image
  • 该代码确实正确地将我的列表水平居中,但我想将其垂直居中(这是问题所在)。请记住,我发布的 CSS 是 SCSS 语法,并且有一个彩色背景可以帮助您可视化侧边栏。

标签: html css


【解决方案1】:

在侧边栏的内容周围放置一个div。将侧边栏设为flexbox 并将项目(新创建的 div)垂直居中对齐。

* {
  text-align: center;
}

#sidebar {
  min-width: 300px;
  max-width: 300px;
  min-height: 100vh;
  display: flex;
  align-items: center;
  background-color: lightblue;
}

ul {
  padding: 0px;
  margin: 0px;
}

li {
  text-decoration: none;
  list-style: none;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<div class="d-flex">
  <nav id="sidebar">
    <div>
      <h1 class="display-3 pt-4 pb-4">DRIP</h1>
      <ul>
        <li>Finances</li>
        <li>Development</li>
        <li>DIY</li>
      </ul>
    </div>
  </nav>
</div>

【讨论】:

  • 您的解决方案实际上确实将我的列表移动到了侧边栏的垂直中心,但它也将我的标题向下推(“DRIP”)。我想保持标题固定在它的位置,虽然我不确定如何。 imgur.com/EXRVuag
  • @Sam 将h1 移到侧边栏外,也许你会得到你想要的。
  • 这会导致

    在侧边栏之前加载,从而导致此视觉效果:imgur.com/yeRKjFh 对不起,我感到很失落哈哈。

猜你喜欢
  • 1970-01-01
  • 2018-10-17
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 1970-01-01
相关资源
最近更新 更多