flex布局实例讲解,兄弟看flex布局案例 这一篇就够了!!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:主要内容 flex弹性布局以及css:

随着各式各样的移动端web端的出现,自适应屏幕大小就显得格外重要,flex布局就可以很好的解决这一类问题。


提示:以下是本篇文章正文内容

一、flex布局是什么?

Flexible Box 模型,通常被称为 flexbox,是一种一维的布局模型。它给 flexbox 的子元素之间提供了强大的空间分布和对齐能力。本文给出了 flexbox 的主要特性,更多的细节将在别的文档中探索。

不了解的小伙伴可以点击 flex布局详细解说 了解更多

二、flex 案例需求分析

(1)初始样式:

这是一张初始样式图片

<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title>爱V猫友情链接</title>
</head>
<body>

    <!--网页头部-->
    <header>
        <h1 class="headLeft">
            <a href="#"><img src="images/logo.jpg" alt="" /></a>
        </h1>
        <div class="headRight">
            <a href="#">登录</a>
            <a href="#" class="active">注册</a>
        </div>
    </header>
    <!--网页主体-->
    <section class="wrap">
        <div class="mian">
            <ul class="mianLeft">
                <li><a href="#">公司介绍</a></li>
                <li><a href="#">新闻动态</a></li>
                <li><a href="#">联系我们</a></li>
                <li><a href="#">招才纳士</a></li>
                <li><a href="#">用户协议</a></li>
                <li><a href="#">常见问题</a></li>
                <li><a href="#">合作伙伴</a></li>
                <li><a href="#">友情链接</a></li>
                <li><a href="#">网站地图</a></li>
                <li><a href="#">付费协议</a></li>
                <li><a href="#">使用说明</a></li>
            </ul>
            <section class="mianRight">
                <h2>友情链接</h2>
                <ul class="picList">
                    <li>
                        <a href="#"><img src="images/lk_logo01.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo02.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo03.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo04.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo05.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo06.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo07.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo08.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo09.jpg" alt="" /></a>
                    </li>
                </ul>
            </section>
        </div>
    </section>
    <!--网页底部-->
    <footer>
        <ul>
            <li><a href="#">公司介绍</a></li>
            <li><a href="#">新闻动态</a></li>
            <li><a href="#">联系我们</a></li>
            <li><a href="#">招商加盟</a></li>
            <li><a href="#">招商用户</a></li>
            <li><a href="#">协议合作伙伴</a></li>
            <li><a href="#">常见问题App</a></li>
            <li><a href="#">下载网站地图</a></li>
        </ul>
        <p>深圳云飞渡网络科技有限公司 版权所有 京ICP备13047874号</p>
        <p>Coppyright © 2018 iVmall All Rights Reserved</p>
    </footer>
</body>

</html>

(2)需求分析:

(1)需要整体布局为居中

(2)左侧边导航栏随着鼠标的进入改变背景颜色和字体颜色

(3)右侧边链接图片可以随着屏幕的大小自适应换行

(4)底部同样自适应并居中

(5)最终样式

最终效果

(3)案例讲解

(1)实现基础分块

(1)通过最终所要达到的效果图可以将其大致分为 header(头部块)main(内容块也叫主块,怎么好听怎么来)footer (底部块)竖向排列

header

(1)各个击破,先从 header 入手我们可以很清楚地知道 header 大致分为2个部分 一个是logo的展示,另一个是 登录注册 的操作链接横向排列,居中布局
(2)代码示例(css)

 header {
 		/*设置header为弹性布局盒子(父)*/
        display: flex; 
        /*盒子内块级元素排列方式为 space-around
         均匀排列每个元素每个元素周围分配相同的空间 */
        justify-content: space-around;
        /* 属性为弹性容器内的项目指定默认对齐方式,这里为center*/
        align-items: center;
 }

如果小伙伴们对flex属性不熟悉的话可以点击 flex属性详解 了解更多。

main

(1)main 是整体居中;因此我们需要给main一个宽度(这里推荐使用百分比),然后通过 flex的justify-content:center 设置整体居中布局。

/*.wrap 为.main 的父盒子*/
 .wrap {
 		/*设置盒子为弹性布局 flex*/
        display: flex;
  		/*设置盒子内子元素整体 居中*/
        justify-content: center;
        /*给定一个背景颜色*/
        background-color: aqua;
 }

(2) mian 我们同样可以很清楚地知道 main 大致分为2个部分 一个是侧边栏(mianLeft)的展示,另一个是 ** 友情链接图片(mianRight),整体横向排列,居中布局**;但是我们仔细看可以知道,
1:mianLeft 中是占整体父元素的1/3竖向排列 并且 li 和 a 标签的原生样式是没有的。

.mian .mianLeft {
		/*flex:1表示将父元素整体作为单位一 占这个单位一的 1/单位一*/
        flex: 1;
        text-align: center;
        background-color: rgb(239, 239, 239);
        padding-top: 40px;
    }
    
    .mian .mianLeft li {
        height: 30px;
        font-size: 18px;
        /*设置字体竖向排列居中 这里的 30px 和 父盒子的高度保持一致*/
        line-height: 30px;
        /*去掉 li 默认样式*/
        list-style-type: none;
    }
    
    /*选择鼠标指针浮动在其上的元素,并设置其样式:*/
/*提示::hover 选择器可用于所有元素,不只是链接。
提示::link 选择器设置指向未被访问页面的链接的样式,:visited 选择器用于设置指向已被访问的页面的链接,:active 选择器用于活动链接。
注释:在 CSS 定义中,:hover 必须位于 :link 和 :visited 之后(如果存在的话),这样样式才能生效。*/
    .mian .mianLeft li:hover {
    	/*鼠标指针移动到元素上面后 background-color :red*/
        background-color: red;
        color: #fff;
    }
    
    .mian .mianLeft li a:hover {
    	/*同上*/
        color: #fff;
    }
    
    a {
        text-decoration: none; /*去除a的下划线*/
        color: rgb(89, 89, 89);
    }

更多伪类可以点击 :hover详解

2:mianRight 中的图片链接是可以换行的 并且整体居中排列

 .mian .mianRight {
 		/*占整体父元素单位一的3份  3/单位一*/
 		/*同上 的 .mainLeft -> flex:1  可以知道整个单位一被平分为4分 mainLeft 占1份 mainRight 占3份*/
        flex: 3;
        background-color: #fff;
    }
    
    /*基础样式不做解析*/
    .mian .mianRight h2 {
        border-bottom: 1px rgb(164, 164, 164) solid;
        font-size: 40px;
        color: rgb(164, 164, 164);
        padding: 20px 0 20px 20px;
    }
    
    .mian .mianRight .picList {
        display: flex;
        width: 100%;
       /* justify-content 属性定义了浏览器之间,如何分配顺着弹性容器主轴 (或者网格行轴) 的元素之间及其周围的空间。*/
        justify-content: space-evenly;
        /*当父元素宽度不够容纳一行子元素的时候 自动换行*/
        flex-wrap: wrap;
    }
    
    .mian .mianRight .picList li {
     /*去掉 li 默认样式*/
        list-style-type: none;
     /*margin的简写*/
     /*margin: top right buttom left*/
        margin: 10px 0 10px 0;
    }
    
    .mian .mianRight .picList li img {
        width: 200px;
    }

如果小伙伴们对flex属性不熟悉的话可以点击 flex属性详解 了解更多。

footer

(1)footer 就是最简单的这里我们直接给出代码相信小伙伴们都能看懂
(2)代码示例(css)

 footer {
    /*字体居中*/
        text-align: center;
    }
    
    footer ul {
        display: flex;
        justify-content: center;
    }
    
    footer ul li {
        margin: 5px;
    }

(4)最终代码

<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title>爱V猫友情链接</title>
</head>

<style>
    * {
        margin: 0;
        padding: 0;
    }
    
    li {
        list-style-type: none;
    }
    
    header {
        display: flex;
        justify-content: space-around;
        align-items: center;
    }
    
    .wrap {
        display: flex;
        justify-content: center;
        background-color: aqua;
    }
    
    .wrap .mian {
        display: flex;
        width: 70%;
        margin: 10px 0 10px 0;
    }
    
    .mian .mianLeft {
        flex: 1;
        text-align: center;
        background-color: rgb(239, 239, 239);
        padding-top: 40px;
    }
    
    .mian .mianLeft li {
        height: 30px;
        font-size: 18px;
        line-height: 30px;
        list-style-type: none;
    }
    
    .mian .mianLeft li:hover {
        background-color: red;
        color: #fff;
    }
    
    .mian .mianLeft li a:hover {
        color: #fff;
    }
    
    a {
        text-decoration: none;
        color: rgb(89, 89, 89);
    }
    
    .mian .mianRight {
        flex: 3;
        background-color: #fff;
    }
    
    .mian .mianRight h2 {
        border-bottom: 1px rgb(164, 164, 164) solid;
        font-size: 40px;
        color: rgb(164, 164, 164);
        padding: 20px 0 20px 20px;
    }
    
    .mian .mianRight .picList {
        display: flex;
        width: 100%;
        justify-content: space-evenly;
        flex-wrap: wrap;
    }
    
    .mian .mianRight .picList li {
        list-style-type: none;
        margin: 10px 0 10px 0;
    }
    
    .mian .mianRight .picList li img {
        width: 200px;
    }
    
    footer {
        text-align: center;
    }
    
    footer ul {
        display: flex;
        justify-content: center;
    }
    
    footer ul li {
        margin: 5px;
    }
</style>

<body>

    <!--网页头部-->
    <header>
        <h1 class="headLeft">
            <a href="#"><img src="images/logo.jpg" alt="" /></a>
        </h1>
        <div class="headRight">
            <a href="#">登录</a>
            <a href="#" class="active">注册</a>
        </div>
    </header>
    <!--网页主体-->
    <section class="wrap">
        <div class="mian">
            <ul class="mianLeft">
                <li><a href="#">公司介绍</a></li>
                <li><a href="#">新闻动态</a></li>
                <li><a href="#">联系我们</a></li>
                <li><a href="#">招才纳士</a></li>
                <li><a href="#">用户协议</a></li>
                <li><a href="#">常见问题</a></li>
                <li><a href="#">合作伙伴</a></li>
                <li><a href="#">友情链接</a></li>
                <li><a href="#">网站地图</a></li>
                <li><a href="#">付费协议</a></li>
                <li><a href="#">使用说明</a></li>
            </ul>
            <section class="mianRight">
                <h2>友情链接</h2>
                <ul class="picList">
                    <li>
                        <a href="#"><img src="images/lk_logo01.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo02.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo03.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo04.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo05.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo06.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo07.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo08.jpg" alt="" /></a>
                    </li>
                    <li>
                        <a href="#"><img src="images/lk_logo09.jpg" alt="" /></a>
                    </li>
                </ul>
            </section>
        </div>
    </section>
    <!--网页底部-->
    <footer>
        <ul>
            <li><a href="#">公司介绍</a></li>
            <li><a href="#">新闻动态</a></li>
            <li><a href="#">联系我们</a></li>
            <li><a href="#">招商加盟</a></li>
            <li><a href="#">招商用户</a></li>
            <li><a href="#">协议合作伙伴</a></li>
            <li><a href="#">常见问题App</a></li>
            <li><a href="#">下载网站地图</a></li>
        </ul>
        <p>深圳云飞渡网络科技有限公司 版权所有 京ICP备13047874号</p>
        <p>Coppyright © 2018 iVmall All Rights Reserved</p>
    </footer>
</body>

</html>

欢迎小伙伴们留言讨论 当然也欢迎大佬改正错误 哈哈哈哈

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面我们来看一些Flex布局实例。 ## 实例一:水平居中 让一个元素在父容器中水平居中,可以使用以下方法: ```html <div class="container"> <div class="box">Hello World</div> </div> ``` ```css .container { display: flex; justify-content: center; align-items: center; height: 100vh; } .box { background-color: #ccc; padding: 20px; } ``` 解释: - `display: flex;`设置容器为Flex布局。 - `justify-content: center;`将子元素水平居中。 - `align-items: center;`将子元素垂直居中。 - `height: 100vh;`设置容器高度为100vh,保证子元素在垂直方向上居中。 ## 实例二:等分布局 让多个元素等分布局可以使用以下方法: ```html <div class="container"> <div class="box">1</div> <div class="box">2</div> <div class="box">3</div> </div> ``` ```css .container { display: flex; justify-content: space-between; } .box { flex: 1; background-color: #ccc; padding: 20px; margin: 0 10px; } ``` 解释: - `display: flex;`设置容器为Flex布局。 - `justify-content: space-between;`将子元素等间距排列。 - `flex: 1;`将子元素等分布局。 ## 实例三:垂直居中 让一个元素在父容器中垂直居中,可以使用以下方法: ```html <div class="container"> <div class="box">Hello World</div> </div> ``` ```css .container { display: flex; justify-content: center; align-items: center; height: 100vh; } .box { background-color: #ccc; padding: 20px; margin: auto; } ``` 解释: - `display: flex;`设置容器为Flex布局。 - `justify-content: center;`将子元素水平居中。 - `align-items: center;`将子元素垂直居中。 - `height: 100vh;`设置容器高度为100vh,保证子元素在垂直方向上居中。 - `margin: auto;`使元素在水平方向上居中。 ## 实例四:项目排序 使用Flex布局可以很方便地对项目进行排序,例如: ```html <div class="container"> <div class="box">1</div> <div class="box">2</div> <div class="box">3</div> <div class="box">4</div> <div class="box">5</div> </div> ``` ```css .container { display: flex; flex-wrap: wrap; } .box { flex: 1 0 200px; height: 100px; background-color: #ccc; margin: 10px; display: flex; justify-content: center; align-items: center; font-size: 24px; color: #fff; text-shadow: 1px 1px #000; } .box:nth-child(1) { order: 3; } .box:nth-child(2) { order: 1; } .box:nth-child(3) { order: 4; } .box:nth-child(4) { order: 2; } .box:nth-child(5) { order: 5; } ``` 解释: - `display: flex;`设置容器为Flex布局。 - `flex-wrap: wrap;`设置弹性容器的子元素在一行排不下时,自动换行。 - `flex: 1 0 200px;`设置子元素的伸缩比例为1,基准大小为0,最大值为200px。 - `margin: 10px;`设置子元素的外边距为10px。 - `order:`设置子元素的显示顺序。 以上就是一些Flex布局实例,希望对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值