移動端巧用margin/padding的百分比實現自適應
寫於2017-07-03,但是發現簡書比個人網站省力氣得多,遂搬家至此;
今天遇到了一個曾經認為的世紀大難題----圖片完美的自適應;
重要!敲黑板,劃重點!!
當
margin/padding
取值形式為百分比的值時,無論是left/right
,還是top/bottom
,都是以父元素的width
為參照物的!-----來自W3C標準
所以,很有必要深入研讀下W3C規範;
舉個栗子
要求:在每個原圖長寬比例不同的情況下,實現如圖的效果,且圖片寬高是百分比;
前提是不使用js
我之前的錯程式碼
<li>
<img src="">
<img src="">
<img src="">
</li>
li{
width:100%;
}
li img {
width: 32%;
float: left;
margin-right: 2%;
}
結果是這樣的————按照圖片原始比例高度自適應的;
解決辦法--設定容器的子元素或偽元素padding-bottom/top
使用margin/padding的百分比值
來解決自適應高度的關鍵在於:
容器margin/padding的百分比
參照物是父元素的寬度,而容器的width的百分比參照物也是父元素的寬度,倆屬性參照物一致,那麼想要把這倆屬性的值統一起來就很簡單了;
給img
加一個div父容器
,用百分比
給div一個寬,高
則給父容器的偽元素padding-bottom的百分比
來佔位。容器做好之後,img
用相對定位top:0;left:0;width:100%;height:100%
填滿整個div
就ok了。經測試,直接給父容器加padding-bottom百分比
也可以,但是加在偽元素上更好;
<li>
<div class="flex-pic">
<img src="">
</div>
<div class="flex-pic">
<img src="">
</div>
<div class="flex-pic">
<img src="">
</div>
</li>
li{
width:100%;
}
li .flex-pic{
width: 32%;
float: left;
margin-right: 2%;
margin-top: 8px;
position: relative;
z-index: 2;
overflow:hidden;
background:center center no-repeat;
}
.flex-pic:before{
content: "";
display:inline-block;
padding-bottom:75%;
width: 100%;
pointer-events: none;
z-index: -1;
}
.flex-pic img{
width:100%;
height:100%;
position:absolute;
top: 0;
left: 0;
}
總結
自適應的精髓在於寬度,margin/padding設定百分比
彌補了元素高度無法自適應地與元素寬度保持一致的缺陷;
版權宣告:本文原創,轉載請註明出處 https://www.jianshu.com/p/289ef32a2348
相關文章
- margin/padding百分比值的計算padding
- lib-flexible 實現移動端自適應佈局Flex
- 用margin實現兩列布局中的自適應列
- padding-bottom實現圖片自適應padding
- scss自動生成margin padding邊距CSSpadding
- Web移動端 自適應縮放介面Web
- 前端移動端自適應方案【筆記】前端筆記
- 移動端自適應佈局的最好工具-remREM
- 移動端自適應個人理解與收集——remREM
- 移動端web自適應適配佈局解決方案Web
- HTML5頁面移動端自適應佈局的實現示例程式碼HTML
- 移動端字型大小自適應程式碼例項
- 遊戲陪玩原始碼的移動端適配,應該如何實現?遊戲原始碼
- HTML5 移動端自適應方案與踩坑HTML
- 移動端頁面大小自適應程式碼例項
- vue移動端的自適應佈局的兩種解決方案Vue
- [適配性]移動Webapp自適應方案WebAPP
- 移動端適配-實踐篇
- 區別margin、padding、width、height值為百分比padding
- android自定義View(2):實現百分比自適應佈局AndroidView
- 基於vue-cli配置移動端rem自適應專案VueREM
- js實現移動端字型響應式JS
- 移動端(手機端)頁面自適應解決方案—rem佈局篇REM
- react移動端適配方案實踐React
- 報表工具怎樣適應移動端?
- 用REM單位進行移動端適配的最佳實現REM
- textarea實現高度自適應的理解
- 實現iframe內容的自適應
- margin與padding的區別padding
- viewport移動端適配View
- rem移動端適配REM
- 移動端適配方案
- jquery 實現iframe 自適應高度jQuery
- css實現左欄固定右欄自適應,高度自適應的佈局CSS
- jquery實現的iframe高度自適應效果jQuery
- 移動端適配-rem(新)REM
- 移動端web適配方案Web
- 移動端適配總結