如何用css将ul转换为一个漂亮的水平导航栏?

2025-10-10 12:17:52

1、先来看一个初始化的ul无序列表得到样式

代码如下:

  <body>

  <ul>

  <li>HTML</li>

  <li>CSS</li>

  <li>JavaScript</li>

  <li>Jquery</li>

  <li>vueJs</li>

  <li>AngularJs</li>

  <li>More...</li>

  </ul>

  </body>

其代码和运行效果如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

1、用css将ul转换为一个水平导航栏步骤:

1. 将ul中的默认黑点去掉:ul{ list-style:none; }

2. 让ul中的所有li设置为行内块元素,让这些li标签都在同一行; 

3. 把ul也变为行内块元素,让logo能和他处在同一行;

4. 去掉原先黑点所占据的位置,让ul刚刚包裹住所有的li标签;

5. 将logo图标加在ul标签的上面,此时应该让div的宽高为logo.png的宽高,不然在div的值为空的情况下,div不会显示出来。

6. 将div设置为行内块元素,让它和ul导航处在同一行。div.logo{display:inline-block;}

7. 此时虽然他们在同一行上,但是他们并没有对齐,然后有两种方式让他们对其。通过设置float或者vertical-align两种方式。

方式一:div.logo,ul{float:left;} //让ul和logo都左浮动

方式二:div.logo,ul{vertical-align: middle;} //让ul和logo都进行居中排列

8.设置每个li的具体宽高,然后通过text-align与line-height让li中的文字垂直水平居中。

9. 设置当鼠标经过li时,背景变为蓝色,字体变为白色,同时鼠标变为一个手状。

10.去掉ul默认的上下margin值,同时去掉body默认的margin值,让导航贴近窗体的最上面

11. 根据你的电脑的屏幕分辨率的实际情况给你的div设置一个margin-right属性,让ul导航到右边去。

12. 让第一个li的默认背景颜色为蓝色,字体为白色加粗。

13. 给div与ul套上一个header标签,

14. 给这个header标签设置大于div与ul的高度以避免当字体变大时被撑开

    然后在给header设置一个2px的padding-bottom,模拟下划线效果  

15. 最后在ul的外面嵌套一个nav,进行更加的语义化说明。

2、1. 去掉ul默认的黑点

ul{ list-style:none; }

代码和运行结果如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

3、2.将ul中的所有li设置为行内块元素,让这些li标签都在同一行;

 li{display:inline-block;} 

代码和运行结果如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

4、3. 把ul也变为行内块元素,让即将添加的logo能和他处在同一行;

ul{ display:inline-block; }

4. 去掉原先黑点所占据的位置,让ul刚刚包裹住所有的li标签;

ul{padding-left:0;}

5. 将logo图标加在ul标签的上面,此时应该让div的宽高为logo.png的宽高,不然 在div的值为空的情况下,div不会显示出来。

html代码:<div class="logo"></div>

          <ul>......</ul>

  

css代码: div.logo{width:160px;height:51px;background:url(logo.png);}  

代码和运行结果如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

5、6. 将div设置为行内块元素,让它和ul导航处在同一行。

div.logo{display:inline-block;}

7. 设置vertical-align属性或者float属性让ul和div不仅在同一行上,还要让他们进行对齐

方式一:div.logo,ul{float:left;} //让ul和logo都左浮动

方式二:div.logo,ul{vertical-align: middle;} //让ul和logo都进行居中排列

这里使用vertical-align属性。

运行结果和代码如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

6、8.设置每个li的具体宽高,然后通过text-align与line-height让li中的文字垂直水平居中。

 li{

   width:140px;

   heigth:51px;

   text-align:center;

   line-height:51px;

 }

运行结果和代码如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

7、9. 设置当鼠标经过li时,背景变为蓝色,字体变为白色加粗,同时鼠标变为一个手状

li:hover{

   color:white;

   background-color:#11278a;

   cursor:pointer;

   font-weight:bold;

}

运行结果和代码如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

8、10.去掉ul默认的上下margin值,同时去掉body默认的margin值,让导航贴近窗体的最上面

 body,ul{

  margin:0;

 }

运行结果和代码如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

9、11. 根据你的电脑的屏幕分辨率的实际情况给你的div设置一个margin-right属性,让ul导航到右边去。

margin-right:10%;

运行结果和代码如下

如何用css将ul转换为一个漂亮的水平导航栏?

如何用css将ul转换为一个漂亮的水平导航栏?

10、11. 根据你的电脑的屏幕分辨率的实际情况给你的div设置一个margin-right属性,让ul导航到右边去。

div.logo{

  margin-right:10%;

  } 

12. 让第一个li的默认背景颜色为蓝色,字体为白色加粗。

li:nth-child(1){

background-color:#11278a;

color:white;

font-weight:bold;

}

13. 给div与ul套上一个header标签,

 <header>

  <div class="logo"></div>

  <ul>

  <li>HTML</li>

  <li>CSS</li>

  <li>JavaScript</li>

  <li>Jquery</li>

  <li>vueJs</li>

  <li>AngularJs</li>

  <li>More...</li>

  </ul>

 </header>

14. 给这个header标签设置大于div与ul的高度以避免当字体变大时被撑开

    然后在给header设置一个2px的padding-bottom,模拟下划线效果  

header{

height:55px;

padding-bottom:2px;

border-bottom:1px solid #e3e3e3;

}

15. 最后在ul的外面嵌套一个nav,进行更加的语义化说明。

<body>

 <header>

  <div class="logo"></div>

  <nav>

  <ul>

  <li>HTML</li>

  <li>CSS</li>

  <li>JavaScript</li>

  <li>Jquery</li>

  <li>vueJs</li>

  <li>AngularJs</li>

  <li>More...</li>

  </ul>

  </nav>

 </header>

</body>

运行结果如下

如何用css将ul转换为一个漂亮的水平导航栏?

11、完整代码如下:

<!DOCTYPE html>

<html>

<head>

    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">

<meta charset="UTF-8">

    <title>标题</title>

<style>

  ul{ 

    list-style:none;

    display:inline-block;  

    padding-left:0;

  }

  li{

    display:inline-block;

width:140px;

    heigth:51px;

    text-align:center;

    line-height:51px;

  } 

div.logo{

  width:160px;

  height:51px;

  background:url(logo.png);

  display:inline-block;

  margin-right:10%;

  }  

  div.logo,ul{vertical-align: middle;}  

li:hover{

   color:white;

   background-color:#11278a;

   cursor:pointer;

   font-weight:bold;

}

 body,ul{

  margin:0;

 }

li:nth-child(1){

background-color:#11278a;

color:white;

font-weight:bold;

}

header{

height:55px;

padding-bottom:2px;

border-bottom:1px solid #e3e3e3;

}

nav{

display:inline-block;

}

</style>

</head>

<body>

 <header>

  <div></div>

  <nav>

  <ul>

  <li>HTML</li>

  <li>CSS</li>

  <li>JavaScript</li>

  <li>Jquery</li>

  <li>vueJs</li>

  <li>AngularJs</li>

  <li>More...</li>

  </ul>

  </nav>

 </header>

</body>

</html>

12、

用css将ul转换为一个水平导航栏总结

1. 将ul中的默认黑点去掉:ul{ list-style:none; }

2. 让ul中的所有li设置为行内块元素,让这些li标签都在同一行; 

3. 把ul也变为行内块元素,让logo能和他处在同一行;

4. 去掉原先黑点所占据的位置,让ul刚刚包裹住所有的li标签;

5. 将logo图标加在ul标签的上面,此时应该让div的宽高为logo.png的宽高,不然在div的值为空的情况下,div不会显示出来。

6. 将div设置为行内块元素,让它和ul导航处在同一行。div.logo{display:inline-block;}

7. 此时虽然他们在同一行上,但是他们并没有对齐,然后有两种方式让他们对其。通过设置float或者vertical-align两种方式。

方式一:div.logo,ul{float:left;} //让ul和logo都左浮动

方式二:div.logo,ul{vertical-align: middle;} //让ul和logo都进行居中排列

8.设置每个li的具体宽高,然后通过text-align与line-height让li中的文字垂直水平居中。

9. 设置当鼠标经过li时,背景变为蓝色,字体变为白色,同时鼠标变为一个手状。

10.去掉ul默认的上下margin值,同时去掉body默认的margin值,让导航贴近窗体的最上面

11. 根据你的电脑的屏幕分辨率的实际情况给你的div设置一个margin-right属性,让ul导航到右边去。

12. 让第一个li的默认背景颜色为蓝色,字体为白色加粗。

13. 给div与ul套上一个header标签,

14. 给这个header标签设置大于div与ul的高度以避免当字体变大时被撑开

    然后在给header设置一个2px的padding-bottom,模拟下划线效果  

15. 最后在ul的外面嵌套一个nav,进行更加的语义化说明。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢