CSS的calc函數不會還有人沒有用吧
theme: fancy highlight: atom-one-light
持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第19天,點擊查看活動詳情
Hi~,我是一碗周,如果寫的文章有幸可以得到你的青睞,萬分有幸~
🥭 寫在前面
CSS3新增的函數中有一個非常好用的函數,就是calc()
函數,用過的都説好,這篇文章我們來嘮一老calc函數。
🍎 calc函數怎麼用
CSS的calc()
函數可以實現屬性值的計算,例如下面這段代碼:
css
min-height: calc(100vh - 128px);
這段代碼通常會出現在佈局中,64px
為頂部欄和底部欄的高度,這樣就可以輕鬆實現Sticky Footer佈局。
calc()
函數支持四則運算,但是乘法中必須有一個值是數字,除法的除數必須也是數字(不能是0)。
🍑 calc函數不生效?
在使用calc()
函數時,可能會出現不生效的問題,究其原因,就是你的VSCode沒有開代碼格式化功能(開個玩笑);如果我們將上面那帶代碼修改成:
css
min-height: calc(100vh-128px);
他就不會生效,原因是這個屬性值被解析成兩個長度單位,分別是100vh
和-128px
,所以在我們使用**和****運算符時兩邊必須要有空白字符。
🍏 使用calc函數完成一些佈局方案
CSS3的calc()
函數可以幫助我們實現很多佈局方案,我們依次介紹一下。
🍒 水平垂直居中
步驟如下:
-
使子元素相對於容器元素定位
-
子元素開啟絕對定位
-
設置該元素的偏移量,值為
50% 減去寬度/高度的一半
實現CSS代碼如下:
css
.parent {
/* 1. 使子元素相對於本元素定位 */
position: relative;
}
.child {
/* 2. 開啟絕對定位 */
position: absolute;
/* 3. 設置該元素的偏移量,值為 50%減去寬度/高度的一半 */
left: calc(50% - 150px);
top: calc(50% - 150px);
}
🍓 兩列布局
步驟如下:
-
左邊列開啟浮動
-
右邊列開啟浮動
-
右邊列寬度為父級 100%減去左列的寬度
實現CSS代碼如下:
css
.left {
/* 左邊列開啟浮動 */
float: left;
}
.right {
/* 右邊列開啟浮動 */
float: left;
/* 寬度減去左列的寬度 */
width: calc(100% - 200px);
}
🫐 sticky footer佈局
使用calc
函數實現sticky footer佈局比較簡單,中間的容器最少高度為視口寬度的100% - 頭部和底部兩部分的高度
即可完成該功能。
實現CSS代碼如下:
css
.container {
/* 這裏的 中間 部分的容器最少為視口寬度的 100% - 頭部和底部兩部分的高度即可完成該功能 */
min-height: calc(100vh - 200px);
}
🍈 全屏佈局
實現步驟如下:
-
通過
calc
函數計算出中間容器的高度。 -
中間出現滾動條的容器設置
overflow: auto
即出現滾動條的時候出現滾動條。
實現CSS代碼如下:
css
.content {
overflow: hidden;
/* 通過 calc 計算容器的高度 */
height: calc(100vh - 200px);
}
.left {
height: 100%;
}
.right {
/* 如果超出出現滾動條 */
overflow: auto;
height: 100%;
}
.right-in {
/* 假設容器內有500px的元素 */
height: 500px;
}
{完}
- 用ChatGPT學Nginx是一種什麼體驗
- 【好物分享】分享給前端開發的28個資源(網站、軟件、插件),簡直是提高效率必備
- Vite3.0都來了,你還捲動嗎?(Vite3.0新特性一覽)
- 【好物分享】在命令行讀Markdown,這個感覺太舒服了
- 從0開始使用pnpm構建一個Monorepo方式管理的demo
- 我畫了5張腦圖可以讓你快速入門TypeScript
- 我看着MDN文檔,手寫了幾個數組實例方法
- 淺談JavaScript中的特殊函數
- 如何通過SSH配合VSCode收穫超舒適的遠程開發體驗
- CSS的calc函數不會還有人沒有用吧
- 【戲玩算法】12-圖
- 誰説前端不能搞紅黑樹,用這55張圖拿JS一起手撕紅黑樹
- 簡單總結了10個JavaScript代碼優化小tips
- NaiveUI中看起來沒啥用的組件(文字漸變)實現原來這麼簡單
- 面試官讓我用Flex寫色子佈局,我直接給寫了6個
- Vue3 TS Vite NaiveUI搭建一個項目骨架
- 用一萬多字從頭到尾介紹【函數式編程】
- 這8張腦圖幾乎概括了所有的佈局方案,確定不看看嗎?
- 【戲玩算法】07-字典
- 還在console.log一把梭嗎?console還有其他騷操作