rem適配佈局

rem基礎

rem單位

  • rem(root em)是一個相對單位類似em,em是相對於父元素字體大小。
  • 不同的是rem的基準是相對於html元素的字體大小
  • rem的優點就是可以通過修改html中的字體大小來修改頁面中元素的大小可以控制整體。

媒體查詢

  • media Query是CSS3新特性
  • 使用@media查詢可以針對不同的媒體類型定義不同的樣式
  • @media可以針對不同的屏幕尺寸設置不同的樣式
@media mediatype and|not|only (media feature) {
    CSS-Code;
}

注意:

  • 用 @media開頭 注意@符號
  • mediatype 媒體類型
  • 關鍵字 and not only
  • media feature 媒體特性必須有小括號包含

1. mediatype 查詢類型

- 將不同的終端設備劃分成不同的類型,稱為媒體類型  (理解為設備類型,非屏幕,屏幕)
- all 所有設備
- print 用於打印設備
- screen 用於電腦屏幕,智能手機等。

2. 關鍵字
關鍵字將媒體類型或多個媒體特性連接到一起做為媒體查詢的條件。

  • and:可以將多個媒體特性連接到一起,相當於“且”的意思。
  • not:排除某個媒體類型,相當於“非”的意思,可以省略。
  • only:指定某個特定的媒體類型,可以省略。

3.媒體特性
每種媒體類型都具有各自不同的特性,根據不同媒體類型的媒體特性設置不同的展示風格
我們暫且瞭解三個:(注意他們要加小括號包含)

  • width 定義輸出設備中頁面的可見區域的寬度
  • max-width 定義輸出設備中頁面的最大可見區域的寬度
  • min-width 定義輸出設備中頁面的最小可見區域的寬度
<style>
        /* 這句話的意思就是: 在我們屏幕上 並且 最大的寬度是 800像素 設置我們想要的樣式 */
        /* max-width 小於等於800 */
        /* 媒體查詢可以根據不同的屏幕尺寸在改變不同的樣式 */
        
        @media screen and (max-width: 800px) {
            body {
                background-color: pink;
            }
        }
       /* 總結:媒體查詢, 檢測媒體(手機,電腦),的特徵變化*/
        
        @media screen and (max-width: 500px) {
            body {
                background-color: purple;
            }
        }
    </style>
</head>

<body>

</body>

媒體查詢+rem案例

效果: 屏幕大小變化時,購物車的字體,以及所在盒子的高度也在變化:

<style>
        * {
            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 {
            /* 高度,字體大小,都設置為rem單位,即可根據html的font-size的改變而改變*/
            height: 1rem;
            font-size: .5rem;
            background-color: green;
            color: #fff;
            text-align: center;
            line-height: 1rem;
        }
    </style>
</head>

<body>
    <div class="top">購物車</div>
</body>

總結:

  • rem+媒體查詢,實現屏幕大小改變,界面元素跟着一起改變的原理,實現順序:
  • 媒體查詢作用,根據屏幕尺寸的範圍,來切換html的font-size (界面元素的參照物跟着屏幕改變)
  • 界面元素的大小都以rem為單位(rem代表參照物html的font-size)
媒體查詢引入資源
  • 當界面大小變化時,整個界面的結構有較大的變化時,我們會使用媒體查詢引入資源。
  • 針對不同大小的界面,準備不同的css樣式文件,當界面大小變化時,直接改變引入的css樣式文件,這就是媒體查詢引入資源。
<style>
        /* 當我們屏幕大於等於 640px以上的,我們讓div 一行顯示2個 */
        /* 當我們屏幕小於640 我們讓div一行顯示一個 */
        /* 一個建議: 我們媒體查詢最好的方法是從小到大 */
        /* 引入資源就是 針對於不同的屏幕尺寸 調用不同的css文件 */
    </style>
    <link rel="stylesheet" href="style320.css" media="screen and (min-width: 320px)">
    <link rel="stylesheet" href="style640.css" media="screen and (min-width: 640px)">
</head>

<body>
    <div>1</div>
    <div>2</div>
</body>

less 基礎

Less 介紹
  • Less(LeanerStyle Sheets 的縮寫)是一門 CSS擴展語言,也成為CSS預處理器。
  • 做為 CSS的一種形式的擴展,它並沒有減少CSS的功能,而是在現有的CSS語法上,為CSS加入程序式語言的特性。
  • 它在CSS 的語法基礎之上,引入了變量,Mixin(混入),運算以及函數等功能,大大簡化了 CSS 的編寫,並且降低了 CSS的維護成本,就像它的名稱所説的那樣,Less可以讓我們用更少的代碼做更多的事情。
  • Less中文網址:http://lesscss.cn/
  • 常見的CSS預處理器:Sass、Less、Stylus
  • 一句話:Less是一門 CSS 預處理語言,它擴展了CSS的動態特性。
Less安裝

①安裝nodejs,可選擇版本(8.0),網址:http://nodejs.cn/download/

②檢查是否安裝成功,使用cmd命令(win10是window+r 打開運行輸入cmd) —輸入“node –v”查看版本即可

③基於nodejs在線安裝Less,使用cmd命令“npm install -g less”即可

npm:node package manager,node包管理工具

less是作為node中的一個工具包存在的,所以通過npm安裝

④檢查是否安裝成功,使用cmd命令“ lessc -v ”查看版本即可

Less使用

Less 使用之變量

  • 變量是指沒有固定的值,可以改變的。
  • 理解:變化的量,變化的內容,變化的值。
  • 語法:
    @變量名:值;
    如:
    @color: pink;

注意:

  • 必須有@為前綴
  • 不能包含特殊字符
  • 不能以數字開頭
  • 大小寫敏感
// 定義一個粉色的變量
    @color: pink;  
    // 錯誤的變量名  @1color   @color~@#
    // 變量名區分大小寫  @color  和  @Color 是兩個不同的變量
    // 定義了一個 字體為14像素的變量
    @font14: 14px;
    body {
        background-color: @color;
    }
    div {
        color: @color;
        font-size: @font14;
    }
    a {
        font-size: @font14;
    }

總結:

  • 定義了一個粉色的變量,body和div都使用了這個變量。那麼我們如果想要將body和div的顏色一起修改為另一個顏色,只需要修改變量的值即可,簡單方便
  • 一般將使用次數比較多的內容,定義為變量,然後通過使用變量,來使用到變量的值

Less 嵌套

less嵌套寫法如下:

/*我們經常用到選擇器的嵌套 (選擇器組合使用:後代選擇器)*/
   #header .logo {
     width: 300px;
   }
   /* less中的選擇器嵌套寫法 */
   #header {
       .logo {
          width: 300px;
       }
   }
   ````
   

如果遇見 (交集|偽類|偽元素選擇器) ,利用&進行連接

```css
   a:hover{
       color:red;
   }
   a{
     &:hover{
         color:red;
     }
   }
```



### Less 運算

任何數字、顏色或者變量都可以參與運算。就是Less提供了加(+)、減(-)、乘(*)、除(/)算術運算。

 

```css
 /*Less 裏面寫*/
   @witdh: 10px + 5;
   div {
       border: @witdh solid red;
   }
   /*生成的css*/
   div {
     border: 15px solid red;
   }
   /*Less 甚至還可以這樣 */
   width: (@width + 5) * 2;
```
   

- 乘號(*)和除號(/)的寫法  
- 運算符中間左右有個空格隔開 1px + 5
- 對於兩個不同的單位的值之間的運算,運算結果的值取第一個值的單位 
- 如果兩個值之間只有一個值有單位,則運算結果就取該單位