续 模块一 移动端

7.移动Web开发flex布局

flex布弹性布局

  • 操作方便,布局极为简单,移动端应用很广泛

  • PC端浏览器支持情况较差心

  • IE11或更低版本,不支持或仅部分支持

传统布局

  • 兼容性好

  • 布局繁琐

  • 局限性,不能再移动端很好的布局

建议︰ 1.如果是PC端页面布局,我们还是传统布局。 2.如果是移动端或者不考虑兼容性问题的PC端页面布局,我们还是使用flex弹性布局。

7.1flex布局体验

代码块:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局体验</title>
    <style>
        div{
            display: flex;
            justify-content: space-around;
            width: 80%;
            height: 300px;
            background-color: pink;
        }
        div span{
            /* width: 150px; */
            height: 150px;
            margin-right: 5px;
            background-color: palegreen;
            flex: 1;
        }
    </style>
</head>
<body>
    <div>
        <span></span>
        <span></span>
        <span></span>
    </div>
</body>
</html>

效果图:

7.2 flex布局原理

  1. flex是flexible Box的缩写,意为"弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局。

  • 当我们为父盒子设为flex布局以后,子元素的float、clear和vertical-align属性将失效。

  • 伸缩布局=弹性布局=伸缩盒布局=弹性盒布局=flex布局

  1. 采用Flex布局的元素,称为Flex容器( flex container ),简称"容器"。它的所有子元素自动成为容器成员,称为Flex项目( flex item ),简称"项目"。

  • 体验中div就是flex父容器

  • 体验中span就是子容器flex项目

  • 子容器可以横向排列也可以纵向排列

总结flex布局原理∶ 就是通过给父盒子添加flex属性,来控制子盒子的位置和排列方式

7.3 flex布局父项常见属性

3.1常见父项属性

以下由6个属性是对父元素设置的

  • flex-direction :设置主轴的方向

  • justify-content :设置主轴上的子元素排列方式flex-wrap:设置子元素是否换行

  • align-content :设置侧轴上的子元素的排列方式(多行)

  • align-items :设置侧轴上的子元素排列方式(单行)

  • flex-flow :复合属性,相当于同时设置了flex-direction和flex-wrap

3.2 flex-direction设置主轴的方向★1.主轴与侧轴

在flex布局中,是分为主轴和侧轴两个方向,同样的叫法有︰行和列、x轴和y轴

  • 默认主轴方向就是x轴方向,水平向右

  • 默认侧轴方向就是y轴方向,水平向下

3.2 flex-direction设置主轴的方向★⒉属性值

flex-direction属性决定主轴的方向(即项目的排列方向)

注意∶主轴和侧轴是会变化的,就看flex-direction设置谁为主轴,剩下的就是侧轴。而我们的子元素是跟着主轴来排列的

测试案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局体验</title>
    <style>
        div{
            /* 给父级添加flex属性 */
            display: flex;
            width: 800px;
            height: 300px;
            background-color: pink;
            /* 默认的主轴是 X 轴 行 row 那么y轴就是侧轴喽*/
            /* 我们元素是跟着主轴来排列的 */
            /* flex-direction: row; */
            /* 了解一下 翻转 */
            /* flex-direction: row-reverse; */
            /* 我们可以把我们的主轴设置为 y轴  那么 x 轴就成了侧轴 */
            flex-direction: column;
        }
        div span{
            /* width: 150px; */
            height: 150px;
            margin-right: 5px;
            background-color: palegreen;
            /* flex: 1; */
        }
    </style>
</head>
<body>
    <div>
        <span></span>
        <span></span>
        <span></span>
    </div>
</body>
</html>

3.3 justify-content设置主轴上的子元素排列方式★

justify-content属性定义了项目在森轴上的对齐方式

注意:使用这个属性之前一定要确定好主轴是哪个

  1. flex-start默认值从头部开始如果主轴是x轴,则从左到右

  2. flex-end从尾部开始排列

  3. center在主轴居中对齐(如果主轴是x轴则水平居中)

  4. space-around平分剩余空间

  5. space-between先两边贴边再平分剩余空间(重要)

测试案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex设置主轴上的元素排列方式1</title>
    <style>
        div{
            /* 给父级添加flex属性 */
            display: flex;
            width: 800px;
            height: 300px;
            background-color: pink;
            /* 默认的主轴是 X 轴  row */
            flex-direction: row;
            /* justify-content :是设置主轴上子元素的排列方式 */
            /* 默认值从头部开始如果主轴是x轴,则从左到右 */
            /* justify-content: flex-start; */
            /* 从尾部开始排列 */
            /* justify-content: flex-end; */
            /* 让子元素居中对齐 */
            /* justify-content: center; */
            /* 平分剩余空间 */
            /* justify-content: space-around; */
            /* 先两边贴边再平分剩余空间(重要) */
            justify-content: space-between;
        }
        div span{
            /* width: 150px; */
            height: 150px;
            margin-right: 5px;
            background-color: palegreen;
            /* flex: 1; */
        }
    </style>
</head>
<body>
    <div>
        <span></span>
        <span></span>
        <span></span>
    </div>
</body>
</html>

测试案例2:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局体验</title>
    <style>
        div{
            /* 给父级添加flex属性 */
            display: flex;
            width: 800px;
            height: 300px;
            background-color: pink;
            /* 下载得主轴是 Y 轴  column */
            flex-direction: column;
            /* justify-content :是设置主轴上子元素的排列方式 */
            /* 默认值从头部开始如果主轴是x轴,则从左到右 */
            /* 让子元素居中对齐 */
            /* justify-content: center; */
            /* 先两边贴边再平分剩余空间(重要) */
            justify-content: space-between;
        }
        div span{
            /* width: 150px; */
            height: 150px;
            margin-right: 5px;
            background-color: palegreen;
            /* flex: 1; */
        }
    </style>
</head>
<body>
    <div>
        <span></span>
        <span></span>
        <span></span>
    </div>
</body>
</html>

3.4 flex-wrap设置子元素是否换行★

默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,flex布局中默认是不换行的。

测试案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局体验</title>
    <style>
        div{
            /* 给父级添加flex属性 */
            display: flex;
            width: 800px;
            height: 300px;
            background-color: pink;
            /* flex布局中,默认的子元素是不换行的,如果装不开,会缩小元素的宽度,放到父元素里面 */
            /* 默认不换行 */
            /* flex-wrap: nowrap; */
            /* 换行 */
            flex-wrap: wrap;
        }
        div span{
            width: 150px;
            height: 150px;
            margin-right: 5px;
            background-color: palegreen;
        }
    </style>
</head>
<body>
    <div>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
</body>
</html>

3.5 align-items设置侧轴上的子元素排列方式(单行)★

该属性是控制子项在侧轴(默认是y轴)L的排列方式在子项为单项的时候使用

  1. flex-start从上到下

  2. flex-end从下到上

  3. center挤在一起居中(垂直居中)

  4. stretch拉伸(默认值)

测试案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局体验</title>
    <style>
        div{
            /* 给父级添加flex属性 */
            display: flex;
            width: 800px;
            height: 300px;
            background-color: pink;
            /* 默认的主轴是 X 轴 row */
            justify-content: center;
            /* 我们需要一个侧轴居中 */
            align-items: center;
        }
        div span{
            width: 150px;
            height: 150px;
            background-color: palegreen;
            margin: 10px;
        }
    </style>
</head>
<body>
    <div>
        <span></span>
        <span></span>
        <span></span>
    </div>
</body>
</html>

3.6 align-content设置侧轴上的子元素的排列方式(多行)

设置子项在侧轴上的排列方式并且只能用于子项出现换行的情况(多行),在单行下是没有效果的。

  1. flex-start默认值在侧轴的头部开始排列

  2. flex-end在侧轴的尾部开始排列

  3. center在侧轴中间显示

  4. space-around子项在侧轴平分剩余空间

  5. space-between子项在侧轴先分布在两头,再平分剩余空间

  6. stretch设置子项元素高度平分父元素高度

3.7 flex-flow

flex-flow属性是flex-direction和flex-wrap属性的复合属性

flex-flow: row wrap;
  1. flex-direction :设置主轴的方向

  2. justify-content :设置主轴上的子元素排列方式flex-wrap:设置子元素是否换行

  3. align-content :设置侧轴上的子元素的排列方式(多行)align-items :设置侧轴上的子元素排列方式(单行)

  4. flex-flow :复合属性,相当于同时设置了flex-direction和flex-wrap

7.4 flex布局子项常见属性

  • flex子项目占的份数·

  • align-self控制子项自己在侧轴的排列方式·

  • order孱性定义子项的排列顺序(前后顺序)

4.1 flex属性

flex属性定义子项目分配剩余空间,用flex来表示占多少分数。

.item{
    flex:<number>;  /* default 0 */
}

测试案例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局体验</title>
    <style>
        section{
            /* 给父级添加flex属性 */
            display: flex;
            width: 60%;
            height: 150px;
            background-color: pink;
            margin: 0 auto;
        }
        section div:nth-child(1){
            width: 100px;
            height: 150px;
            background-color: palegreen;
        }
        section div:nth-child(2){
            flex:1;
            background-color: plum;
        }
        section div:nth-child(3){
            width: 100px;
            height: 150px;
            background-color: papayawhip;
        }
​
​
        
        p{
            /* 给父级添加flex属性 */
            display: flex;
            width: 60%;
            height: 150px;
            background-color: pink;
            margin: 100px auto;
        }
        p span{
            flex: 1;
        }
        p span:nth-child(2){
            flex: 2;
            background-color: plum;
        }
    </style>
</head>
<body>
    <section>
        <div></div>
        <div></div>
        <div></div>
    </section>
    <p>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </p>
</body>
</html>

4.2 align-self 控制子项自己在侧轴上的排列方式

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

span:nth-child(2) {
    /*设置自己在侧轴上的排列方式*/
    align-self: flex-end;
}

测试案例:

<!DOCTYPE html>
<html lang="en">
​
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局体验</title>
    <style>
        div {
            /* 给父级添加flex属性 */
            display: flex;
            width: 80%;
            height: 150px;
            background-color: pink;
            margin: 0 auto;
        }
​
        div span {
            width: 150px;
            height: 100px;
            background-color: palegreen;
            margin-right: 5px;
        }
        div span:nth-child(3){
            align-self: flex-end;
        }
    </style>
</head>
​
<body>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>
</body>
​
</html>

4.3 order属性定义项目的排列顺序

数值越小,排列越靠前,默认为0。

注意:和z-index不一样。

测试案例:

<!DOCTYPE html>
<html lang="en">
​
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>flex布局体验</title>
    <style>
        div {
            /* 给父级添加flex属性 */
            display: flex;
            width: 80%;
            height: 150px;
            background-color: pink;
            margin: 0 auto;
        }
​
        div span {
            width: 150px;
            height: 100px;
            background-color: palegreen;
            margin-right: 5px;
        }
        div span:nth-child(2){
        /* -1比0小,所以span2会在span1前面 */
            order: -1;
        }
        div span:nth-child(3){
            align-self: flex-end;
        }
    </style>
</head>
​
<body>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
    </div>
</body>
​
</html>

模块一  移动端  第一季:模块一 移动端_KMINLIKE的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的移动 H5 新闻页的代码示例: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>移动H5新闻页</title> <style> /* 样式表 */ body { margin: 0; padding: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 16px; line-height: 1.5; } .container { max-width: 600px; margin: 0 auto; padding: 16px; } .headline { font-size: 24px; font-weight: bold; margin-bottom: 16px; } .author { font-size: 12px; color: #999; margin-bottom: 8px; } .date { font-size: 12px; color: #999; margin-bottom: 16px; } .image { width: 100%; margin-bottom: 16px; } .text { text-align: justify; } .source { font-size: 12px; color: #999; margin-top: 16px; text-align: center; } </style> </head> <body> <div class="container"> <!-- 新闻头部 --> <h1 class="headline">这里是新闻标题</h1> <div class="author">作者:某某某</div> <div class="date">发布时间:2023-02-27</div> <!-- 新闻图片 --> <img class="image" src="https://picsum.photos/600/400" alt="新闻配图"> <!-- 新闻正文 --> <div class="text"> <p>这里是新闻正文。Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent non mi mauris. Fusce rutrum orci sit amet felis luctus elementum. Nullam sodales auctor est, eget posuere lorem interdum sed. Vivamus pellentesque venenatis dolor, non suscipit velit. Vestibulum in odio nec tortor fringilla ultrices. Fusce nec lacus ultricies, eleifend arcu vitae, maximus diam. Aenean sit amet pharetra nulla. Proin a arcu mauris. Sed dictum mauris libero, eu rhoncus mi accumsan eu. Integer iaculis, nisi sit amet ultrices efficitur, magna orci consequat enim, eu interdum eros mauris at metus.</p> <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Integer ut bibendum metus. Duis a ipsum id nunc ultrices malesuada vel quis massa. Sed rhoncus lacinia tempor. Ut tempor efficitur tellus ac rhoncus. Nullam fermentum, velit et blandit pulvinar, arcu sapien aliquet risus, nec fermentum dolor arcu sed odio. In hac habitasse platea dictumst. Suspendisse euismod faucibus ultrices. Sed efficitur lorem ac tristique suscipit.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值