rem布局

rem 主要是为了解决字体随屏幕变化,flex上的高度问题,实现高度和宽度等比例缩放

  1. rem其实是一个单位 ,
  • 是个相对单位 root em。类似em。em指的是父级字体大小,顾名思义,我们的rem就是root(根元素的大小)->根元素 ,相对于html元素的字体大小的单位。
  1. rem布局的原理,就是根据一个html根元素来控制,网页的布局,实现类似于自适应等比例的缩放的布局。
  2. rem优势,通过修改html文字的大小,来改变页面中元素的大小,实现了页面的整体控制
html {
            font-size: 12px;
        }
        
        div {
            font-size: 12px;
            width: 15rem;
            height: 15rem;
            background-color: purple;
        }
        
        p {
            /* 1. em相对于父元素 的字体大小来说的 */
            /* width: 10em;
            height: 10em; */
            /* 2. rem 相对于 html元素 字体大小来说的 */
            width: 10rem;
            height: 10rem;
            background-color: pink;
            /* 3.rem的优点就是可以通过修改html里面的文字大小来改变页面中元素的大小可以整体控制 */
        }

媒体查询

Media query是css3的语法,实现了针对不同屏幕尺寸设置了不同的样式,(@media)

@media mediatype and|not|only (media feature) {
CSS-Code;
}/我们通过下面的代码来实际的体会以下,其中的奥妙

特别需要强调!!!经验之谈;一个建议: 我们媒体查询最好的方法是从小到大

/* 媒体查询可以根据不同的屏幕尺寸在改变不同的样式 */
        /*
            @media mediatype and|not|only (media feature) {
               CSS-Code;
            }
            mediatype是指媒体的类型,有三个值,最常用的就是screen意为 在屏幕上
            and(可以将多个媒体特性连接到一起‘且’),ont(排除某个媒体类型‘非’),only,媒体特性
        */
        /*先看我们的需求:我们需要睡着屏幕的大小 变化,来展示不同的样式。
        
        具体就是,540下的是蓝色,540-970之间是绿色。970以上的是红色*/
        /* 1. 媒体查询一般按照从大到小或者 从小到大的顺序来 */
        /* 2. 小于540px 页面的背景颜色变为蓝色 */
        
        @media screen and (max-width: 539px) {
            body {
                background-color: blue;
            }
        }
        /* 3. 540 ~ 970 我们的页面颜色改为 绿色 */
        /* @media screen and (min-width: 540px) and (max-width: 969px) {
            body {
                background-color: green;
            }
        } */
        
        @media screen and (min-width: 540px) {
            body {
                background-color: green;
            }
        }
        /* 4. 大于等于970 我们页面的颜色改为 红色 */
        
        @media screen and (min-width: 970px) {
            body {
                background-color: red;
            }
        }
        /* 5. screen 还有 and 必须带上不能省略的 */
        /* 6. 我们的数字后面必须跟单位  970px   这个 px 不能省略的 */

结合rem + media query

结合媒体查询和rem我们可以实现更人性化的页面。

* {
            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;
        }
  1. 这里又有一个问题了,到底给元素多大的rem呢?
  • 比如说这里有这样的一个需求:html大小写定了就是50px,设计图原稿的图片是82*82的,那么你给多大的rem给img呢?
  • 解决:82/50 = 需要的rem

媒体查询--引入资源

主要是意思就是,给不同的屏幕情况指定引入不同的css样式

意识就是一套一套的css

<link rel="stylesheet" href="style320.css" media="screen and (min-width: 320px)">

    <link rel="stylesheet" href="style640.css" media="screen and (min-width: 640px)">

less & sass

  • 注意一下,这里的less和sass都是扩展了css东西,less是一种动态样式语言,对css赋予了动态语言的特性,比如变量、继承、运算、函数,既可以运行在客户端,也可以运行在服务器端,依赖JavaScript
  • sass是一种动态语言,属于缩排语法,比css多出很多功能,比如变量、嵌套、运算、混入、继承、函数等,更容易阅读;
  • 它的出现解决了之前的需要计算rem的繁琐问题

less

  1. css的扩展语言,也叫作css预处理器。
  2. 注意一下,要使用他们需要安装node,安装之后,通过npm来安装less ,sass也是一样的操作,注意,安装的时候需要旋转,全局安装-g
  3. 在vs里面新建一个xxx.less文件

以下的是less使用流程

// 定义一个粉色的变量
@color: pink;  
// 错误的变量名  @1color   @color~@#
// 变量名区分大小写  @color  和  @Color 是两个不同的变量
// 定义了一个 字体为14像素的变量
@font14: 14px;
body {
   background-color: @color;
}
div {
   color: @color;
   font-size: @font14;
}
a {
   font-size: @font14;
}

以上的代码保存在xxx.less中

  1. 你需要编译less文件,把它转化成css之后,生成xxx.less(同名css文件),页面才能正常的引入使用
  2. 编译器插件(vs中)Easy LESS
  3. 写完les之后,并且确保你安装了less和编译器,ctrl+s一下就能自动在目录生成同名的css文件了

关于更多的less语法,请你点击这里less官网

/*最常见的语法就是,变量,嵌套子元素样式,运算。

其他的都比较好理解,就是有一个需要特别小心的地方,就是选择器*/
/*如果遇见 (交集|伪类|伪元素选择器) ,利用&进行连接*/
.header {
    width: 200px;
    height: 200px;
    background-color: pink;
    // 1. less嵌套 子元素的样式直接写到父元素里面就好了,
    a {
        color: red;
        // 2. 如果有伪类、交集选择器、 伪元素选择器 我们内层选择器的前面需要加&
        // 如果你不写,less默认就是全部都后代选择器
        &:hover {
            color: blue;
        }
      }
    } 
    .nav {
    .logo {
        color: green;
          }
    &::before {
        content: "";
              }
    }
  1. 关于我们的运算,跟数学中的四则运算是一样一样的。但是你需要注意:
// 1. 我们运算符的左右两侧必须敲一个空格隔开
// 2. 两个数参与运算  如果只有一个数有单位,则最后的结果就以这个单位为准
// 3. 两个数参与运算,如果2个数都有单位,而且不一样的单位 最后的结果以第一个单位为准