書寫頁面樣式與佈局是前端工程師Coding
中必不可少的一項工做,在定義頁面元素的樣式時,padding
屬性也是常常被使用到的。css
padding
屬性用於設置元素的內邊距,其值能夠是length
、inherit
,固然也能夠是百分比
。html
今天爲何會聊到padding-top
設置百分比時的參考對象這個話題呢,這還要從一道不那麼正經的面試題提及~前端
在對面,一本正經的面試官和善可親的說道:咱們來道簡單的面試題,寫寫代碼吧。你一臉微笑的說道:好噠。面試
頁面中有一個元素A,請實現如下需求:前端工程師
只要是對CSS瞭解的一些的同窗,實現1和2都是很是簡單的,並且方式也是多種多樣的。那如何能設置讓元素A的高度始終爲寬度的一半呢?上代碼~架構
頁面佈局:要考慮DOM的結構和CSS的樣式框架
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } html, body { width: 100%; height: 100%; /* 設置子元素A垂直水平居中 */ display: flex; align-items: center; justify-content: center; } .a { /* 設置margin左右間距爲10px */ margin: 0 10px; background: #F00; /* 設置寬度爲100vw,實際寬度會受到彈性盒子的影響 */ width: 100vw; /* calc方法動態計算:height的值爲寬度的1/2,因此是 (100vw - 20px) / 2 */ height: calc(50vw - 10px); } </style> </head> <body> <div class="a"></div> </body> </html>
在上述的代碼中咱們藉助calc方法實現了設置元素的高度爲寬度的1/2佈局
此時心裏是否有些竊喜,又搞定了一個問題,飽含自信(傲嬌)的目光看向了面試官。
然而,當你沒有get到面試官的G
點時,面試官又和善可親(冷若冰霜)的說道「還有別的方法嗎?」學習
還能有啥別的辦法呢?你無助的捋了捋本身那爲數很少的秀髮。flex
啦啦啦,快來使用padding-top
,哼哼哈嘿...
當padding-top的值爲百分比時,參考的對象是父級元素的寬度
這句話圈起來,是重點,要考~
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } html, body { width: 100%; height: 100%; /* 設置子元素A垂直水平居中 */ display: flex; align-items: center; justify-content: center; } .a { /* 設置margin左右間距爲10px */ margin: 0 10px; background: #F00; /* 設置寬度爲100%,父級容器寬度的100%,實際寬度會受到彈性盒子的影響 */ width: 100%; height: 0; /* calc方法動態計算:padding-top的值爲父級容器寬度的1/2,因此是 (100vw - 20px) / 2 */ padding-top: calc(50% - 10px); } </style> </head> <body> <div class="a"></div> </body> </html>
此處也能夠選擇使用
padding-bottom
此刻你再擡頭時,看到了面試官那飽含了心滿意足、孺子可教的熱烈眼神...
當padding-top
、padding-bottom
、margin-top
、margin-bottom
屬性設置爲百分比時,參考對象都是父級元素的寬度
要記住呀,下回還得考~
以上就是胡哥今天給你們分享的內容,喜歡的小夥伴記得點贊
、收藏
呦,關注胡哥有話說,學習前端不迷路,歡迎多多留言交流...
胡哥有話說,專一於大前端技術領域,分享前端系統架構,框架實現原理,最新最高效的技術實踐!