CSS布局技巧

最近學(xué)習(xí)了CSS的一些知識,下面總結(jié)一下我學(xué)到的CSS布局技巧

1.左右布局

(1). 浮動
左右布局也叫橫向布局,常用的方法是:
在所有子元素上添加浮動float:left;或float:right;
在父元素上添加上類名 clearfix

例如做一個(gè)導(dǎo)航欄時(shí)划址,
HTML如下

<div class="wrap clearfix">
    <div class="left"><a href="#">關(guān)于</a></div>
    <div class="middle"><a href="#">技能</a></div>
    <div class="right"><a href="#">作品</a></div>
</div>

css樣式如下:

div.wrap {
    margin: 0;
    padding: 0;
    margin-top: 3px;
}
div.wrap>div {
    float: left;
    margin: 0 17px;
}

clearfix類的css樣式如下:

.clearfix::after {
  content:'';
  clear:both;
  display:both;
}

最終效果:


image.png

(2) 絕對定位position : absolute;
在所有子元素上添加絕對定位position : absolute;
在父元素上添加上相對定位或絕對定位position : relative;或position : absolute;

同樣是上面的例子
css樣式如下:

div.wrap {
        position: relative;
}
div.wrap>div {
    position: absolute;
}
div.wrap>.left {
        left:0;
        top:0;
}
div.wrap>.right{
        right:0;
        top:0;
}

2.左中右布局

左中右布局可以根據(jù)情況使用左右布局中浮動和絕對定位兩種方法梦抢,另外一種是BFC三欄布局:

<!DOCTYPE html>
<html lang="en">
<head>
    <style>
    .left {
        float: left;
        height: 200px;
        width: 100px;
        margin-right: 20px;
        background-color: red;
    }
    .right {
        width: 200px;
        height: 200px;
        float: right;
        margin-left: 20px;
        background-color: blue;
    }   
    .main {
        height: 200px;
        overflow: hidden;
        background-color: green;
    }
    </style>
</head>
<body>
    <div class="container">
        <div class="left"></div>
        <div class="right"></div>
        <div class="main"></div>
    </div>
</body>
</html>

3.水平居中

(1). 對于行內(nèi)元素, 可以給行內(nèi)元素的父元素設(shè)置 text-align:center,即可實(shí)現(xiàn)行內(nèi)元素水平居中

span.parent {
        text-align:center;
}

(2). 對于定寬塊級元素, 對該塊級元素設(shè)置 margin:0 auto,前提是居中的塊級元素寬度必須固定(定寬)

div{
        width:100px;
        margin:0 auto;
}

(3). 對于不定寬塊級元素, 將該塊級元素設(shè)置 行內(nèi)塊級元素(display: inline-block;)限嫌,在對該元素的父級元素設(shè)置text-align:center送粱;

div{
        display: inline-block;
        text-align:center;
}

(4). 對于浮動元素, 可以設(shè)置父元素寬度設(shè)置為fit-content(CSS3),并且配合margin:0 auto;

.parent{
        width:fit-content;
        margin:0 auto;
}

(5). 使用絕對定位褪贵,以及transform屬性(CSS3), 子元素設(shè)置如下:

.parent {
        position: relative;
}
.son{
        position:absolute;
        left:50%;
        transform:translate(-50%,0);
}

4.垂直居中

(1). 對于單行文本, 則可設(shè)置 line-height 等于父元素高度
(2). 使用絕對定位,以及transform屬性(CSS3), 設(shè)置父元素相對定位(position:relative), 子元素如下css樣式:

.parent {
        position: relative;
}
.son{
        position:absolute;
        top:50%;
        transform: translate(-50%,-50%);
}

(3). 對于不定寬塊級元素, 將該塊級元素設(shè)置 行內(nèi)塊級元素(display: inline-block;)抗俄,利用偽元素和vertical-align: middle脆丁,樣式如下:

.parent::after,
.son{
        display:inline-block;
        vertical-align:middle;
}
.parent::after{
        content:'';
        height:100%;
}

5.其他小技巧

(1). 元素脫離文檔流的方法:

  • position: fixed; 脫離文檔流相對于窗口定位
    這種方法會使寬度往內(nèi)縮,寬度需要重新設(shè)置
  • 絕對定位:position:absolute;
    脫離文檔流相對于祖先中第一個(gè)relative元素定位

(2). :nth-child() 偽類選擇器
nth-child(odd)父元素下的奇數(shù)子元素
nth-child(even)父元素下的偶數(shù)子元素

(3). 一些小工具

  • iconfont.cn 這個(gè)網(wǎng)站里有各種小圖標(biāo)可以用动雹,搜索后選擇合適的圖標(biāo)加入項(xiàng)目槽卫,可以自動生成代碼
  • generator 對于一些寫起來較為復(fù)雜的CSS樣式,例如linear-gradient或者box-shadow,可以直接搜索 linear-gradient generator 這個(gè)工具會提供圖形化界面洽胶,操作非常方便,直接生成代碼裆馒,復(fù)制過來就行了
  • CSS Tricks 這個(gè)網(wǎng)站里面有很多大神的CSS作品例子姊氓,提供了源代碼,可以直接在里面搜索相應(yīng)的關(guān)鍵詞喷好,模仿學(xué)習(xí)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翔横,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梗搅,更是在濱河造成了極大的恐慌禾唁,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件无切,死亡現(xiàn)場離奇詭異荡短,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)哆键,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門掘托,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人籍嘹,你說我怎么就攤上這事闪盔。” “怎么了辱士?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵泪掀,是天一觀的道長。 經(jīng)常有香客問我颂碘,道長异赫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮祝辣,結(jié)果婚禮上贴妻,老公的妹妹穿的比我還像新娘。我一直安慰自己蝙斜,他們只是感情好名惩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孕荠,像睡著了一般娩鹉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上稚伍,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天弯予,我揣著相機(jī)與錄音,去河邊找鬼个曙。 笑死锈嫩,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的垦搬。 我是一名探鬼主播呼寸,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猴贰!你這毒婦竟也來了对雪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤米绕,失蹤者是張志新(化名)和其女友劉穎瑟捣,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體栅干,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迈套,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碱鳞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片交汤。...
    茶點(diǎn)故事閱讀 40,090評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖劫笙,靈堂內(nèi)的尸體忽然破棺而出芙扎,到底是詐尸還是另有隱情,我是刑警寧澤填大,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布戒洼,位于F島的核電站,受9級特大地震影響允华,放射性物質(zhì)發(fā)生泄漏圈浇。R本人自食惡果不足惜寥掐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望磷蜀。 院中可真熱鬧召耘,春花似錦、人聲如沸褐隆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庶弃。三九已至衫贬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間歇攻,已是汗流浹背固惯。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缴守,地道東北人葬毫。 一個(gè)月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像屡穗,于是被迫代替她去往敵國和親贴捡。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評論 2 355