Day03移动Web

293 阅读2分钟

Day03 移动web

移动端特点

移动端和PC端网页不同点

1、PC端网页和移动端网页的有什么不同?

​ 1.PC屏幕大,网页固定版心

​ 2.手机屏幕小,网页宽度多数为100%

2、如何在电脑里面边写代码边调试移动端网页效果?

​ 1.谷歌模拟器

谷歌模拟器

1647824983941.png 1、1647826715252.png 2、1647826813426.png 3、1647826548385.png

分辨率

屏幕尺寸

​ 指的是屏幕对角线的长度,一般用英寸来度量

1647825033789.png 了解移动端主流设备分辨率

1647825112509.png 分辨率分类

  • ​ 物理分辨率是生产屏幕时就固定的,它是不可被改变的
  • ​ 逻辑分辨率是由软件(驱动)决定的

思考:制作网页参考物理分辨率还是逻辑分辨率?

​ 逻辑分辨率

1647825214369.png

视口 — meta

1647825252330.png

使用meta标签设置视口宽度,制作适配不同设备宽度的网页

  • 手机屏幕尺寸都不同,网页宽度为100%
  • 网页的宽度和逻辑分辨率尺寸相同。

思考:默认情况下,网页的宽度和逻辑分辨率相同吗?

​ 不同,默认网页宽度是980px。

1.目标:网页宽度和设备宽度(分辨率)相同。

2.解决办法:添加视口标签。

3.视口:显示HTML网页的区域,用来约束HTML尺寸。

1、viewport:视口

2、width=device-width:视口宽度=设备宽度

3、initial-scale=1.0:缩放1倍(不缩放)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <!-- 有以下的这段代码    理想视口  现在常用 -->
    <!-- 没有以下的这段代码  老网页  布局视口 -->
    <!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
    <meta 
    name="viewport" 
    content="width=device-width, initial-scale=1.0maximuminitial-scale=1,minmum-scale=1,user-scalable=no">    <title>03-理想视口</title>
    <style>
    *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    div{
        width: 100px;
        height: 100px;
        background-color: aqua;
    }
    </style>
</head>
<body>
<div>理想视口</div>
</body>
</html>

二倍图

  • ​ 现阶段设计稿参考iPhone6/7/8,设备宽度375px产出设计稿。
  • ​ 二倍图设计稿尺寸:750px。

1647825519048.png

百分比布局

  • 百分比布局,也叫流式布局
  • 效果:宽度自适应,高度固定。

1647825661936.png

Flex布局

Flex布局/弹性布局:

  • 是一种浏览器提倡的布局模型
  • 布局网页更简单、灵活
  • 避免浮动脱标的问题

Flex布局模型构成

1647825759258.png

<!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>05-体验flex布局和float的异同</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        /* 
        1.设置 div 变成flex 盒子 弹性flex
        display:flex; df
        2.div中子元素 发生一些改变
            1.设置了flex的盒子 称为父项
            2.盒子里面的子元素  称为子项
        3.具体变化
            1.不再区分什么 块级行内和行内块 全部都可以设置宽度和高度
            2.子项 默认的宽度和高度
                宽度 由内容撑开
                高度 等于父项的高
            3.子项
                使用 浮动有没有效果  无效
                使用 定位、margin、trandform 都有效的
            4.默认情况下 子项总宽度大于 父项的宽
                也不会换行!!! flex不会换行
                只会压缩自身的宽度而已
            */
        div{
            width: 300px;
            height: 300px;
            background-color: aqua;
            margin: 200px auto;
        /* 设置div变成 */
            /* display: flex; */
         }
        span{
            width: 100px;
            height: 100px;
            background-color: yellow;
        }
       
    </style>
</head>
<body>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
    </div>
</body>
</html>

主轴对齐方式

思考:网页中,盒子之间有距离吗?

答:有。

在Flex布局模型中,调节主轴或侧轴的对齐方式来设置盒子之间的间距。

修改主轴对齐方式属性: justify-content

1647825937445.png

1647825965878.png

<!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>05-体验flex布局和float的异同</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
       /* 
       flex布局 存在 主轴 侧轴(类似excel)
       1.主轴 = x轴 = 水平方向
       2.侧轴 = y轴 = 垂直方向
       3.给父项添加的 父项中设置 主轴对齐方式
       */
        div{
            width: 600px;
            height: 600px;
            background-color: aqua;
            margin: 200px auto;
            display: flex;
            /* 
            设置主轴对齐方式
            1.左对齐 flex-start
            2.右对齐 flex-end
            3.居中对齐 center
            4.先侧轴对齐,间隔存放 space-between;   sb
            5.间隔存放 - 两侧空间小于中间   space-around  sd
            6.绝对平均  space-evenly    sv
            */
            justify-content: space-evenly;
         }
        span{
            width: 100px;
            height: 100px;
            background-color: yellow;
        }
       
    </style>
</head>
<body>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
    </div>
</body>
</html>

侧轴对齐方式 - align-items

1647826042629.png

修改侧轴对齐方式属性:

  • align-items(添加到弹性容器)
  • align-self:控制某个弹性盒子在侧轴的对齐方式(添加到弹性盒子)

1647826075525.png

<!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>07-侧轴对齐方式</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        div{
            width: 600px;
            height: 600px;
            background-color: aqua;
            margin: 200px auto;
            display: flex;
            /* 
            侧轴对齐(设置元素  上下的位置) align-itmes
            1.flex-start 上对齐
            2.flex-end 下对齐
            3.center  垂直居中
            */
            align-items: center;
        }
        span{
            width: 100px;
            height: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
    </div>
</body>
</html>

flex

属性

  • flex : 值;
  • 取值分类
  • 数值(整数)

注意: 只占用父盒子剩余尺寸

1647826164480.png

<!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>09-换行</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        div{
            width: 600px;
            height: 600px;
            background-color: aqua;
            margin: 200px auto;
            display: flex;
            /* 
            默认情况下
            1.flex不会换行的!!
            当子元素的总宽度大于父元素的时候 不会换行
            只会 挤压子元素的宽度!

            2.设置 换行属性!
            flex-wrap
            1.nowrap    不换行

            */
            flex-wrap: wrap;
        }
        span{
            width: 100px;
            height: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span>7</span>
        <span>8</span>
    </div>
</body>
</html>

<!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>10-设置主轴方向</title>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        div{
            width: 600px;
            height: 600px;
            background-color: aqua;
            margin: 200px auto;
            display: flex;
            /* 
            修改主轴方向 flex-direction
            1.row 默认值 水平方向 从左到右  少用
            2.row-reverse 从右到左  少用  了解
            3.column 从上到下   会用
            4.column-reverse 从下到上   少用  了解
            */
            flex-direction: column;
            /* 设置主轴对齐方式 */
            justify-content: space-around;
        }
        span{
            width: 100px;
            height: 100px;
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div>
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span>7</span>
        <span>8</span>
    </div>
</body>
</html>
<!-- 
    理解  flex 是可以修改主轴方向
    理解 当主轴方向修改了之后
        设置主轴对齐属性 效果也会跟着发生改变
        justify-content
        align-items
        
 -->