移动端(四)rem与媒体查询@media适配布局

rem

  • rem (root em)是一个相对单位,类似于em,em是父元素字体大小
  • 不同的是rem的基准是相对于html元素的字体大小
  • 比如,根元素(html)设置font-size=12px; 非根元素设置width:2rem; 则换成px表示就是24px。
  • rem的优势:父元素文字大小可能不一致, 但是整个页面只有一个html,可以很好来控制整个页面的元素大小
/* 根html 为 12px */
html {
 font-size: 12px;
}/* 此时 div 的字体大小就是 24px */ 
div {
 font-size: 2rem;
}

px转rem转换插件

  • 开发过程中,可借助vscode的插件px to rem,写px会自动转换为rem

媒体查询

  • 媒体查询(Media Query)是CSS3新语法。
  • 使用 @media 查询,可以针对不同的媒体类型定义不同的样式
  • @media 可以针对不同的屏幕尺寸设置不同的样式
  • 当重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面

媒体查询语法

@media mediatype and|not|only (media feature) {
 CSS-Code;
}
  • 用 @media 开头 注意@符号
  • mediatype 媒体类型
    • 将不同的终端设备划分成不同的类型,称为媒体类型
      移动端(四)rem与媒体查询@media适配布局
  • 关键字 and not only
    • and:可以将多个媒体特性连接到一起,相当于“且”的意思
    • not:排除某个媒体类型,相当于“非”的意思,可以省略
    • only:指定某个特定的媒体类型,可以省略
  • media feature 媒体特性 必须有小括号包含
    • 每种媒体类型都具体各自不同的特性,根据不同媒体类型的媒体特性设置不同的展示风格
      移动端(四)rem与媒体查询@media适配布局
  • 如:
@media screen and (max-width: 800px) {
    body {
        background-color: pink;
    }
}

@media screen and (max-width: 500px) {
    body {
        background-color: purple;
    }
}

rem + 媒体查询适配布局

  • rem单位是跟着html来走的,有了rem页面元素可以设置不同大小尺寸
  • 媒体查询可以根据不同设备宽度来修改样式
  • 媒体查询+rem 就可以实现不同设备宽度,实现页面元素大小的动态变化
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <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 {
            height: 1rem;
            font-size: .5rem;
            background-color: red;
            color: #fff;
            text-align: center;
            line-height: 1rem;
        }
    </style>
</head>
<body>
    <div class="top">我的</div>
</body>
</html>

适配方案

  • 首先选一套标准尺寸, 750为准
  • 用屏幕尺寸 除以 划分的份数 得到了 html 里面的文字大小 但是我们知道不同屏幕下得到的文字大小是不一样的
  • 页面元素的rem值 = 页面元素在 750像素的下px值 / html 里面的文字大小

元素大小取值方法

  • 最后的公式: 页面元素的rem值 = 页面元素值(px) / (屏幕宽度 / 划分的份数)
  • 屏幕宽度/划分的份数 就是 html 中 font-size 的大小
  • 或者: 页面元素的rem值 = 页面元素值(px) / html font-size 字体大小
上一篇:Debian 添加 Dlna功能


下一篇:js视频轮播