【CSS】<li>水平排列且居中显示

本文介绍了三种方法使HTML中的li元素水平排列并居中:行内块布局通过调整文本对齐和消除行内间距;float布局需注意高度塌陷和清除浮动;flex布局更为现代且易于管理,是推荐的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章已经生成可运行项目,

目标:

  1. 实现<li>水平方向排列
  2. 所有的<li>能够居中显示

方法一:行内块元素布局

  1. <li>本身是块元素,独占父盒子一行,将其改为行内块元素(inline-block),实现水平方向排列。
  2. 设置父盒子<ul>text-align:center,实现居中。

问题:行内块元素之间会出现缝隙,解决指路👉HTML内联(行内)元素间的缝隙问题讲解

方法二:float布局

  1. 利用float实现<li>水平方向排列
  2. 父盒子<ul>清除浮动后给定与内部元素一样的高度,利用margin: 0 auto 实现居中

问题:float会引起父元素高度塌陷,需要给父元素清除浮动;并且需要将父元素宽度设置为子元素的宽度,不灵活。【不推荐】

方法三:flex布局

  1. 利用默认主轴方向为横向实现<li>水平方向排列
  2. 利用justify-content:center实现居中

代码

HTML

<body>
    <!-- 方法一 -->
    <div class="box box1">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>
    </div>
    <!-- 方法二 -->
    <div class="box box2">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>
    </div>
    <!-- 方法三 -->
    <div class="box box3">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
        </ul>
    </div>
</body>

CSS

    <style>
        /* 初始化 */
        * {
            margin: 0;
            padding: 0;
            /* 去除li的圆点 */
            list-style-type: none;
        }

        .box {
            margin: 50px auto;
            width: 500px;
            height: 100px;
            border: 1px solid purple;
        }

        /* 方法一. li转换为行内块元素 */
        .box1 ul {
            /*设置 块元素 或者 单元格框的行内内容 水平对齐 */
            text-align: center;
            /* 解决行内块元素之间有缝隙的问题 */
            font-size: 0;

            /* 可视化块 */
            background-color: pink;
        }

        .box1 li {
            /* 转化为行内块元素 */
            display: inline-block;
            /* 解决行内块元素之间有缝隙的问题 */
            font-size: 16px;

            /* 可视化块 */
            background-color: aqua;
        }

        /* 方法二. float布局 */
        .box2 ul {
            /* 给定与内部元素一样的宽度 */
            width: 25px;
            margin: 0 auto;
            /* 清除浮动,让内部浮动元素能够撑开盒子 */
            overflow: hidden;

            /* 可视化块 */
            background-color: yellow;
        }

        .box2 li {
            float: left;
            /* 可视化块 */
            background-color: aqua;
        }

        /* 方法三. flex布局 */
        .box3 ul {
            display: flex;
            /* 默认主轴方向为横向 */
            flex-direction: row;
            justify-content: center;

            /* 可视化块 */
            background-color: blue;
        }

        .box3 li {
            /* 可视化块 */
            background-color: aqua;
        }
</style>

页面效果

本文章已经生成可运行项目
</div> <!-- 导航栏 --> <div class="nav"> <ul> <li class="menu">首页 <ul class="subMenu"> <li><a href="#">游戏官网</a></li> <li><a href="#">高校电竞社</a></li> <li><a href="#">社区中心</a></li> </ul> </li> <li class="menu"><a href="#">充值</a></li> <li class="menu">新闻 <ul class="subMenu"> <li><a href="#">活动中心</a></li> <li><a href="#">赛事中心</a></li> <li><a href="#">新闻中心</a></li> </ul> </li> <li class="menu"><a href="#">赛事</a></li> <li class="menu">资料 <ul class="subMenu"> <li><a href="#">新手指南</a></li> <li><a href="#">官方资料站</a></li> <li><a href="#">游戏特色</a></li> </ul> </li> <li class="menu"><a href="#">商城</a></li> <li class="menu">服务 <ul class="subMenu"> <li><a href="#">常见问题</a></li> <li><a href="#">客服支持</a></li> <li><a href="#">礼包码兑换</a></li> </ul> </li> <li class="menu">注册 <ul class="subMenu"> <li><a href="#">游戏下载</a></li> <li><a href="#">账户注册</a></li> </ul> </li> </ul> </div> #logo { width: 136px; margin: 0px; padding: 0px; float: left; } #logo img{ width: 100%; height:66px; } { margin: 0; padding: 0; box-sizing: border-box; } #nav{ width:100%; height: 36px; background: #999; height: 39px; } ul{ width:600px; margin: 0 auto; list-style-type: none; } .menu{ position: relative; float: left; width: 100px; height: 36px; line-height: 36px; text-align: center; } .subMenu{ display: none; border: 1px solid #ccc; } li{ border-bottom: 0px; } .carousel { position: relative; width: 1400px; height: 500px; overflow: hidden; margin: 50px auto; } a:link{ color: #000; text-decoration: none; } 修改代码实现logo区域独占一行,导航栏词条区域独占一行
06-15
为下面这段代码添加注释<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <script src="../js/jquery-3.3.1.js" type="text/javascript" charset="utf-8"></script> <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div class="container" style="background: #ffffff;">大家好</div> <h1 class="page-header">产品展示</h1> <p class="text-capitalize">小说奇幻html和碘钨灯完全</p> <h3 class="page-header">列表</h3> <ul class="list-unstyled list-inline"> <li>html</li> <li>css</li> <li>php</li> <li>mysql</li> </ul> <h3 class="page-header">自定义列表</h3> <dl class="dl-horizontal"> <dt>html</dt> <dd>css</dd> </dl> <p> 根据春运售票方案,旅客从12月15日起,就可通过网络、手机、电话方式预定明年春运首日(2017年1月12日)的票 </p> <div class="table-responsive"> <table class="table table-bordered table-hover table-striped table-condensed"> <tr class="sucess"> <td>编号</td> <td>产品状态</td> <td>状态</td> </tr> <tr class="info"> <td>001</td> <td>凯迪拉克</td> <td>未发货</td> </tr> <tr class="active"> <td>002</td> <td>奥迪</td> <td>已发货</td> </tr> <tr class="warning"> <td>003</td> <td>奔驰</td> <td>已接收</td> </tr> </table> </div> </body> </html>
最新发布
06-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值