首頁 >web前端 >css教學 >如何使用CSS3中的calc()屬性來表達尺寸

如何使用CSS3中的calc()屬性來表達尺寸

不言
不言原創
2018-06-20 17:24:451946瀏覽

這篇文章主要介紹了關於如何使用CSS3中的calc()屬性來表達尺寸,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

calc()的用法十分巧妙,可以像我們在學校做數學應用題那樣列式子來計算長度寬度等值,從而一定程度上實現自適應佈局,下面我們就來介紹如何使用CSS3中的calc()屬性來以算式表達尺寸數值

我們想要實現頁面自適應佈局時,通常因為margin的存在,而比較麻煩;有時想要實現寬度自適應的輸入框時,也因為padding或margin的存在,而相當繁瑣,同時由於瀏覽器相容性而導致最終效果不一致。 css3新添加屬性box-sizing,在一定程度上解決了上面的問題,而在今天的文章中我們來透過css3新增加的另外一個屬性calc()來實現適應佈局。

calc()是css3新新增屬性,它可以讓你使用算術表達式來表達長度值,這意味著可以用它來定義p的寬度,並設定margin、padding、border等。
calc()的運算規則:
1.使用」 ”、”-”、”*”、”/”四則運算;
2.可以使用百分比、px、em、rem等單位;
3.可以混合使用各種單位來計算。

用法
calc()文法非常簡單,就像我們小時候學加( )、減(-)、乘(*)、除(/)一樣,使用數學表達式來表示:

.haorooms {   
  width: calc(expression);   
}

這樣padding和margin和百分比一起用,問題就可以解決了。

例如,我們margin是20px。那我們就可以寫成

.haorooms{   
  width: calc(100% - 20px);  //注:减号前后要有空格,否则很可能不生效!!   
}

也可以這麼用:

.box {   
    background: #f60;   
    height: 50px;   
    padding: 10px;   
    border: 5px solid green;   
     width: 90%;/*写给不支持calc()的浏览器*/
    width:-moz-calc(100% - (10px + 5px) * 2);   
    width:-webkit-calc(100% - (10px + 5px) * 2);   
    width: calc(100% - (10px + 5px) * 2);   
}

範例
實例1:定位在頁面上的區塊元素,含有外邊距

.banner {   
  position:absolute;   
  left: 40px;   
  width: -moz-calc(100% - 80px);   
  width: -webkit-calc(100% - 80px);   
  width: calc(100% - 80px);   
  border: solid black 1px;   
  box-shadow: 1px 2px;   
  background-color: yellow;   
  padding: 6px;   
  text-align: center;   
}

實例2:自動調整大小的表單,又適應容器

input {   
  padding: 2px;   
  display: block;   
  width: -moz-calc(100% - 1em);   
  width: -webkit-calc(100% - 1em);   
  width: calc(100% - 1em);   
}     
#formbox {   
  width: -moz-calc(100%/6);   
  width: -webkit-calc(100%/6);   
  width: calc(100%/6);   
  border: 1px solid black;   
  padding: 4px;   
}
<form>
  <p id="formbox">
  <label>Type something:</label>
  <input type="text">
  </p>
</form>

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於CSS3的animation實現逐幀動畫效果

如何使用CSS3的box-reflect來製作倒影效果

以上是如何使用CSS3中的calc()屬性來表達尺寸的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn