zoukankan      html  css  js  c++  java
  • 移动web开发03-rem布局

    rem布局

    目的:页面布局文字随屏幕大小变化而变化,元素高度和宽度等比例缩放。

    rem单位
    • rem (root em)是一个相对单位,类似于em,em是父元素字体大小。不同的是rem的基准是相对于html元素的字体大小。
    • 比如,根元素(html)设置font-size=12px; 非根元素设置2rem;则换成px表示就是24px。
    • rem的优势:父元素文字大小可能不一致,但是整个页面只有一个html,可以很好来控制整个页面的元素大小。通过修改html里文字大小就可以对页面中所有元素的文字大小来整体控制。
    媒体查询

    媒体查询(Media Query)是CSS3新语法。

    • 使用@media 查询,可以针对不同的媒体类型定义不同的样式。
    • @media 可以针对不同的屏幕尺寸设置不同的样式。
    • 当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。
    • 目前针对很多苹果手机、Android手机,平板等设备都用得到多媒体查询。

    语法规范

    @media mediatype and|not|only (media feature){
        CSS-Code;
    }
    
    1. mediatype 查询类型
      all : 用于所有设备
      print : 用于打印机和打印预览
      screen : 用于电脑屏幕,平板电脑,智能手机等
    2. 关键字:将媒体类型或多个媒体特性连接到一起做为媒体查询的条件。
    • and:可以将多个媒体特性连接到一起,相当于“且”的意思。
    • not:排除某个媒体类型,相当于“非”的意思,可以省略。
    • only:指定某个特定的媒体类型,可以省略。
    1. 媒体特性:每种媒体类型都具体各自不同的特性,根据不同媒体类型的媒体特性设置不同的展示风格。
      例:
    @media screen and|not|only (max-800px){
        CSS-Code;
    }
    
    引入资源
    • 当样式比较繁多的时候,我们可以针对不同的媒体使用不同stylesheets(样式表)。
    • 原理:就是直接在link中判断设备的尺寸,然后引用不同的css文件。
    • 语法规范:
    <link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystylesheet.css">
    
    • 建议媒体查询 判断 从小到大

    less基础

    维护CSS的弊端

    1. CSS 是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。
    2. CSS 需要书写大量看似没有逻辑的代码,CSS 冗余度是比较高的。
    3. 不方便维护及扩展,不利于复用。
    4. CSS 没有很好的计算能力。
    5. 非前端开发工程师来讲,往往会因为缺少CSS 编写经验而很难写出组织良好且易于维护的CSS 代码项目。

    Less介绍
    Less (Leaner Style Sheets 的缩写)是一门CSS 扩展语言,也成为CSS预处理器。

    • 做为CSS 的一种形式的扩展,它并没有减少CSS 的功能,而是在现有的CSS 语法上,为CSS加入程序式语言的特性。
    • 它在CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了CSS 的编写,并且降低了CSS 的维护成本,就像它的名称所说的那样,Less可以让我们用更少的代码做更多的事情。
    less变量
    • 变量是指没有固定的值,可改变的

    @变量名:值;

    • 变量命名规范

    1.必须以@为前缀
    2.不能包含特殊字符
    3.不能以数字开头
    4.大小写敏感

    例:

    @color: pink;
    @font14: 14px;
    body{
        background-color: @color;
    }
    div{
        color: @color;
    }
    a{
        font-size: @font14;
    }
    
    less编译

    我们需要把less文件编译生成为css文件,这样我们的html页面才能使用。

    • 用vscode中的Easy LESS 插件用来把less文件编译为css文件。
    • 保存后这个插件会将写的less文件自动生成对应的css文件。
    less嵌套

    示例(header>a):

    .header{
         200px;
        height: 100px;
        background-color: blue;
        a{
            color: yellow;
        }
    }
    

    如果遇见(交集|伪类|伪元素选择器)

    • 内层选择器的前面没有& 符号,则它被解析为父选择器的后代;
    • 如果有& 符号,它就被解析为父元素自身或父元素的伪类。
    a{
        &:hover{
            color: yellowgreen;
        }
        &::before{
            content: "";
        }
    }
    
    less运算

    任何数字、颜色或者变量都可以参与运算。就是Less提供了加(+)、减(-)、乘(* )、除(/)算术运算。

    注:

    • 乘号(* )和除号(/)的写法
    • 运算符中间左右必须要空格隔开 1px + 5
    • 对于两个不同的单位的值之间的运算,运算结果的值取第一个值的单位
    • 如果两个值之间只有一个值有单位,则运算结果就取该单位
    @border: 5px + 5;
    div{
         200px - 50;
        height: 200px * 2;
        border: 10rem / @border solid red;
        background-color: #666 - #222;
    }
    

    rem适配方案

    适配目标

    1. 让一些不能等比自适应的元素,达到当设备尺寸发生改变的时候,等比例适配当前设备。
    2. 使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化,从而达到等比缩放的适配。
    rem实际开发适配方案
    1. 按照设计稿与设备宽度的比例,动态计算并设置html 根标签的font-size 大小;(媒体查询)
    2. CSS 中,设计稿元素的宽、高、相对位置等取值,按照同等比例换算为rem 为单位的值;
    rem适配主流技术方案
    1. less+媒体查询+rem
    2. flexible.js + rem (推荐)

    动态设置html 标签font-size 大小
    ① 假设设计稿是750px
    ② 假设我们把整个屏幕划分为15等份(划分标准不一可以是20份也可以是10等份)
    ③ 每一份作为html字体大小,这里就是50px
    ④ 那么在320px设备的时候,字体大小为320/15 就是21.33px
    ⑤ 用我们页面元素的大小除以不同的html 字体大小会发现他们比例还是相同的
    ⑥ 比如我们以750为标准设计稿
    ⑦ 一个100* 100像素的页面元素在750屏幕下,就是100 / 50  转换为rem  是2rem * 2 rem  比例是1比1
    ⑧ 320屏幕下,html 字体大小为21.33   则2rem =  42.66px  此时宽和高都是42.66  但是宽和高的比例还是1比1
    ⑨ 但是已经能实现不同屏幕下页面元素盒子等比例缩放的效果

    元素大小取值方法
    ① 选一套标准屏幕尺寸(750)
    ② html中的字体大小 = 屏幕尺寸 / 划分的份数
    ③ 页面元素的rem值 =  (750px下的)页面元素值(px) / html font-size 字体大小
    或 页面元素的rem值 = 页面元素值(px) / (屏幕宽度 / 划分的份数)

  • 相关阅读:
    vim 显示行号 临时&永久
    ubuntu redis config IP password
    Vulnerability Scanning Tools
    Tomcat清理无用应用防止漏洞
    XSS平台-学习
    Amazon aws s3 加速
    XSS的DOS攻击之 server limit dos
    Linux Nginx naxsi
    Acunetix Web Vulnerability Scanner abbr. AWVS
    nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
  • 原文地址:https://www.cnblogs.com/chri330dj/p/12456654.html
Copyright © 2011-2022 走看看