Flex(02)---像素

Unit Four: 弹性盒子Flex(02)—像素&视口

1. 像素

  • 屏幕是由一个一个发光点构成,一个发光点就是一个像素。

  • 分辨率:1920*1080就是屏幕中发光点的数量。

  • CSS像素和物理像素

    • 物理像素
      • 屏幕发光点(分辨率)
    • CSS像素
      • 编写网页时给予的数值
      • 浏览器在现实网页时需要将CSS像素转换为物理像素,然后再呈现。
    • 一个CSS像素最终由几个物理像素显示,由浏览器决定:
      • 默认情况下,在pc端,一个CSS像素=一个物理像素

2. 视口(Viewport)

  • 视口就是屏幕中用来显示网页的区域。

  • 可以通过查看视口大小来观察CSS像素和物理像素的比例。

  • 默认情况下:

    • 视口宽度:

      • CSS像素:1920px
      • 物理像素:1920px

      两者比例1:1

  • 浏览器放大1倍:

    • 视口宽度:

      • CSS像素:960px
      • 物理像素:1920px

      两者比例1:2

  • 浏览器缩小1倍

    • 视口宽度:

      • CSS像素:(1920*2)px
      • 物理像素:1920px

      两者比例2:1

3.手机像素

不同的屏幕,单位像素的大小不同,像素越小屏幕越清晰。

  • 24寸屏幕 1920*1080
  • iphone 6 750*1334
  • 智能手机的像素点远远小于计算机像素点,所以手机显示较清晰。

默认情况下,移动端的网页都会将视口像素设置为980像素(CSS像素),以确保网页可以显示全貌。

但是网页宽度超过980,移动端的浏览器会自动对网页缩放以完整显示网页。

缺点:虽然可以正常显示,但浏览体验不好,需要专门开发移动端页面。

4.完美视口

通过<meta>标签来设置视口大小。

  • 每一款移动设备设计时,都会有一个最佳的像素比。

  • 一般我们只需将像素比设置为该值即可得到一个最佳效果。

  • 完美视口:

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

5. vw单位

vw(viewport width)表示视口的宽度。

  • 100vw = 一个视口的宽度

  • 1vw = 1%视口宽度

  • 设计图常见宽度

    • 一倍图:375px
    • 两倍图:750px
    • 三倍图:1125px
  • px和vw换算

    • 两倍图:750px(设计图)=100vw(网页端)
  • vw适配

    • rem

      rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。

    • 注意:网页中字体大小最小是12px,不能设置一个比12像素还小的字体。如果我们设置了一个小于12px的字体,则字体自动设置为12px。

    • 解决方案

            html{
                /* 750px(设计图)=100vw(网页端)
                1px = 0.13333vw
                10px = 1.3333vw
                100px = 13.333vw
      
                 */
                 /* font-size:10px */
                font-size: 1.333vw;
                -webkit-text-size-adjust:none
            }
            .box1{
                /* width:48px; */
                width: 4.8rem;
                /* height:35px; */
                height:3.5rem;
                border: 1rem solid red;
                background-color: #bfa;
            }
    
    • less解决方案

      /*设置移动端屏幕大小*/
      @total-width:750;
      html{
          /*计算出10px=多少vw(1.3333vw)*/
          font-size: (100vw/@total-width)*10;
      }
      .content{
          /*693px*/
          width: 69.3rem;
      }
      .title{
          display:flex;
          height:17.5rem;
          justify-content:space-between;
          align-items:content;
      }
      

6.手机端项目