css中的幾個單元——rem,視口單元和ch

rem

rem是設想相應式網頁的神器,由於rem單元是相對HTML元素的font-size屬性的,因而當運用rem作為屬性單元時,當轉變HTML元素的font-size,其他運用rem作為單元的元素也會隨着適配大小。那末怎樣依據屏幕的大小製造一個相應式的網頁呢。

  • 用css媒體查詢
  • 用相當於視口寬度單元的vw值(這個下一部份講)

這裏先說說用css媒體查詢,如下面所示,屏幕查詢能夠指定一個屏幕大小,當屏幕是你指定的大小時,它就會運轉內里的代碼,然則這類要領有一個瑕玷—它並不能掌握越發準確的尺寸,所以我們能夠運用vm來處理這個題目。

<style>
    body,div{
        margin:0;
        padding:0;
    }
    html{
        font-size:12px;
    }
    @media screen and (min-width:320px){
        html{
            font-size:14px;
        }
        
    }
    @media screen and (min-width:640px){
        html{
            font-size:16px;
        }
        
    }
    @media screen and (min-width:1000px){
        html{
            font-size:18px;
        }
    }
    .box{
        width:10rem;
        height:10rem;
        font-size:2rem;
        background-color:pink;
    }
</style>
<div class="box">rem</div>

vw,vh,vmin,vmax基於視口的單元

視口單元能夠用來什麼,比方:

  • 完成相應式
  • 設置相對視口的寬度和高度,能夠完成程度垂直居中
  • 完成網格規劃
  • 將圖片根據屏幕的比例顯現

這幾個單元是相對於視口的,也就是可視地區,統共分成了100份。假如想讓一個字體的大小在指定的區間內變化,比方可視地區的大小在980px-320px時,讓字體的大小在14-20之間變化,能夠

14-(20-14)*(980-320)/(980-320)

<style>
    body,div{
        margin:0;
        padding:0;
    }
    html{
        font-size:20px;
    }
    @media screen and (max-width:980px){
        html{
            font-size:calc(14px+6*(100vm-320px)/660);
        }
        
    }
    .box{
        width:10rem;
        height:10rem;
        font-size:2rem;
        background-color:pink;
    }
</style>
<div class="box">rem</div>

除了用這些基於視口的單元來做相應式,還能夠做一些其他的事變。我們曉得,假如某個值能夠繼續,則百分比參照的是父元素盤算的值。而當父元素不設置高度時,則是依據子元素高度來肯定的。所以,假如沒有直接設置寬度和高度,100%的設置是沒有作用的。假如用視口單元,就不會有這類狀況了,由於它是相對屏幕可視區的

.box{
  width:100vw;
  height:100vh;
  background-color:pink;
}

假如要完成程度垂直居中

《css中的幾個單元——rem,視口單元和ch》

<style>
  body,div{
  margin:0;
  padding;0;
}
.box{
  width:100px;
  height:100px;
  margin-left:calc(50vw-50px);
  margin-top:calc(50vh-50px);
  background-color;pink;
}
</style>
<div class="box">hello css</div>

用視口來完成網格規劃

《css中的幾個單元——rem,視口單元和ch》

<style>
body,div{
  margin:0;
}
.column-1{
  float:left;
  width:100vw;
}
.column-2{
  float:left;
  width:calc(100vw/2);
}
.column-3{
  float:left;
  width:calc(100vw/3);
}
body>div{
  overflow;hidden;
}
div>div{
  height:35px;
  outline:1px solid #dedede;
}
.box-1 div{
  background-color:red;
}
.box-2 div{
  background-color:orange;
}
.box-3 div{
  background-color:pink;
}
</style>
 <div class="box-1">
   <div class="column-1"></div>
 </div>
 <div class="box-2">
   <div class="column-2"></div>
   <div class="column-2"></div>
 </div>
 <div class="box-3">
   <div class="column-3"></div>
   <div class="column-3"></div>
   <div class="column-3"></div>
  </div>

別的,當須要將圖片根據屏幕的比例顯現時,用視口單元也是不錯的挑選

ch

ch是一個相對於数字0的大小,比方定義了5ch的寬度,那末就只能裝下5個0。實際上1ch=1個英文=1個数字,2ch=1个中文。

 <style>
        body,div{
            margin:0;
            padding:0;
        }
        .box{
            width:5ch;
            background-color:grey;
        }

    </style>
    <div class="box">
     000000
    </div>

《css中的幾個單元——rem,視口單元和ch》

假如項目須要限定輸入個數,能夠運用下面代碼

<style>
        body,div{
            margin:0;
            padding:0;
        }
        h1{
            width:18ch;
            overflow: hidden;//超越隱蔽
            white-space: nowrap;//防備換行
            text-overflow: ellipsis;//省略號
            font-size: 50px;
            background-color: deeppink;
        }

    </style>
    <h1>
     題目被限定輸入了,超越隱蔽哦。
    </h1>

《css中的幾個單元——rem,視口單元和ch》

    原文作者:GISChen
    原文地址: https://segmentfault.com/a/1190000015124699
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞