代码之家  ›  专栏  ›  技术社区  ›  Michael Abrams

HTML/CSS水平居中在无序列表上不起作用

  •  1
  • Michael Abrams  · 技术社区  · 3 年前

    在我的HTML中,我有一个无序的链接列表。在我的CSS中,我试图将链接列表水平居中放置在网页上。这是我的HTML和CSS代码:

    @import url("https://fonts.googleapis.com/css2?family=Roboto&display=swap");
    
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box
    }
    
    body {
      font-size: 2rem;
      font-family: "Roboto", sans-serif;
    }
    
    ul {
        display: inline-block;
        margin: 0px, auto;
        list-style: none;
        padding: 0.5rem;
        background-color: black;
    }
    
    li {
        display: inline-block;
        margin-inline: 0.5rem;
    }
    
    li a {
        color: white;
        text-decoration: none;
    }
    
    li a:hover, li a:focus {
        text-decoration: underline;
    }
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>CSS Display</title>
        <link rel="stylesheet" href="practice.css">
    </head>
    
    <body>
        <main>
            <nav>
                <ul>
                    <li><a href="#">Intro</a></li>
                    <li><a href="#">Portfolio</a></li>
                    <li><a href="#">Projects</a></li>
                </ul>
            </nav> 
            
        </main>
    </body>
    
    </html>

    我认为将无序列表设置为内联块将允许我在无序列表元素上应用边距。如果是这样,我的边距设置为:0px,自动;它应该将无序列表水平居中,但由于某种原因,没有应用任何CSS。我非常关注为什么这不起作用,而不是一个替代的解决方案。谢谢

    4 回复  |  直到 3 年前
        1
  •  2
  •   Tushar Gupta    3 年前

    您需要做两件事:

    1.给 display: flex 到您的 nav

    nav{
     display: flex
    }
      
    

    2.未正确提供裕度 ul ,应该没有逗号

    margin: 0px auto;
    

    工作代码如下:

    @import url("https://fonts.googleapis.com/css2?family=Roboto&display=swap");
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box
    }
    
    nav {
      display: flex;
    }
    
    body {
      font-size: 2rem;
      font-family: "Roboto", sans-serif;
    }
    
    ul {
      display: inline-block;
      margin: 0 auto;
      list-style: none;
      padding: 0.5rem;
      background-color: black;
    }
    
    li {
      display: inline-block;
      margin-inline: 0.5rem;
    }
    
    li a {
      color: white;
      text-decoration: none;
    }
    
    li a:hover,
    li a:focus {
      text-decoration: underline;
    }
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>CSS Display</title>
      <link rel="stylesheet" href="practice.css">
    </head>
    
    <body>
      <main>
        <nav>
          <ul>
            <li><a href="#">Intro</a></li>
            <li><a href="#">Portfolio</a></li>
            <li><a href="#">Projects</a></li>
          </ul>
        </nav>
    
      </main>
    </body>
    
    </html>
        2
  •  0
  •   Kamil Guliyev    3 年前

    更改此行:

    margin: 0px, auto;
    

    对此:

    margin: 0px auto;
    

    若要解决此问题,可以将逗号更改为空格。这应该使你的无序列表在网页上水平居中。

        3
  •  0
  •   5150 Design    3 年前

    卡米尔是对的。你的语法有错误。删除边距声明中的逗号。

    要使列表居中,应删除 display:inline-block; 从你的ul添加一个小于100%的宽度。这将允许您的列表位于页面的中心。

    内联块元素没有固有宽度。因此 margin:auto; 不会起作用。

    @import url("https://fonts.googleapis.com/css2?family=Roboto&display=swap");
    
    * {
        margin: 0;
        padding: 0;
        box-sizing: border-box
    }
    
    body {
      font-size: 2rem;
      font-family: "Roboto", sans-serif;
    }
    
    ul {
        width: 80%;
        margin: 0px auto;
        list-style: none;
        padding: 0.5rem;
        background-color: black;
    }
    
    li {
        display: inline-block;
        margin-inline: 0.5rem;
    }
    
    li a {
        color: white;
        text-decoration: none;
    }
    
    li a:hover, li a:focus {
        text-decoration: underline;
    }
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>CSS Display</title>
        <link rel="stylesheet" href="practice.css">
    </head>
    
    <body>
        <main>
            <nav>
                <ul>
                    <li><a href="#">Intro</a></li>
                    <li><a href="#">Portfolio</a></li>
                    <li><a href="#">Projects</a></li>
                </ul>
            </nav> 
            
        </main>
    </body>
    
    </html>