Python 布局:屏幕适配以及rem

一、视口

  • 1.1、视口的概念
    视口 是移动设备上用来显示网页的区域,一般会比移动设备可视区域大,宽度可能是980px或者1024px,目的是为了显示下整个为PC端设计的网页,这样带来的后果是移动端会出现横向滚动条,为了避免这种情况,移动端会将视口缩放到移动端窗口的大小。这样会让网页不容易观看,可以用 meta 标签,name=“viewport ” 来设置视口的大小,将视口的大小设置为和移动设备可视区一样的大小。

  • 1.2、视口设置方法如下( 快捷方式:meta:vp + tab ):

    视口设置方法

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <!-- 视口的设置:meta:vp + Tab 键 产生下面的代码 ,如果网页想在移动端显示要加上这句话,网页端会自动略过这句话,只针对移动端
          viewport:视口的意思
          width=device-width:让视口的宽度等于设备的宽度
          user-scalable=no:不允许用户自动缩放
          initial-scale=1.0:初始放缩等于 1.0
          maximum-scale=1.0:最大放缩也等于 1.0
          minimum-scale=1.0 最小放缩也等于 1.0  三个缩放都要写的原因是兼容不同的浏览器
         -->
        <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <title>视口-屏幕适配</title>
        <style type="text/css">
            .box{
                width: 300px;
                height: 300px;
                background-color: gold;
             }
        </style>
    </head>
    <body>
        <div class="box"></div>
    </body>
    </html>
    

    提示:视口的设置:meta:vp + Tab 键 产生下面的代码 ,如果网页想在移动端显示要加上这句话,网页端会自动略过这句话,只针对移动端

  • 1.3、pc端与移动端渲染网页过程:

    pc端与移动端渲染网页过程

二、视网膜屏幕(retina屏幕)清晰度解决方案

  • 2.1、视网膜屏幕指的是屏幕的物理像素密度更高的屏幕,物理像素可以理解为屏幕上的一个发光点,无数发光的点组成的屏幕,视网膜屏幕比一般屏幕的物理像素点更小,常见有2倍的视网膜屏幕和3倍的视网膜屏幕,2倍的视网膜屏幕,它的物理像素点大小是一般屏幕的1/4,3倍的视网膜屏幕,它的物理像素点大小是一般屏幕的1/9。图像在视网膜屏幕上显示的大小和在一般屏幕上显示的大小一样,但是由于视网膜屏幕的物理像素点比一般的屏幕小,图像在上面好像是被放大了,图像会变得模糊,为了解决这个问题,可以使用比原来大一倍的图像,然后用css样式强制把图像的尺寸设为原来图像尺寸的大小,就可以解决模糊的问题。
  • 2.2、清晰度解决过程示意图:
    清晰度解决过程示意图

    上图是采用 CSS样式强制改变 图片的尺寸

三、background 新属性 (background-size:)

  • 3.1、background-size:的值

    • length:用长度值指定背景图像大小。不允许负值。
    • percentage:用百分比指定背景图像大小。不允许负值。
    • auto:背景图像的真实大小。
    • cover:将背景图像等比缩放到完全覆盖容器,背景图像有可能超出容器。
    • contain:将背景图像等比缩放到宽度或高度与容器的宽度或高度相等,背景图像始终被包含在容器内。
  • 3.2、举例

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>background 新属性</title>
       <style type="text/css">
            .box{
               width: 200px;
               height: 200px;
               border: 2px solid #000;
               margin: 50px auto 0;
         
               background: url("images/apple.png") no-repeat;
               background-size: 200px 200px;
            }
        </style>
    </head>
    <body>
        <div class="box"></div>
    </body>
    </html>
    

    提示:上面的:background-size: 200px 200px; 可以换为background-size: 100% 100%background-size: auto;background-size: cover;background-size: contain;

四、适配布局类型

  • 4.1、适配布局类型介绍:设备屏幕有多种不同的分辨率,页面适配方案有如下几种:

    • 1、全适配:响应式布局+流体布局
    • 2、移动端适配:
      • 流体布局+少量响应式
      • 基于rem的布局
  • 4.2、流体布局:就是使用百分比来设置元素的宽度,元素的高度按实际高度写固定值,流体布局中,元素的边线无法用百分比,可以使用样式中的计算函数 calc() 来设置宽度,或者使用 box-sizing 属性将盒子设置为从边线计算盒子尺寸。

    • calc() :可以通过计算的方式给元素加尺寸,比如: width:calc(25% - 4px);
    • box-sizing
      • 1、content-box 默认的盒子尺寸计算方式
      • 2、border-box 置盒子的尺寸计算方式为从边框开始,盒子的尺寸,边框和内填充算在盒子尺寸内
  • 4.3、响应式布局:响应式布局就是使用媒体查询的方式,通过查询浏览器宽度,不同的宽度应用不同的样式块,每个样式块对应的是该宽度下的布局方式,从而实现响应式布局。响应式布局的页面可以适配多种终端屏幕(pc、平板、手机)。相应布局的伪代码如下:写在样式里面

    @media (max-width:960px){
         .left_con{width:58%;}
         .right_con{width:38%;}
    }
    @media (max-width:768px){
         .left_con{width:100%;}
         .right_con{width:100%;}
    }
    

五、基于 rem 的布局

  • 5.1、em单位与rem单位的介绍
    em 单位是参照元素自身的文字大小来设置尺寸,rem指的是参照根节点的文字大小,根节点指的是 html标签,设置html标签的文字大小,其他的元素相关尺寸设置用rem,这样,所有元素都有了统一的参照标准,改变html文字的大小,就会改变所有元素用rem设置的尺寸大小。如下例子:

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>em单位</title>
       <style type="text/css">
          .box1{
               font-size: 12px;
               width: 20em;
               height: 10em;
               background-color: gold;
           }
           .box2{
               font-size: 20px;
               width: 20em;
               height: 10em;
               background-color: green;
           }
           p{
               font-size: 20px;
               text-indent: 2em;
           }
        </style>
    </head>
    <body>
        <div class="box1"> </div>
        <br>
        <br>
        <div class="box2"> </div>
        <p>首先了解em单位,em单位是参照元素自身的文字大小来设置尺寸,rem指的是参照根节点的文字大小,根
    节点指的是html标签,设置html标签的文字大小,其他的元素相关尺寸设置用rem,
    这样,所有元素都有了统一的参照标准,改变html文字的大小,就会改变所有元素用rem设置的尺寸大小。</p>
    
    </body>
    </html>
    

    提示:em是根据 font-size 变化的,例如:如果:font-size: 20px;,那么 1em 就是 20px

    • rem 使用的一个例子,如下
    `rem` 使用的一个例子
       <!DOCTYPE html>
       <html lang="en" style="font-size: 20px">
       <head>
          <meta charset="UTF-8">
          <title>rem单位</title>
          <style type="text/css">
    
             .box1{
                 font-size: 12px;
                 width: 20rem;
                 height: 10rem;
                 background-color: gold;
              }
              .box2{
                 font-size: 20px;
                 width: 20rem;
                 height: 10rem;
                 background-color: green;
               }
           </style>
       </head>
       <body>
           <div class="box1">我是12px大小</div>
           <br>
           <br>
           <div class="box2">我是20px大小</div>
       </body>
       </html>
    

    提示:<html lang="en" style="font-size: 20px"> 中的font-size大小发生改变,其他一rem为单位的尺寸都会发生改变 ,1rem=font-size:的大小

    • cssrem 插件的安装:可以动态地将px尺寸换算成rem尺寸,进入packages目录:Sublime Text -> Preferences -> Browse Packages... 复制下载的cssrem目录到刚才的packges目录里。 重启Sublime Text。配置参数 参数配置文件:Sublime Text -> Preferences -> Package Settings -> cssrem px_to_rem - px转rem的单位比例,默认为40。 max_rem_fraction_length - px转rem的小数部分的最大长度。默认为6。 available_file_types - 启用此插件的文件类型。默认为:[".css", ".less", ".sass"]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352