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

目标:

  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>

页面效果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值