6.移动端布局-rem布局

1.rem基础

优点:可以通过修改html里边文字的大小来改变页面中其他元素的大小,可以实现整体控制

1.1 rem单位

rem(root em)是一个相对单位,类似于em。
em是相对于自身元素字体大小(若自身没有设置font-size则基础父元素的字体大小)。
不同的是rem的基准是相对于html元素的字体大小。
比如根元素html设置font-size是12px,非根元素设置width:2em,则换成px就是24px
em演示

<!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>Document</title>
    <style>
        div{
            font-size: 12px;
        }
        p{
            width: 10em;
            height: 10em;
            font-size: 13px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div>
        <p>1</p>
    </div>
</body>
</html>

在这里插入图片描述
rem演示:

<!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>Document</title>
    <style>
        html{
            font-size: 18px;
        }
        div{
            font-size: 12px;
        }
        p{
            width: 10em;
            height: 10em;
            font-size: 13px;
            background-color: pink;
        }
        .p2{
            width: 10rem;
            height: 10rem;
            font-size: 13px;
            background-color: orange;
        }
    </style>
</head>
<body>
    <div>
        <p>1</p>
    </div>
    <div>
        <p class="p2">2</p>
    </div>
</body>
</html>

在这里插入图片描述

2.媒体查询

2.1 什么是媒体查询

媒体查询(Media Query)是css3新语法

  • 媒体查询可以@media可以针对不同屏幕尺寸设置不同样式
  • 使用@media查询,可以针对不同的媒体类型定义不同的样式
  • 当重置浏览器大小的过程中,页面会根据浏览器的宽度、高度重新渲染页面
  • 目前针对很多苹果、安卓、平板等设备都用到媒体查询

2.2 媒体查询的用法

@media mediatype and|not|only|(media feature){
	CSS-code;
}

  • 用@ media开头
  • media是媒体类型
说明
all用于所有设备
print用于打印机和打印预览
screen用于电脑屏幕、平板电脑、智能手机等
  • 关键字:and\not\only,将媒体类型或多个媒体特性连接到一起作为媒体查询的条件
    and:可以将多个媒体特性连接到一起,相当于“且”的意思
    not:排除某个媒体类型,相当于“非”,可以省略
    only:指定某个特定的媒体类型,可以省略
  • media feature 媒体特性必须由小括号包含
    每种媒体类型都有自己不同的特性,根据不同媒体类型设置不同展示风格,先了解三种
解释说明
width定义输出设备中页面可见区域的宽度
min-width定义输出设备中页面最小可见区域的宽度
max-width定义输出设备中页面最大可见区域的宽度

2.2.1 练习展示

  • 为了防止混乱,媒体查询可以按照从小到大或从大到小的顺序来写。更喜欢从小到大(min-width),从大到小(max-width),这样更简洁(层叠性)
  • screen和and还有px单位必须要有
<!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>Document</title>
    <style>
        /* 在屏幕上并且屏幕最大宽度是800px,设置样式
        ps:意思是如果当前屏幕宽度超出800px,则不会展示这里设置的样式 */
        @media screen and (max-width:800px) {
            body{
                background-color: orange;
            }
        }

        @media screen and (max-width:500px) {
            body{
                background-color: green;
            }
        }
    </style>
</head>
<body>
    
</body>
</html>

屏幕宽度大于800px,背景色设置不生效
大于800px

屏幕宽度小于等于800px,背景是橘黄色
小于等于800px

屏幕宽度小于等于500px,背景是绿色
小于等于500px

2.3 媒体查询+rem实现元素动态大小变化

<!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>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        @media screen and (min-width:320px){
            html{
                font-size: 50px;
            }
        }
        @media screen and (min-width:640px) {
            html{
                font-size:100px;
            }
        }   
        .top{
            background-color: green;
            font-size: 0.5rem;
            height: 1rem;
            line-height:1rem;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="top">
        加入购物车
    </div>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

2.4 媒体查询-引入资源

场景:大屏和小屏的样式不同
解决:针对不同的媒体使用不同的样式表stylesheets
原理:直接在link中判断设备尺寸,然后引用不同的css文件
语法:

<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="xx.css">

练习:
当屏幕大于等于640px,div一行展示2个,当屏幕小于640px,让div一行显示一个

<!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>Document</title>
    <link rel="stylesheet" href="style320.css" media="screen and (min-width:320px)">
    <link rel="stylesheet" href="style640.css" media="screen and (min-width:640px)">
</head>
<body>
    <div></div>
    <div></div>
</body>
</html>

在这里插入图片描述
style320.css:

div{
    width: 100%;
    height: 100px;
}
div:nth-child(1){
    background-color: green;
}
div:nth-child(2){
    background-color: orange;
}

style640.css

div{
    width: 50%;
    height: 100px;
    float: left;
}
div:nth-child(1){
    background-color: green;
}
div:nth-child(2){
    background-color: orange;
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值