摘要:布局方式布局的傳統(tǒng)解決方案,基于盒狀模型,依賴屬性屬性屬性。它對于那些特殊布局非常不方便,比如,垂直居中就不容易實現(xiàn)。關(guān)于布局,當(dāng)然肯定還有更多的更好的方法。
接觸前端開發(fā)也有半年了,每當(dāng)需要將一個空白的紙,”畫“成一個頁面的時候,總會出現(xiàn)不知所措的幾秒鐘。除了因為對css中的各種屬性的不熟練之外,更難為人的是怎么簡練的將這些屬性排列組合起來。其實靜下心來,仔細(xì)想一想,無非就是整體-->局部這么個思路。所謂整體,就是頁面的局,局部就是各自的整體到局部,再加上一些展示性的屬性的組合的這么個過程??紤]好瀏覽器的兼容性,做一個盡量完美的布局,是寫好頁面樣式的關(guān)鍵一步。
可是,我總是希望能用盡量少的代碼,來表現(xiàn)盡量多的內(nèi)容,但是,如果不考慮其他因素,這一點很容易做到。比如 ,我們要分列,flex足矣。但其他因素終歸是必須要顧及的。
布局方式布局的傳統(tǒng)解決方案,基于盒狀模型,依賴 display屬性 + position屬性 + float屬性。它對于那些特殊布局非常不方便,比如,垂直居中就不容易實現(xiàn)。
第一 標(biāo)準(zhǔn)流布局
第二 浮動布局
第三 定位布局
案例一--水平居中從一個最簡單的居中布局說起
就可以有好多種實現(xiàn)方式,
比如第一種inline-block+text-align的常見方式:
.child{display:inline-block;} .parent{text-align:center;}
這種方法兼容性比較好,雖然ie6,7不支持inline-block,但是我們可以通過
display:block;zoom:1 近似于 inline-block
第二種table+margin的方式,同樣是上例的結(jié)構(gòu):
.child{display:table;margin:0 auto;}
這種方式需要的css代碼很簡單,對ie8以上也能很好的支持,但是由于ie6,7對display:table不認(rèn),但是我們可以將結(jié)構(gòu)改成table的結(jié)構(gòu)也能達(dá)到效果。
第三種方式采用absolute+trasnform的方式
.parent{position:relative;} .child{position:absolute;left:50%;transform:translateX(-50%);}
這種方式關(guān)鍵的一點是利用transform屬性,旋轉(zhuǎn)自身的50%。達(dá)到居中的效果。但是ie6,7,8均不能很好的支持。
第三種方式是通過flex+justify-content的組合實現(xiàn)的
.parent{display:flex;justify-content:center;}
這種方同第二種類似,css代碼比較簡單,這里是不需要對子元素進(jìn)行任何的設(shè)置,這是由于flex的子元素默認(rèn)是flex-item,寬為元素寬。關(guān)于flex的詳細(xì)內(nèi)容,可以參考這個介紹flex布局
當(dāng)然,這里的
justify-content:center;
也有替代的方法,可以通過
.child{margin:0 auto;}
實現(xiàn)相同的效果。
案例二--垂直居中垂直居中,這里總結(jié)三種常見的方式
利用table-cell
.parent{display:table-cell;vertical-align:middle;}
這種方式兼容ie8及以上,對ie6,7可以通過前面介紹的,改成table的結(jié)構(gòu)來兼容。
借助定位和transform屬性
.parent{position:relative;} .child{position:absolute;top:50%;transform:translateY(-50%)}
css3的flex
.parent{display:flex;align-item:center;}案例三--水平垂直居中
水平垂直居中就可以綜合考慮前面的水平居中的一些方法和垂直居中的一下方法了。兼容性當(dāng)然跟前面考慮的原因也類似,這里總結(jié)了三種。
基本水平居中方法加table-cell
.parent{text-align:center;display:table-cell;vertical-algin:center;} .child{display:inline-block;}
定位+ transform屬性
.parent{position:relative;} .child{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
flex
.parent{display:flex;justify-content:center;align-items:center;}
這種情況下,我們也是不需要對.child進(jìn)行特殊的設(shè)置就可以達(dá)到垂直水平居中的效果。
關(guān)于布局,當(dāng)然肯定還有更多的更好的方法。而且,從更宏觀的角度,還有對于全局的一個布局,比如top固定,或者一部分定寬,一部分自適應(yīng)等等要求,這里僅僅是總結(jié)了一下常見的,這個需要不斷的在實踐中進(jìn)行摸索和改進(jìn),css的學(xué)習(xí)不斷的累積很重要。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/115015.html
摘要:經(jīng)過半年的打磨,正式發(fā)布,主要是新增了一些常用組件,并使用命名,為接下來的微信小程序開發(fā)做好準(zhǔn)備。這兩種方式實現(xiàn)的瀑布流式布局均支持首屏和網(wǎng)頁窗口大小改變時的列數(shù)自適應(yīng)。主要是對于標(biāo)準(zhǔn)里的布局方式草案中的布局方式進(jìn)行一些總結(jié)。 一勞永逸的搞定 flex 布局 尋根溯源話布局 一切都始于這樣一個問題:怎樣通過 CSS 簡單而優(yōu)雅的實現(xiàn)水平、垂直同時居中。記得剛開始學(xué)習(xí) CSS 的時候,看...
摘要:高度模型淺識為的簡寫,簡稱為塊級格式化上下文,為瀏覽器渲染某一區(qū)域的機(jī)制,中只有和中還增加了和。并非所有的布局都會在開發(fā)中使用,但是其中也會涉及一些知識點。然而在不同的純制作各種圖形純制作各種圖形多圖預(yù)警 一勞永逸的搞定 flex 布局 尋根溯源話布局 一切都始于這樣一個問題:怎樣通過 CSS 簡單而優(yōu)雅的實現(xiàn)水平、垂直同時居中。記得剛開始學(xué)習(xí) CSS 的時候,看到 float 屬性不...
摘要:常用布局在小程序中的應(yīng)用所有布局的根本都是個基本概念定位浮動外邊距操縱我們其他的布局實現(xiàn)方式,都是基于正常的文檔流來進(jìn)行的。具體實現(xiàn),可以使用微信小程序的單位,以及使用定位浮動布局來實現(xiàn)。 CSS 常用布局在小程序中的應(yīng)用 所有css布局的根本都是3個基本概念:定位、浮動、外邊距操縱 我們其他的布局實現(xiàn)方式,都是基于正常的文檔流來進(jìn)行的。所以我們先來看看什么是正常的文檔流。 正常文...
摘要:常用布局在小程序中的應(yīng)用所有布局的根本都是個基本概念定位浮動外邊距操縱我們其他的布局實現(xiàn)方式,都是基于正常的文檔流來進(jìn)行的。具體實現(xiàn),可以使用微信小程序的單位,以及使用定位浮動布局來實現(xiàn)。 CSS 常用布局在小程序中的應(yīng)用 所有css布局的根本都是3個基本概念:定位、浮動、外邊距操縱 我們其他的布局實現(xiàn)方式,都是基于正常的文檔流來進(jìn)行的。所以我們先來看看什么是正常的文檔流。 正常文...
閱讀 2139·2021-09-07 10:14
閱讀 1550·2019-08-30 15:53
閱讀 2323·2019-08-30 12:43
閱讀 2920·2019-08-29 16:37
閱讀 805·2019-08-26 13:29
閱讀 2061·2019-08-26 13:28
閱讀 498·2019-08-23 18:33
閱讀 3632·2019-08-23 16:09