移动web开发布局模式(单独制作移动端界面二)之媒体响应与rem布局

单独制作移动端界面布局方式(媒体响应与rem布局)

1. rem基础

概念:不同的是rem的基准是相对于html元素的字体大小。

/* 根html 为 12px */
html {
   font-size: 12px;
}
/* 此时 div 的字体大小就是 24px */       
div {
    font-size: 2rem;
}

优势:rem的优点就是可以通过修改html里面的文字大小来改变页面中元素的大小可以整体控制。

2. 媒体响应

2.1 媒体响应基本使用

  • @media 可以针对不同的屏幕尺寸设置不同的样式
  • 当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面
    语法
@media mediatype and|not|only (media feature) {
    CSS-Code;
}

1.mediatype 媒体类型
在这里插入图片描述
2.关键字 and not only

  • and:可以将多个媒体特性连接到一起,相当于“且”的意思。
  • not:排除某个媒体类型,相当于“非”的意思,可以省略。
  • only:指定某个特定的媒体类型,可以省略。

3.媒体特性(根据不同媒体类型的媒体特性设置不同的展示风格)
在这里插入图片描述

2.2 媒体响应使用案例(媒体查询与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;
        }
        /* html {
            font-size: 100px;
        } */
        /* 从小到大的顺序 */        
        @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: green;
            color: #fff;
            text-align: center;
            line-height: 1rem;
        }
    </style>
</head>
<body>
    <div class="top">购物车</div>
</body>
</html>

3. Less

3.1 Less安装与使用

1.Less介绍:
Less(LeanerStyle Sheets 的缩写)是一门 CSS扩展语言,也成为CSS预处理器。它在CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能。
常见的CSS预处理器:Sass、Less、Stylus

2.Less安装:
①安装nodejs,可选择版本(8.0),网址:http://nodejs.cn/download/

②检查是否安装成功,使用cmd命令(win10是window+r 打开运行输入cmd) —输入“node –v”查看版本即可

③基于nodejs在线安装Less,使用cmd命令“npm install -g less”即可

④检查是否安装成功,使用cmd命令“ lessc -v ”查看版本即可
3.Less 编译 vocode Less 插件
Easy LESS 插件用来把less文件编译为css文件;只要保存一下Less文件,会自动生成CSS文件。
4. Less运算

  • 变量必须有@为前缀
  • 运算符中间左右有个空格隔开 1px + 5
  • 对于两个不同的单位的值之间的运算,运算结果的值取第一个值的单位
  • 如果两个值之间只有一个值有单位,则运算结果就取该单位

3.2 Less案例

代码如下:

@baseFont: 50px;//变量
html {
    font-size: @baseFont;
}
@border: 5px + 5;//运算
div {
    width: 200px - 50;
    height: (200px + 50px ) * 2;
    border: @border solid red;
    background-color: #666 - #222;
}
img {
    width: 82rem / @baseFont;
    height: 82rem / @baseFont;
}
.header {
    width: 200px;
    height: 200px;
    background-color: pink;
    // 1. less嵌套 子元素的样式直接写到父元素里面就好了
    a {
        color: red;
        // 2. 如果有伪类、交集选择器、 伪元素选择器 我们内层选择器的前面需要加&
        &:hover {
            color: blue;
        }
    }
}

4. rem布局(两种方案)

1.让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备。

2.使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化,从而达到等比缩放的适配。

4.1 Less+rem+媒体查询

总结:

①最后的公式:页面元素的rem值 = 页面元素值(px) / (屏幕宽度 / 划分的份数)

②屏幕宽度/划分的份数就是 htmlfont-size 的大小

③或者:页面元素的rem值 = 页面元素值(px) / html font-size 字体大小
案例:
1.设置公共common.less文件(然后由主css文件引入)

  • 新建common.less 设置好最常见的屏幕尺寸,利用媒体查询设置不同的html字体大小。
// 设置常见的屏幕尺寸 修改里面的html文字大小
a {
    text-decoration: none;
}
// 一定要写到最上面
html {
    font-size: 50px;
}
// 我们此次定义的划分的份数 为 15
@no: 15;
// 320
@media screen and (min-width: 320px) {
    html {
        font-size: 320px / @no;
    }
}
// 360
@media screen and (min-width: 360px) {
    html {
        font-size: 360px / @no;
    }
}
// 375 iphone 678
@media screen and (min-width: 375px) {
    html {
        font-size: 375px / @no;
    }
}
// 384
@media screen and (min-width: 384px) {
    html {
        font-size: 384px / @no;
    }
}
// 400
@media screen and (min-width: 400px) {
    html {
        font-size: 400px / @no;
    }
}
// 414
@media screen and (min-width: 414px) {
    html {
        font-size: 414px / @no;
    }
}
// 424
@media screen and (min-width: 424px) {
    html {
        font-size: 424px / @no;
    }
}
// 480
@media screen and (min-width: 480px) {
    html {
        font-size: 480px / @no;
    }
}
// 540
@media screen and (min-width: 540px) {
    html {
        font-size: 540px / @no;
    }
}
// 720
@media screen and (min-width: 720px) {
    html {
        font-size: 720px / @no;
    }
}
// 750
@media screen and (min-width: 750px) {
    html {
        font-size: 750px / @no;
    }
}

index.less引入common.less

// 首页的样式less文件
@import "common";
// @import 导入的意思 可以把一个样式文件导入到另外一个样式文件里面

4.2 Iflexible.js+rem

1.手机淘宝团队出的简洁高效 移动端适配库;我们再也不需要在写不同屏幕的媒体查询,因为里面js做了处理。
2.它的原理是把当前设备划分为10等份,但是不同设备下,比例还是一致的。我们只需要确定好我们当前设备的html 文字大小就可以了;剩余的,让flexible.js来去算。
总结:

  • flexible是默认将屏幕分为10等分。
  • 当屏幕大于750的时候希望不要再去重置html字体了;所以要自己通过媒体查询设置一下,并且要把权重提到最高。

第一种需要自行设置不同设备的阈值,与第一种方式不同的是,第二种方式可以自己适配屏幕的大小,自动做出变化,所以更加的简洁高效。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值