精品一区二区视频I日韩资源视频I人人干在线I天天干夜夜干I国产精品九色I日本最新中文字幕

您現(xiàn)在的位置:新疆網(wǎng)站建設(shè)-新疆網(wǎng)站制作-新疆二域設(shè)計(jì)>> 幫助中心>常見問題>> 網(wǎng)頁(yè)制作:calc() 函數(shù)詳解及在 width 屬性中的應(yīng)用

網(wǎng)頁(yè)制作:calc() 函數(shù)詳解及在 width 屬性中的應(yīng)用

作者:管理員  來源:互聯(lián)網(wǎng)  發(fā)布時(shí)間:2026-03-30 10:10:51  點(diǎn)擊數(shù):0

在網(wǎng)頁(yè)制作過程中,calc() 是 CSS 的一個(gè)原生函數(shù),允許你在指定屬性值時(shí)執(zhí)行簡(jiǎn)單的算術(shù)運(yùn)算(加法、減法、乘法、除法)。它特別適合用于 width、height、margin、padding、font-size 等接受長(zhǎng)度值的屬性。通過 calc(),你可以混合使用不同的單位(如百分比、像素、em、rem、視口單位等),從而實(shí)現(xiàn)更靈活、響應(yīng)式的布局。


基本語法

width: calc(表達(dá)式);


表達(dá)式可以包含 +(加)、-(減)、*(乘)、/(除)運(yùn)算符。

重要:運(yùn)算符前后必須保留空格(例如 calc(100% - 20px) 正確,calc(100%-20px) 無效)。

允許混合單位,如 calc(100vh - 5rem)、calc(50% + 10px) 等。


calc實(shí)際應(yīng)用舉例


固定邊欄 + 流體主內(nèi)容(兩列布局)


假設(shè)左側(cè)邊欄寬度固定為 200px,右側(cè)主內(nèi)容區(qū)域自動(dòng)填滿剩余寬度。

<div class="container">
  <aside class="sidebar">固定邊欄 200px</aside>
  <main class="content">主內(nèi)容區(qū)域?qū)挾?nbsp;= 100% - 200px</main>
</div>

.container {
  width: 100%;
  overflow: hidden; /* 清除浮動(dòng) */
}
.sidebar {
  float: left;
  width: 200px;
  background: #f0f0f0;
}
.content {
  float: left;
  width: calc(100% - 200px); /* 關(guān)鍵:總寬度減去邊欄寬度 */
  background: #d9edf7;
}

效果:無論容器如何縮放,主內(nèi)容區(qū)域始終比父容器寬度少 200px,完美實(shí)現(xiàn)自適應(yīng)。


為元素添加內(nèi)邊距,而不破壞“百分比寬度”


有時(shí)我們希望一個(gè)塊級(jí)元素的寬度為父容器的 100%,但同時(shí)需要固定的左右內(nèi)邊距。直接設(shè)置 width: 100% 再加上 padding 會(huì)導(dǎo)致元素溢出父容器(標(biāo)準(zhǔn)盒模型下)。使用 calc() 可以解決:


.box {
  width: calc(100% - 40px);  /* 父容器寬度減去左右各 20px 的內(nèi)邊距 */
  padding: 0 20px;
  background: #ffcc00;
  box-sizing: border-box;  /* 配合 box-sizing 更穩(wěn)健,但 calc 仍然有用 */
}


如果不使用 calc(),你可能需要在外層再套一個(gè)容器,或者使用 box-sizing: border-box 讓 padding 向內(nèi)擠,但 calc() 提供了另一種直觀的控制方式。


響應(yīng)式網(wǎng)格系統(tǒng)中的復(fù)雜間距


假設(shè)需要?jiǎng)?chuàng)建一個(gè)三列網(wǎng)格,每列之間有 2% 的間距,且最左側(cè)和最右側(cè)與容器邊緣無間距。可以用 calc() 精確控制每列寬度:

.grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.grid-item {
  width: calc((100% - 2 * 2%) / 3);  /* 總寬度減去兩個(gè)間距,再除以 3 */
  margin-bottom: 20px;
  background: #b0e0e6;
}


這里 calc() 讓間距和列寬都使用百分比,布局能隨容器平滑縮放,避免了固定像素值帶來的不協(xié)調(diào)。


與視口單位結(jié)合,實(shí)現(xiàn)高度自適應(yīng)

設(shè)置一個(gè)元素高度為視口高度減去固定高度的頁(yè)眉和頁(yè)腳:

.main-content {
  height: calc(100vh - 80px - 60px); /* 視口高度減去 80px 頁(yè)眉和 60px 頁(yè)腳 */
  overflow-y: auto;
}


calc() 函數(shù)的瀏覽器兼容性


calc() 擁有非常良好的瀏覽器支持,可以安全地用于生產(chǎn)環(huán)境。

Chrome:19+(2012年發(fā)布)完全支持,無前綴。

Firefox:4+(2011年發(fā)布)使用 -moz-calc(),16+ 開始支持無前綴。

Safari:6+(2012年發(fā)布)完全支持,無前綴。

Edge:全部版本支持(包括基于 EdgeHTML 的早期版本和基于 Chromium 的新版)。

Internet Explorer:IE9 部分支持(不支持用在 background-position 上,但支持 width 等屬性);IE10+ 完全支持。

Opera:15+ 完全支持(基于 Chromium)。


移動(dòng)端:

iOS Safari:6+ 完全支持。

Android Browser:4.4+ 完全支持;部分舊版本(4.0–4.3)需要 -webkit-calc(),但份額已極低。

Chrome for Android、Firefox for Android 等均完全支持。


關(guān)鍵字: 網(wǎng)頁(yè)制作 calc() CSS

上一篇:網(wǎng)站制作:10個(gè)冷門HTML標(biāo)簽,讓前端效率翻倍

版權(quán)所有 新疆二域信息技術(shù)有限公司 All Rights Reserved 地址:烏魯木齊市北京南路高新街217號(hào)盈科廣場(chǎng)B座615 備案號(hào):新ICP備14003571號(hào)-6 新公網(wǎng)安備 65010402000050號(hào)