摘要:移動(dòng)端比較常見的一個(gè)需求是高度根據(jù)寬度進(jìn)行自適應(yīng)。等于視口高度的。一布局場景首頁導(dǎo)航布局有間距樣式代碼頁面布局與布局相同代碼解析去除最后一個(gè)元素值設(shè)置布局經(jīng)常會使得元素元素間莫名其妙出現(xiàn)空隙。
寫在最前:移動(dòng)端中導(dǎo)航的網(wǎng)格式布局無處無在,寬高怎么設(shè)置相適應(yīng)?元素怎么居中對齊?不同場景怎么選擇代碼最高效?巧妙使用margin、padding等基礎(chǔ)屬性,小小技巧可以解決許多煩惱!
一、Float布局 1、場景首頁導(dǎo)航布局(無間距)
3、樣式代碼汽車票船票
.g-grid { text-align: center; overflow: hidden; background: #fff; } .g-grid-item { position: relative; float: left; width: 20%; padding: 10px 0; text-align: center; } .g-grid-imgWrap { display: inline-block; width: 30%; height: 0; padding-bottom: 30%; } .g-grid-imgWrap img { width: 100%; } .g-grid-label { font-size: 12px; color: #333; }4、代碼解析(高度根據(jù)寬度進(jìn)行自適應(yīng)問題)
①、父元素g-grid通過overflow: hidden建立BFC,使得整體高度從1變成自適應(yīng)。通??墒褂胏learfix來清除浮動(dòng)的副作用
.clearfix:after{ display: block; clear: both; content: ""; visibility: hidden; height: 0; } .clearfix{ zoom:1; }
②、子元素g-grid-item通過float: left屬性浮動(dòng)起來,這也是該方法最主要的屬性。
③、移動(dòng)端比較常見的一個(gè)需求是高度根據(jù)寬度進(jìn)行自適應(yīng)。這個(gè)時(shí)候可以使用到padding-bottom。當(dāng)width和padding-bottom相等時(shí)就實(shí)現(xiàn)了寬高相等(注意要將height置為0),舉一反三,各種比例下也可以設(shè)置。
width: 30%; height: 0; padding-bottom: 30%;
引申:vh和vw是css引入視口的概念來代替顯示器的物理尺寸,它們作為單位的時(shí)候也可實(shí)現(xiàn)該效果,雖然現(xiàn)在兼容性慢慢變好,但是Android4.4之前不支持是硬傷。
vw:1vw等于視口寬度的1%。
vh:1vh等于視口高度的1%。
height:1vw; width:1vw;一、Display:inline-block布局 1、場景
首頁導(dǎo)航布局(有間距)
頁面布局與Float布局相同
.g-grid { margin-right: -2%; padding: 10px 10px 0; font-size: 0; background: #fff; } .g-grid-item { position: relative; display: inline-block; width: 31.33%; padding-bottom: 31.33%; margin-right: 2%; margin-bottom: 10px; } .g-grid-imgWrap { position: absolute; top: 0; left: 0; right: 0; bottom: 20px; } .g-grid-imgWrap img { width: 100%; height: 100%; } .g-grid-label { position: absolute; bottom: 0; width: 100%; height: 20px; line-height: 20px; font-size: 12px; color: #333; text-align: center; }3、代碼解析(去除最后一個(gè)元素margin-right值)
①、g-grid-item設(shè)置display:inline-block布局經(jīng)常會使得元素元素間莫名其妙出現(xiàn)空隙??梢栽趯懘a時(shí)使得元素和元素緊緊相連,但不太方便我們編寫代碼,IDE格式化之后也會自動(dòng)分開。此處建議設(shè)置父元素g-grid的font-size屬性為0就可以去掉空隙。
②、g-grid-item這些子元素之間需要間隔時(shí)用到margin-right(或者margin-left),經(jīng)常要處理最后一行設(shè)置為margin-right(或者margin-left)為0。有以下解決方法:
手動(dòng)或者js為最后一個(gè)元素添加一個(gè)margin-right:0
通過偽類:nth-child(3n)來設(shè)置margin-right:0
在g-grid-item的父元素設(shè)置margin-right: -2%;(推薦該方法)
樓上的float布局也可以使用該方法去設(shè)置間隙
③、寬高多少不僅僅可以通過設(shè)置值來決定,該例子里面使用以下代碼實(shí)現(xiàn)了width:100%,高度為父級高度減去20px,根據(jù)場景不同來決定寫法。
position: absolute; top: 0; left: 0; right: 0; bottom: 20px;
④、float布局和display:inline-block布局的水平居中通常使用text-align: center;,子元素在父元素里水平居中要求子元素display不為block
三、Grid布局 1、場景網(wǎng)格布局(無間距)
3、樣式代碼汽車票船票
.g-grid { display: grid; grid-template-columns: repeat(3, 33.33%); grid-template-rows: repeat(3, 100px); background: #fff; } .g-grid-item { display: inline-grid; border-right: 1px solid #eee; border-top: 1px solid #eee; align-content: center justify-items: center; } .g-grid-item:nth-child(3n) { border-right: none; } .g-grid-item img { height: 30px; width: 30px; } .g-grid-label { font-size: 12px; color: #333; }4、代碼解析
①、grid布局通過grid-template-columns和grid-template-rows來設(shè)置幾列幾行
②、g-grid-item通過設(shè)置align-content: center;來使得子元素都處于垂直居中,justify-items: center來使得子元素都處于水平居中
九宮格布局(有空隙)
頁面布局與Grid布局相同請輸入代碼
.g-grid { display: flex; flex-wrap: wrap; } .g-grid-item { flex: 0 1 31.33%; margin: 0px 1% 10px; padding: 1.2rem; box-sizing: border-box; text-align: center; background: #eee; } .g-grid-item img { height: 30px; width: 30px; } .g-grid-label { font-size: 12px; color: #333; }3、代碼解析(Flex換行顯式且存在間距)
①、Flex布局通過flex-wrap: wrap;來進(jìn)行換行,但當(dāng)需要元素與元素之間存在間距時(shí),不能使用justify-content: space-between;,減少一個(gè)元素會變成下圖:
所以該例子通過margin來設(shè)置間距,這個(gè)是比較通用的方法。
@vczhan 提供了一個(gè)思路,父級為justify-content: space-between;或者justify-content: space-around;的同時(shí),加上
.g-grid::after { content: ""; width: 31.33%; }
可以解決三列下的問題,但是四或以上列下不固定個(gè)數(shù)的情況下還是不適用,請根據(jù)自己使用場景選擇方案。同理 @Ice丶Wing 提供的空div思路類似,也可以這么處理。
(再次謝謝兩位!)
②、.g-grid-item設(shè)置flex: 0 1 31.33%;意思是元素的本來大小為父元素的31.33%,空間不足時(shí)該元素將縮小,存在剩余空間也不放大。
當(dāng)該值設(shè)為flex: 1 1 31.33%;時(shí),減少一個(gè)元素會變成下圖:
尊重原創(chuàng),如需轉(zhuǎn)載請注明出處!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/116255.html
摘要:接下來做端一般都寫手機(jī)最大也就先隱藏手機(jī)菜單和按鈕優(yōu)先級問題解決方法直接使用用谷歌開發(fā)者工具查看優(yōu)先級里面的垂直居中再把寫成布局只要改成里面的子項(xiàng)目就變成一行了菜單導(dǎo)航導(dǎo)航導(dǎo)航導(dǎo)航導(dǎo)航到航導(dǎo)航導(dǎo)航導(dǎo)航導(dǎo)航方法切換元素的可見狀態(tài)。 CSS5:移動(dòng)端頁面(響應(yīng)式) 如果手機(jī)端和PC端頁面差別很大,就不要寫響應(yīng)式,不要寫@media 就直接將兩個(gè)頁面拆開成兩個(gè)文件就可以了.關(guān)于判斷是手機(jī)端你...
摘要:今天在這里就略微談一下響應(yīng)式布局吧想必大家都知道響應(yīng)式布局已經(jīng)在這個(gè)移動(dòng)端為主流的時(shí)代成為了避不開的話題之一接下來我們從小到大來談?wù)勴憫?yīng)式網(wǎng)頁設(shè)計(jì)的基本原則為什么為什么需要響應(yīng)式設(shè)計(jì)想必這點(diǎn)不說大家都能想到答案現(xiàn)在是一個(gè)移動(dòng)為先的時(shí)代我們要 今天在這里就略微談一下響應(yīng)式布局吧,想必大家都知道響應(yīng)式布局已經(jīng)在這個(gè)移動(dòng)端為主流的時(shí)代成為了避不開的話題之一,接下來我們從小到大來談?wù)勴憫?yīng)式網(wǎng)頁...
摘要:年月初,中共中央國務(wù)院發(fā)布了關(guān)于構(gòu)建和諧勞動(dòng)關(guān)系的意見,明確提出切實(shí)保障職工休息休假的權(quán)利,完善并落實(shí)國家關(guān)于職工工作時(shí)間全國年節(jié)及紀(jì)念日假期帶薪年休假等規(guī)定。下一步要抓好這項(xiàng)工作的落實(shí)。 一直以來響應(yīng)式布局都是利用的bootstrap來做,但是在手機(jī)上瀏覽的話,bootstrap樣式文件還是有點(diǎn)大 118k,如果再用上一些js庫的話,上個(gè)幾百k是輕輕松松了,這樣一來用移動(dòng)流量的話真的...
摘要:年月初,中共中央國務(wù)院發(fā)布了關(guān)于構(gòu)建和諧勞動(dòng)關(guān)系的意見,明確提出切實(shí)保障職工休息休假的權(quán)利,完善并落實(shí)國家關(guān)于職工工作時(shí)間全國年節(jié)及紀(jì)念日假期帶薪年休假等規(guī)定。下一步要抓好這項(xiàng)工作的落實(shí)。 一直以來響應(yīng)式布局都是利用的bootstrap來做,但是在手機(jī)上瀏覽的話,bootstrap樣式文件還是有點(diǎn)大 118k,如果再用上一些js庫的話,上個(gè)幾百k是輕輕松松了,這樣一來用移動(dòng)流量的話真的...
摘要:云計(jì)算在年月達(dá)到了較高的點(diǎn)擊率次。而大數(shù)據(jù)正處于上升期,云計(jì)算正處于興旺期,網(wǎng)格計(jì)算沒有再出現(xiàn)。所以,我們第四屆中國云計(jì)算大會就是以示范引領(lǐng)創(chuàng)新實(shí)踐作為一個(gè)口號。就是說云計(jì)算已經(jīng)成為行業(yè)的主旋律,不再動(dòng)搖不再懷疑。 云計(jì)算正在走向成熟,大數(shù)據(jù)正在發(fā)展 在經(jīng)歷了對云計(jì)算的認(rèn)識以后,已經(jīng)成為當(dāng)前信息通信行業(yè)的主旋律。我們可以用維基百科看一看當(dāng)前對三個(gè)重要技術(shù)概念的理解。一個(gè)是曾經(jīng)人們跟云計(jì)算混...
閱讀 1575·2021-10-25 09:44
閱讀 2940·2021-09-04 16:48
閱讀 1570·2019-08-30 15:44
閱讀 2513·2019-08-30 15:44
閱讀 1743·2019-08-30 15:44
閱讀 2829·2019-08-30 14:14
閱讀 2980·2019-08-30 13:00
閱讀 2158·2019-08-30 11:09