当前位置:首页 > 扩展阅读 > 正文内容

html+css实现行内对齐的4种方法

唐朝2年前 (2024-04-01)扩展阅读2198

我们通过制作导航的形式,来体验4种对齐方式。

分别是

display: flex;

display: inline-block;

float: left;

display: grid;

为了让效果更佳直观,我们配置下公共css代码(less写法)

// 设置body元素的外边距为0,消除浏览器默认样式的影响
body {
    margin: 0;
}

// 去除所有ul元素的列表符号样式
ul {
    list-style: none;
}

// 设置所有a元素去除下划线(默认链接样式)
a {
    text-decoration: none;
}

// 定义一个id为"nav"的元素样式
#nav {

    // 在.nav1内部定义.row类样式
    .row {
        // 设置.row容器宽度为1200px,并通过自动设置左右内边距使其水平居中显示
        width: 1200px;
        margin: 0 auto;

        /* 使用媒体查询,在屏幕宽度小于等于960px时应用以下样式 */
        @media(max-width: 960px) {
            // 将.row类容器的宽度设置为100%,以适应小屏幕自适应布局
            width: 100%;
        }
    }

    ul {
        // 移除默认外边距和内边距
        margin: 0;
        padding: 0;
        // 文本居中对齐
        text-align: center;
        // 在ul内部定义li元素样式
        li {
            // 设置行高为50px以使文本垂直居中
            line-height: 50px;
            // 鼠标指针悬停时变为手形
            cursor: pointer;
            line-height: 50px;

            // 在li内的a元素样式
            a {
                // 设置文字颜色为白色
                color: #ffffff;
                // 去除下划线
                text-decoration: none;
                // 设置字体加粗,权重为900
                font-weight: 900;
                display: block;
            }
        }

        // 当鼠标悬停在li上或li具有.on类时应用的样式
        li:hover,
        .on {
            // 背景颜色为rgba(0, 0, 0, 0.13),即带有一定透明度的黑色
            background: rgba(0, 0, 0, 0.13);

            // 修改此时li内的a元素颜色为#ffea52(黄色)
            a {
                color: #ffea52;
            }
        }
    }

    // 针对"#nav"内的直接li子元素设置样式
    li {
        // 设置li元素为相对定位,以便其子元素(ul)可以进行绝对定位
        position: relative;

        // 在当前li元素下定义嵌套的ul子元素样式
        ul {
            // 将ul元素设置为绝对定位,并根据父级li元素定位
            position: absolute;
            // 设置ul元素距离左侧边界0像素
            left: 0;
            // 设置ul元素距离顶部50像素
            top: 50px;
            // 设置ul元素宽度为100%
            width: 100%;
            // 设置z-index值为6,使其在叠加上具有较高层级
            z-index: 6;
            // 初始化ul元素透明度为0,隐藏该元素
            opacity: 0;
            // 隐藏ul元素内容
            visibility: hidden;
            // 防止内容溢出
            overflow: hidden;
            // 添加过渡效果,当opacity属性改变时,会在0.8秒内完成变化
            transition: opacity .8s;
        }

        // 对于当前li元素下的嵌套li子元素设置样式
        li {
            // 取消浮动
            float: none;
            // 设置嵌套li元素宽度为100%
            width: 100%;
            // 设置背景颜色为#C01E22(暗红色)
            background-color: #C01E22;

            // 在嵌套li元素内部的a元素样式
            a {
                // 设置链接文字颜色为白色
                color: #fff;
            }
        }

        // 当鼠标悬停在当前li元素上时,应用以下样式:
        &:hover ul {
            // 改变ul元素的透明度为1,使其可见
            opacity: 1;
            // 显示ul元素内容
            visibility: visible;
            // 设置display属性为block,确保ul显示为块状元素
            display: block;
        }
    }
}


一、display: flex; 

又名弹性布局,是CSS3中的一个模块,为复杂的一维布局提供了更强大的解决方案,它于2009年开始标准化,并在后续几年里逐步被现代浏览器采纳和支持。Flexbox极大地简化了响应式布局设计、垂直居中对齐等问题。

1.png

<div class="nav1" id="nav">
    <div class="row">
        <ul>
            <li class="on"><a href="#">首页</a></li>
            <li><a href="#">关于</a></li>
            <li><a href="#">联系</a>
                <ul>
                    <li><a href="#">子目录</a></li>
                    <li><a href="#">子目录</a></li>
                </ul>
            </li>
            <li><a href="#">关于</a></li>
            <li><a href="#">联系</a></li>
        </ul>
    </div>
</div>

css代码(less写法)

// 定义一个名为.nav1的类样式,表示导航栏区域
.nav1 {
    // 设置导航栏背景颜色为#008bc7(深蓝色)
    background-color: #008bc7;

    // 设置.nav1内的ul元素样式
    ul {
        // 使用Flex布局,允许子元素换行
        display: flex;
        flex-wrap: wrap;

        // 在ul内部定义li元素样式
        li {
            // 每个li元素宽度为父容器宽度的20%
            width: 20%;

            /* 使用媒体查询,在屏幕宽度小于等于960px时调整li元素的宽度 */
            @media(max-width: 960px) {
                // 将每个li元素宽度调整为父容器宽度的33.33%
                width: 33.33%;
            }
        }
    }
}

二、display: inline-block

结合了块级元素和行内元素的特点,使得元素既可以像块级元素那样设置宽高,又能像行内元素一样在同一行显示。2004年左右在CSS2.1规范中引入,其逐渐被浏览器支持并在Web开发中广泛应用,特别是在需要混合使用行内与块状表现的场景。

2.png

    <div class="nav2"  id="nav">
        <div class="row">
            <ul>
                <li class="on"><a href="#">首页</a></li>
                <li><a href="#">关于</a></li>
                <li><a href="#">联系</a>
                    <ul>
                        <li><a href="#">子目录</a></li>
                    </ul>
                </li>
                <li><a href="#">关于</a></li>
                <li><a href="#">联系</a></li>
            </ul>
        </div>
    </div>

css代码(less写法)

// 定义一个名为.nav2的类样式,表示第二个导航栏区域
.nav2 {
    // 设置导航栏背景颜色为#00da91(绿色)
    background-color: #00da91;

    // 设置.nav2内的ul元素样式
    ul {
        // 设置字体大小为0以消除inline-block元素间的间距
        font-size: 0;

        // 在ul内部定义li元素样式
        li {
            // 每个li元素宽度为父容器宽度的20%
            width: 20%;
            // 设置行高为50px
            line-height: 50px;
            // 显示方式设为inline-block以便于控制布局
            display: inline-block;

            /* 使用媒体查询,在屏幕宽度小于等于960px时调整li元素的宽度 */
            @media(max-width: 960px) {
                // 将每个li元素宽度调整为父容器宽度的33.33%
                width: 33.33%;
            }
        }

    }
}

三、float: left;

在CSS中主要用于浮动元素,最早用于文本环绕图片的排版,后来被广泛用于创建网页的多列布局。该属性的历史可以追溯到CSS1规范(1996年)。

3.png

    <div class="nav3"  id="nav">
        <div class="row">
            <ul>
                <li class="on"><a href="#">首页</a></li>
                <li><a href="#">关于</a></li>
                <li><a href="#">联系</a>
                    <ul>
                        <li><a href="#">子目录</a></li>
                    </ul>
                </li>
                <li><a href="#">关于</a></li>
                <li><a href="#">联系</a></li>
            </ul>
        </div>
    </div>

css代码(less写法)

// 定义一个名为.nav3的类样式,表示第三个导航栏区域
.nav3 {
    // 设置导航栏背景颜色为#004bd6(深蓝色)
    background-color: #004bd6;

    // 设置.nav3内的ul元素样式
    ul {

        /* 使用媒体查询,在屏幕宽度小于等于960px时调整ul高度和添加overflow属性 */
        @media(max-width: 960px) {
            // 当屏幕变小时,将ul的高度设为auto并隐藏溢出内容
            height: auto;
            overflow: hidden;
        }

        // 在ul内部定义li元素样式
        li {
            // 每个li元素宽度为父容器宽度的20%
            width: 20%;
            // 浮动方式设为left,以便于创建水平排列的导航菜单
            float: left;

            /* 使用媒体查询,在屏幕宽度小于等于960px时调整li元素的宽度 */
            @media(max-width: 960px) {
                // 将每个li元素宽度调整为父容器宽度的33.33%
                width: 33.33%;
            }
        }


    }
}

四、display: grid;

又名网格布局,是CSS3中另一个重要布局模块,比Flexbox晚些时候引入。Grid布局提供了一个真正的二维布局系统,允许开发者轻松创建复杂的自适应网页布局。这个特性从2011年起开始标准化,并在2017年后得到了主要浏览器的广泛支持。

4.png

    <div class="nav4"  id="nav">
        <div class="row">
            <ul>
                <li class="on"><a href="#">首页</a></li>
                <li><a href="#">关于</a></li>
                <li><a href="#">联系</a>
                    <ul>
                        <li><a href="#">子目录</a></li>
                    </ul>
                </li>
                <li><a href="#">关于</a></li>
                <li><a href="#">联系</a></li>
            </ul>
        </div>
    </div>

css代码(less写法)

// 定义一个名为.nav4的类样式,表示第四个导航栏区域
.nav4 {
    // 设置导航栏背景颜色为#008bc7(深蓝色)
    background-color: #008bc7;

    // 设置.nav4内的ul元素样式
    ul {
        // 使用CSS Grid布局,并设置初始情况下有5列(每列自适应宽度)
        display: grid;
        grid-template-columns: auto auto auto auto auto;

        /* 使用媒体查询,在屏幕宽度小于等于960px时调整Grid布局列数 */
        @media(max-width: 960px) {
            // 当屏幕变小时,将Grid布局列数改为3列
            grid-template-columns: auto auto auto;
        }
    }
}

效果演示

点击查看效果演示

    文档如有描述不清楚、错误或者过时的地方,欢迎留言指出。

    文档、教程内容会不定时更新,转载请标明原帖链接,以免让过时的教程流入网络。

    分享给朋友:

    “html+css实现行内对齐的4种方法” 的相关文章

    Web应用开发知识点总括

    HTML5+CSS31、HTML基础标签2、HTML5新特性3.HTML5本地存储4.CSS基础语法5.盒子模型6.浮动与定位7.CSS3新特性8.弹性盒子9.媒体查询JavaScript1.JavaScript基础语2.DOM与BOM3.JavaScript内置对象4.JavaScript事件5....

    什么是原型图

    原型图是在产品设计阶段用来展示未来产品界面布局、功能按键交互以及基本操作流程的一种可视化工具。它是产品在最终开发前的一个简化版本或框架,目的是让初步的产品概念能够以图形化的方式展现出来,从而帮助团队成员、利益相关者更好地理解和讨论设计方案。原型图的类型根据复杂程度,原型图可以分为几种不同的类型:低保...