CSS导航菜单水平居中的多种方法

在网页设计中,水平导航菜单使用是十分广泛的,在CSS样式中,我们一般会用Float元素或是「display:inline-block」来解决。而今天主要讲解如何让未知宽度的元素居中,下面我们会列出几种方法来解决水平居中问题。当然这些方法不一定是用来解决导航菜单问题,还有其它类似情况也是可以使用的。

CSS导航菜单水平居中的多种方法:

  • 方法1:display:inline-block
  • 方法2:position:relative
  • 方法3:display:table
  • 方法4:display:inline-flex
  • 方法5:width:fit-content / width:intrinsic

方法1:display:inline-block

这个方法比较简单,是将容器转成「display:inline-block」行内块级元素,然后就可以直接用「text-align:center」使其达到水平居中效果。

HTML代码:

这里我们需要一个div来包围这个导航菜单。

  1. <div class="navbar">
  2. <ul>
  3. <li><a href="/">首页</a></li>

  4. </ul>
  5. </div>

CSS代码:

给外面的div添加「text-align:center」,然后将菜单容器设成「display:inline-block」行内块级元素,菜单浮左「float:left」

  1. .navbar {
  2. text-align:center;
  3. }
  4. .navbar ul {
  5. display:inline-block;
  6. }
  7. .navbar li {
  8. float:left;
  9. }
  10. .navbar li + li {
  11. margin-left:20px;
  12. }

这里浏览器兼容只能是IE8或更高版本,所以如果要兼容IE7的话,请加入以下代码

  1. .navbar ul {
  2. display:inline;
  3. zoom:1;
  4. }

方法2:position:relative

这是使用「position:relative」定位方法来让元素水平居中,我不是很推荐这方法,因为代码多了个div去包住,当然这些是根据情况来使用的。

HTML代码:

  1. <div class="navbar">
  2. <div>
  3. <ul>
  4. <li><a href="/">首页</a></li>

  5. </ul>
  6. </div>
  7. </div>

CSS代码:
将定位div设为浮动,再定位「left:50%」,然后导航定位至「left:-50%」,这方法很有意思吧。可能表达不是很清楚,自己看代码吧^^

  1. .navbar {
  2. overflow:hidden;
  3. }
  4. .navbar > div {
  5. position:relative;
  6. left:50%;
  7. float:left;
  8. }
  9. .navbar ul {
  10. position:relative;
  11. left:-50%;
  12. float:left;
  13. }
  14. .navbar li {
  15. float:left;
  16. }
  17. .navbar li + li {
  18. margin-left:20px;
  19. }

如果要兼容IE7,请添加以下样式:

  1. .navbar {
  2. position:relative;
  3. }

方法3:display:table

如果你喜欢简洁的代码,哪么这个方法就非常适合你了。

HTML代码:

  1. <ul class="navbar">
  2. <li><a href="/">Home</a></li>

  3. </ul>

CSS代码:

  1. .navbar {
  2. display:table;
  3. margin:0 auto;
  4. }
  5. .navbar li {
  6. display:table-cell;
  7. }
  8. .navbar li + li {
  9. padding-left:20px;
  10. }

浏览器兼容:这方法代码精简,但不支持IE7及以下版本……

方法4:display:inline-flex

有关flex layout的知识自己查下吧>_<

HTML代码:

  1. <div class="navbar">
  2. <ul>
  3. <li><a href="/">Home</a></li>

  4. </ul>
  5. </div>

CSS代码:

  1. .navbar {
  2. text-align:center;
  3. }
  4. .navbar > ul {
  5. display:-webkit-inline-box;
  6. display:-moz-inline-box;
  7. display:-ms-inline-flexbox;
  8. display:-webkit-inline-flex;
  9. display:inline-flex;
  10. }
  11. .navbar li + li {
  12. margin-left:20px;
  13. }

浏览器兼容:不支持IE7及以下版本的IE浏览器。

方法5:width:fit-content

HTML代码:

  1. <div class="navbar">
  2. <ul>
  3. <li><a href="/">首页</a></li>

  4. </ul>
  5. </div>

CSS代码:

  1. .navbar {
  2. text-align:center;
  3. }
  4. .navbar > ul {
  5. display:-webkit-inline-box;
  6. display:-moz-inline-box;
  7. display:-ms-inline-flexbox;
  8. display:-webkit-inline-flex;
  9. display:inline-flex;
  10. }
  11. .navbar li + li {
  12. margin-left:20px;
  13. }

浏览器兼容:这个兼容比较低,只支持Firefox或chrome、Opera 12这些较新的浏览器。

CSS导航菜单水平居中的多种方法的更多相关文章

  1. HTML5 div+css导航菜单

    HTML5 div+css导航菜单 视频 音乐 小说   故事 作品 阅读 联系

  2. 强烈推荐一款CSS导航菜单

    强烈推荐一款CSS导航菜单,用到政府学校类网站上超级不错,有点类似站长网菜单的味道,只不过颜色不一样而已,这种菜单还不是真正意义上的“下拉”菜单,应该叫滑出菜单吧?反正比较不错,不多说了. <! ...

  3. css隐藏页面元素的多种方法

    在平常的样式排版中,我们经常遇到将某个模块隐藏,下面我整理了一下隐藏元素的多种方法以及对比(有的占据空间,有的不占据空间.有的可以点击,有的不能点击.): ( 一 )  display:  none; ...

  4. css 导航菜单+下拉菜单

    一.导航菜单 1.横向导航 代码如下: <!doctype html> <html> <head> <meta charset="utf-8&quo ...

  5. css实现自适应正方形的多种方法实现

    方案一:CSS3 vw 单位 CSS3 中新增了一组相对于可视区域百分比的长度单位vw.vh.vmin.vmax.其中vw是相对于视口宽度百分比的单位,1vw = 1% viewport width, ...

  6. css导航菜单二级显示的问题

    m项目中出现了二级菜单的标签是在导航的里面,用css ul>li:hover ul>li>ul>li 这样子实现不了鼠标经过时导航里二级菜单的显示,这里个人感觉是冲突了.最后通 ...

  7. Css实现垂直水平居中的六种方法

    经常在项目中用到,今天总结了一下: 演示地址:http://codepen.io/anon/pen/xGdpOa 以下两个类为公共类,便于更好的显示效果,非核心代码 .common{ width: 6 ...

  8. CSS导航菜单(二级菜单)

    index.html <div class="nav"> <ul> <li> <a href="#">Java& ...

  9. CSS导航菜单(一级菜单)

    index.html <div class="nav"> <ul> <li><a href="#">Java&l ...

随机推荐

  1. 【深度学习Deep Learning】资料大全

    最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books  by Yoshua Bengio, Ian Goodfellow and Aaron C ...

  2. 使用markdown

    一.在windows下使用markdown MarkdownPad:MarkdownPad is a full-featured markdown editor for windows. Awsomi ...

  3. 使用CocoaPods被卡住:Updating local specs repositories

    使用cocoapods 更新第三库,一直停留在.Updating local specs repositories 后来查发现pod install  被墙了,请大家换成pod install --v ...

  4. 使用视 meta 标签来控制手机浏览器布局

    移动浏览器的Fennec一样呈现在一个虚拟的"窗口"页面(视),通常比屏幕宽.所以他们不需要去挤每个页面布局到一个小窗口(这会破坏许多非移动优化的网站) .用户可以平移和缩放才能看 ...

  5. django 进阶篇

    models(模型) 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetLi ...

  6. 页内多个input全选不干扰且只用一段代码。

    //html内容 <body> <div id="d1"> <input type="checkbox" class=" ...

  7. 常用的Jquery插件

    0.模块化前端框架(http://www.layui.com) 1.拖拽滑动验证码(http://www.geetest.com/,https://github.com/dyh1995/jquery. ...

  8. Genymotion模拟器连接Eclipse的总结[转]

    Genymotion模拟器连接Eclipse的总结 按官网上说明安装并配置好Genymotion ,再安装好对应的Eclipse Plugin(http://plugins.genymotion.co ...

  9. web网页中使用vlc插件播放相机rtsp流视频

    可参考: 使用vlc播放器做rtsp服务器 使用vlc播放器播放rtsp视频 使用vlc进行二次开发做自己的播放器 vlc功能还是很强大的,有很多的现成的二次开发接口,不需配置太多即可轻松做客户端播放 ...

  10. Windows下搭建PHP开发环境

    PHP集成开发环境有很多,如XAMPP.AppServ......只要一键安装就把PHP环境给搭建好了.但这种安装方式不够灵活,软件的自由组合不方便,同时也不利于学习.所以我还是喜欢手工搭建PHP开发 ...