移动端Web开发(一)移动端开发的基本概念

1.物理像素

物理像素(physical pixel)也叫设备像素(dp:device pixel),物理像素与设备相关,例如:19801080,1080720

2.CSS像素

CSS像素又称逻辑像素(logical pixel)或设备独立像素(dip:device independent pixel),它与设备无关,是实际开发中使用的像素,例如200px,100px
在这里插入图片描述

3.设备像素比

设备像素比(dpr:device pixel ratio)
dpr = 设备像素 / CSS像素(缩放比是1的情况下)
在这里插入图片描述
标清屏幕:dpr=1
高清屏幕:dpr>=2

4.缩放

缩放改变的是CSS像素的大小
放大:1CSS像素=1个物理像素 => 1CSS像素 = 22个物理像素
缩小:1CSS像素=1个物理像素 => 2
2CSS像素 = 1个物理像素

5.PPI

每英寸的物理像素点
ppi:pixels per inch
dpi:dots per inch
在这里插入图片描述

6.视口Viewport

<meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">

initial-scale:缩放比例
user-scalable:是否允许用户缩放
maximun-scale=1,minimun-scale=1:相当于不允许用户缩放

通过js获取视口宽度

console.log(window.innerWidth);
console.log(document.documentElement.clientWidth);
console.log(document.documentElement.getBoundingClientRect().width);

// 兼容性方案
var viewWidth = document.documentElement.clientWidth || window.innerWidth || document.documentElement.getBoundingClientRect().width;

通过js获取设备像素比

console.log(window.devicePixelRatio);

7.box-sizing

box-sizing有两个值:content-box(默认)和border-box
content-box:指定width和height属性为内容的宽和高,内容的宽和高永远不点,因此设置了内填充和边框,就会将容器大小撑开。
border-box:指定了width和height是从border开始计算的,因此容器的总大小是不变的,设置了内填充和边框之后,内容的大小就会被压缩。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximun-scale=1,minimun-scale=1">
    <title>Document</title>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
    </script>
    <style>
       div{
           width: 200px;
           height: 200px;
           margin: 10px;
           background-color: blue;
       }
       img{
           display: inline-block;
           width: 100%;
           height: 100%;
       }
       .box2{
           box-sizing: content-box;
           padding: 10px;
       }
       .box3{
           box-sizing: border-box;
           padding: 10px;
       }
    </style>
</head>
<body>
    <div class="box1"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
    <div class="box2"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
    <div class="box3"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
</body>
<script>
</script>
</html>

在这里插入图片描述
对于padding,content-box会往外扩张,而border-box整体所占的位置大小不变,对于border也是如此。
在这里插入图片描述
box-sizing在移动端开发的应用:
box-sizing的默认值为content-box,这会导致我们稍微修改一下样式就可能会导致容器的大小发生改变,从而影响布局。因此,将box-sizing设置为border-box比较合适。
应用:css reset时将box-sizing设置为border-box

        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

8.图标字体

在这里插入图片描述

9.Flex布局

10.媒体查询

10.1 什么是媒体查询media query

@media screen and (min-width:900px){
	background:red;
}

10.2 为什么需要媒体查询?

一套样式不可能适应各种大小的屏幕
针对不同的屏幕大小写样式
让我们的页面在不同大小的屏幕上都能正常显示

10.3 媒体类型

all(default)
screen(屏幕)/print(打印预览)/speech

10.4 媒体查询中的逻辑

and
,
not
not 的作用范围为后面所有连续的and,遇到,就会失效

10.5 媒体特征表达式

width
max-width
min-width
-webkit-device-pixel-ratio 设备像素比
-webkit-max-device-pixel-ratio
-webkit-min-decive-pixel-ratio
orientation:landscape(横屏)/partait(竖屏)

10.6 媒体查询策略

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximun-scale=1,minimun-scale=1">
    <title>Document</title>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js">
    </script>
    <style>
        *{
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        html{
            width: 100%;
        }
        .row{
            width: 100%;
            display: flex;
            flex-wrap: wrap;
        }
        .col{
            width: 200px;
            height: 200px;
        }
        img{
            display: inline-block;
            width: 100%;
            height: 100%;
        }
        /* 断点 */
        /* xs:<576px;
        sm:567px-768px;
        md:768px-992px;
        lg:992px-1200px;
        xl:>1200px; */
        .col {
            width: 100%;
        }
        @media (min-width: 576px) {
            .col {
                width: 50%;
            }
        }
        @media (min-width: 768px) {
            .col {
                width: 25%;
            }
        }
        @media (min-width: 992px) {
            .col {
                width: 16.6666666667%;
            }
        }
        @media (min-width: 1200px) {
            .col {
                width: 8.33333333%;
            }
        }
    </style>
</head>
<body>
    <div class="row">
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
        <div class="col"><img src="https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1598881589&di=19342315765be497ba64a72d738d78b9&src=http://hbimg.b0.upaiyun.com/fd365c1b0e01b8e699b909145aec7b8f1b7eff047fac-C9FWMY_fw658"></div>
    </div>
</body>
<script>
</script>
</html>

11.移动端的常用单位

px:固定单位
%:自适应,相对单位
em:font-size of element,1em=font-size’s height,根据自身的字体大小计算,如果自身的font-size设置为em,会以父元素的font-size为基准进行计算。这个单位在进行首行缩进是十分方便。
rem:font-size of the root element,以根元素的font-size为基准计算。
vw:视口宽度的百分比,1vw = 1% of viewport width
vh:视口高度的百分比,1vh = 1% og viewport width

应用:使用rem做单位,将页面上的元素统一地进行等比例缩放

setRemUnit();

window.onresize = setRemUnit;
// 获取视口宽度
function setRemUnit(){
    var docElement = document.documentElement;
    var viewWidth = document.documentElement.clientWidth || window.innerWidth || document.documentElement.getBoundingClientRect().width;
    
    docElement.style.fontSize = viewWidth / 375 * 20 + 'px';
    // 1rem = 20px 在375px的视口宽度下
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值