css布局

在這里我所介紹的方法盡量做到了出現(xiàn)的bug最少、自適應(yīng)強豹悬,而且高效葵陵、實用、簡捷地實現(xiàn)常見網(wǎng)頁布局

從上到下屿衅,詳細描述內(nèi)容我就不一 一 解釋啦埃难,如字體、顏色涤久、大小涡尘、項目符號、下劃線等等响迂,請自己體會哦考抄!

CSS左右布局典型方法:

第一、網(wǎng)頁中實現(xiàn) logo 和導(dǎo)航欄的左右多列布局

logo 和 nav 都是寬度不確定蔗彤,根據(jù)內(nèi)容而定的川梅,div疯兼、a、Ul 等標簽均不用width/height 來確定寬高,目的有利于改動內(nèi)容;

?一部服、html結(jié)構(gòu)如下:

html

二擅耽、CSS具體步驟:(html從內(nèi)到外的寫法)

1、將a標簽里的兩個span的內(nèi)容通過margin、padding……屬性放到合適位置;

2、重要一步:將垂直分布的導(dǎo)航欄排列到水平線上 :

? ? ? ? 1傀缩、.topNavBar nav > ul > li{ float: left; }? ? ? ?//水平線上排列

? ? ? ? 2、給 Li 的父級元素 Ul 添加.clearfix::after{ content: "";? ? display: block;? clear: both农猬;}? ? ? ?// 消除float 帶來的bug

? ? ? ? 3赡艰、載通過margin 、padding? ?屬性將導(dǎo)航條和 logo? 至于同一個高度斤葱;

? ? ? ? 4慷垮、這一步也是在導(dǎo)航條中常見的樣式: 給最外面的 div 添加 .topNavBar{ position:fixed;}? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /*相對屏幕固定,? 將logo 及導(dǎo)航條始終位于可視頁面的頂部 */

三苦掘、網(wǎng)頁效果如圖:

導(dǎo)航條



第二换帜、頁面中間實現(xiàn)左右兩列布局

一、html結(jié)構(gòu)如下:


html

二鹤啡、CSS具體步驟:

1惯驼、.userCard .picture{? float: left; }? ;

.userCard .text{? float: left; }? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//將picture 和 text 浮動起來,分為左右兩部分

2递瑰、<div class="pictureAndText clearfix">? ? ? ? ? // 給父級元素添加clearfix,消除float 帶來的bug

3祟牲、.userCard dl dd,.userCard dl dt{ float: left; }? ? // 將text里面的 dt、dd 內(nèi)容 浮動起來

4抖部、.userCard dl dt{width: 30%;}? ? ? ? ? ? /* 根據(jù)內(nèi)容,將 dt说贝、dd 占有合適的寬度,只要兩者之和

? ? ? .userCard dl dt{width: 30%;}? ? ? ? ? ? ? 等于100% 即可慎颗,若有paading則寬度適可而止*/

三乡恕、網(wǎng)頁效果如圖:


產(chǎn)品描述

在此,外面兩列左右布局俯萎,內(nèi)部text 內(nèi)容再次左右兩列布局傲宜;

在這里,hello是以圖片形式顯示的夫啊,具體做法就不介紹了函卒,有興趣可以點擊下面鏈接了解具體做法:https://htmlpreview.github.io/?https://raw.githubusercontent.com/cnqinglin/The-Shapes-Of-Css.github.io/master/index_shape.html? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?復(fù)制藍色部分可以查看源代碼哦




第三、頁面中間實現(xiàn)左右多列布局

一撇眯、html結(jié)構(gòu)如下:


html

二报嵌、CSS具體步驟:

1虱咧、.userCard > footer.media > a{ display: inline-block; }? ? ? // 以內(nèi)聯(lián)元素形式顯示、塊級元 素? ? ? ? ? ? ????????????????????????????????????????????????????????????????????????????????????????形式排列

2锚国、.userCard > footer.media{ text-align: center;}? ? ?????/*通過給父級元素text-align:cernter;使a? ????????????????????????????????????????????????????????????????????????????????元素居中腕巡,inline-block 的好處是不管 有多? ? ? ? ? ? ? ? ? ? ????????????????????????????????????????????????????????????????少a 標簽都會居中,以內(nèi)容來決定寬度*/

3跷叉、.media > a >svg{ vertical-align:center;}? ? //消除dispaly:inline-block逸雹;的bug;使圖片上下間隙 ????????????????????????????????????????????????????????????????????????????一樣

三、網(wǎng)頁效果如圖:

media

CSS左右布局簡單的其它方法:

1云挟、簡單的塊級元素里頭內(nèi)容居中時外面塊級元素添加 margin:auto;? 里面內(nèi)聯(lián)元素添加 tex-align: center;即可;

2转质、想把圖片放到任意位置:最好用絕對定位:給父級元素position:relative;給自己元素position:absolute;再用 top/left/right/bottom布局园欣;





CSS水平居中方法:

1、內(nèi)聯(lián)元素內(nèi)文字水平居中:

直接加text-align:center;

2休蟹、塊級元素內(nèi)部文字或圖片居中:

先將內(nèi)容浮動沸枯,把他父級元素居中就行;比如:ol/ul 的li 里面有內(nèi)容居中時赂弓,給ol/ul 外面加div绑榴,再給div添加text-align:center;

舉例:

html:? ??

????<div>

? ? ???????? <ol>

? ? ? ????????????? <li>內(nèi)容一</li>

? ? ? ? ????????????<li>內(nèi)容二</li>

? ? ? ? ????????????<li>內(nèi)容三</li>

? ? ? ? ????????????<li>內(nèi)容四</li>

? ? ? ? ????????????<li>內(nèi)容五</li>

? ? ? ? ????????????<li>內(nèi)容六</li>

? ? ? ? ????????????<li>內(nèi)容七</li>

? ? ? ? ????????????<li>內(nèi)容八</li>

? ? ? ? ????????????<li>內(nèi)容九</li>

? ? ? ? ????????????<li>內(nèi)容十</li>

? ? ???? </ol>

? </div>

css

? ??????????div{

????????????????? border:1px solid red;

????????????????? text-align:center;

????????????????}

? ? ? ? ? ? ol{

? ????????????????list-style:none;

? ????????????????display:inline-block;

????????????}

? ? ? ? ? li{

? ????????????????float:left;

? ????????????????padding-right:30px;

????????????}

結(jié)果:

內(nèi)外兩次水平居中

CSS垂直居中方法:

1、塊級元素里內(nèi)容垂直居中:

????(1)? ?想要一個把 div 高度最終設(shè)為為 30px盈魁,div 里有內(nèi)聯(lián)元素(一行字)垂直居中翔怎,字的大小為 14px :?

????????方法一:給 div 的樣式為 font-size: 14px; line-height: 20px; padding: 5px 0;?

????????方法二:給 div 的樣式為 font-size: 14px; line-height: 24px; padding: 3px 0;?

????????方法三:給 div 的樣式為 font-size: 14px; line-height: 30px;

????(2)? div里面有個div,想把里面的div垂直水平都居中:

? ? ? ? 第一種情況:

? ? ? ? 需要外部div設(shè)為屏幕一樣寬高(外部div高確定)里面的居中杨耙,(定寬定高)則做法:

? ??????html:? ?<div class='dad'><div class='son'></div></div>

????????css:? ? .dad{ box-sizing:border-box;height:100vh;}

? ? ? ? ? ? ? ? ? ?.son{ width:? ?px; height:? ? px; padding:? ?px; margin:auto; position:absolute; right:0px; left:0px; top:0px;bottom:0px;}

????????第二種情況:

? ? ? ? ?外部div的高度寬度都不確定赤套,里面的div居中的做法:

? ??????html:? ? <div class='dad'><div class='son'></div></div>

????????css:? ? .dad{ display:flex;justify-content:center;align-items:center;}

? ? ? ? ? ? ? ? ? ?.son{ width:? ?px; height:auto; padding:? ?px;}

2、內(nèi)聯(lián)元素里內(nèi)容垂直居中:

方法一:給文字添加font-size.再給它設(shè)置一樣的上下padding珊膜;

方法二:

? ??????????????????????????????<html>

? ? ? ????????????????????????????????<span>

? ????????????????????????????????????????hahhashshdd哈哈哈fkslj 發(fā)的水庫和第三方庫河水庫防洪看 鳳凰? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? u'k'f'sh'f'd'k'dasjkdkbsdfbfsdkhbshdbfhsdbhfb房貸首付fksdbfsdsf? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????bhhahhhahhah是哈韓圣誕卡社比菸眨卡不哭哈不是靠好吧點回? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????復(fù)BASF吧

????????????????????????????????????</span>

????????????????????????????</html>

??????????????????????????????span{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?border:1px solid red;(這個可忽略)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?display:inline-block;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?padding-top:20px;

? ????????????????????????????????????padding-bottom:20px;

? ????????????????????????????????????line-height:20px;

????????????????????????????????????}

內(nèi)聯(lián)元素垂直居中

一般不使用vertical-align:center;display:inline-block;時出bug時才用到;

若在div中只有文字建議用第一個方法车柠,div中有其他塊級元素或結(jié)構(gòu)較復(fù)雜剔氏,建議使用方法二:好處是不局限于內(nèi)容多少


以上全部內(nèi)容概括:布局問題都涉及到水平垂直居中,垂直居中較簡單竹祷,而水平居中無非以下兩種方法:

? ?????????1谈跛、父元素:text-align:center;? ? ? ?

? ??????????????子元素:display:inline-block;? ?通常這個方法有bug,比如ul>li水平居中時中間會出來空隙。

? ? ? ? ? ?2溶褪、父父元素:text-align:center;? ?

? ??????????????父元素 :?.clearfix{content:"";display:block;clear:both;}? ;? ? ? ? ?在這里有時需要讓父元素緊緊包圍時不要寫clearfix币旧,不然會把整個寬度包含進來。? ? ? ??

? ??????????????子元素:float:left/right;


定位問題:

1猿妈、絕對定位:脫離文檔流

? ?方法1: position:fixed;? ?相對于屏幕固定吹菱;一般用于背景圖巍虫;

2、相對定位:沒有脫離文檔流鳍刷,相對父級元素定位占遥,就是相對于之前的位置而按要求移動

? ? 方法:????????????父元素:position:relative;? ? ?//但是添加了這個屬性后就不脫離文檔流了

? ? ? ? ? ? ? ? ? ? ? ? ? 子元素:position:absolute;? ? //這一步脫離文檔流了

3、脫離文檔流方法:

? ??????方法1: position:fixed;? ?相對于屏幕固定输瓜;一般用于背景圖瓦胎;

????????方法2: position:absolute;? ?相對于父級元素定位;

? ??????方法3: float:left;? ?浮動起來尤揣;


元素高度:

1搔啊、內(nèi)聯(lián)元素:

? ? ????????內(nèi)聯(lián)元素是不接受高度的,由內(nèi)容來決定(行高)高度北戏,非要給它設(shè)置寬高负芋,添加display:inline-block;屬性,display:inline-block;屬性使元素以內(nèi)聯(lián)元素形式排列嗜愈,塊級元素樣式顯示旧蛾;

? ? ? ? ? ? (內(nèi)聯(lián)元素的左右會受margin\padding的影響,但高度不受影響蠕嫁;)

2锨天、塊級元素:

? ? ? ? ? ? 塊級元素是由其內(nèi)部文檔流總和決定;

文檔流Normal? Flow:內(nèi)聯(lián)元素從左往右流動剃毒,遇到阻礙就會換行病袄;塊級元素從上往下、每一個元素占一行迟赃、(分別另起一行流動)陪拘、依次流動;

?


……………………………………div的高度有誰來決定:…………………………………………

1纤壁、在div中只有多個內(nèi)聯(lián)元素(span里文字)時:div的高度是有行高決定

? ??????文字省略溢出:

?????????1左刽、一行文本:給父級元素添加:white-space:nowrap;? //多出的隱藏掉? ?overflow:hidden;? ?text-overflow: ellispsis;

?? ??????2、多行文本:直接在谷歌上搜:css moulti line text ellipsis 即可酌媒;

?2欠痴、在div中有只塊級元素時:? ?分情況:看看margin合不合并決定高度問題

? ??????margin合并問題:

????????????<div class='dad'>? ? ? ? ? ? ? ? ? ? ? 這種情況下阻止margin合并方法:(就是讓子元素全部放在父元素里面)

? ??????????<div class='son'></div>? ? ? ? ?方法1、.dad{? padding-top:xxx;padding-bottom:xxx;}? ?建議使用

????????????</div>????????????????????????????????????方法2秒咨、.dad{? overllow:hidden;}? ?不是很建議這個方法喇辽,當需要做到懸浮層時就不能這樣做;

3雨席、在div中既有內(nèi)聯(lián)元素又有塊級元素時:高度有div中內(nèi)部文檔中流元素總和決定菩咨;

總結(jié):div的高度是由它內(nèi)部文檔流的元素總和決定;如果是里面元素脫離了文檔流,則在計算高度時不算進來抽米;





常用的兩個頁面效果:

1特占、實現(xiàn)一個一比一的div的方法:

<div></div>

div{ border:? px solid red; padding-top:100%;}

2、寫出「姓名」與「聯(lián)系方式」兩端對齊的方法:

css:

? ? span {

? ? ? display: inline-block;

? ? ? width: 5em;

? ? ? text-align: justify;

? ? ? line-height: 20px;

? ? ? overflow: hidden;

? ? ? height: 20px;


? ? }

? ? span:after{

? ? ? content: '';

? ? ? display: inline-block;

? ? ? width: 100%;

? ? ? border: 1px solid blue;

? ? }


html:

<div>

? <span>姓名</span><br>

? <span>聯(lián)系方式</span>

</div>


????????????????????????????????????????????????????????????????????????????????以后會不定期更新內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末云茸,一起剝皮案震驚了整個濱河市是目,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌标捺,老刑警劉巖懊纳,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異亡容,居然都是意外死亡嗤疯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門萍倡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來身弊,“玉大人,你說我怎么就攤上這事列敲。” “怎么了帖汞?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵戴而,是天一觀的道長。 經(jīng)常有香客問我翩蘸,道長所意,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任催首,我火速辦了婚禮扶踊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘郎任。我一直安慰自己秧耗,他們只是感情好,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布舶治。 她就那樣靜靜地躺著分井,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霉猛。 梳的紋絲不亂的頭發(fā)上尺锚,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天,我揣著相機與錄音惜浅,去河邊找鬼瘫辩。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的伐厌。 我是一名探鬼主播承绸,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼弧械!你這毒婦竟也來了八酒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤刃唐,失蹤者是張志新(化名)和其女友劉穎羞迷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體画饥,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡衔瓮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抖甘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片热鞍。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖衔彻,靈堂內(nèi)的尸體忽然破棺而出薇宠,到底是詐尸還是另有隱情,我是刑警寧澤艰额,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布澄港,位于F島的核電站,受9級特大地震影響柄沮,放射性物質(zhì)發(fā)生泄漏回梧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一祖搓、第九天 我趴在偏房一處隱蔽的房頂上張望狱意。 院中可真熱鬧,春花似錦拯欧、人聲如沸详囤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纬纪。三九已至,卻和暖如春滑肉,著一層夾襖步出監(jiān)牢的瞬間包各,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工靶庙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留问畅,地道東北人。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像护姆,于是被迫代替她去往敵國和親矾端。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案卵皂? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽?zāi)J的外補...
    _Yfling閱讀 13,734評論 1 92
  • 1:盒子模型2:CSS定位與居中問題3:CSS浮動 盒子模型 div盒子模型 margin 外邊距的合并 上述代碼...
    憨憨二師兄閱讀 422評論 0 0
  • 轉(zhuǎn)載自:https://segmentfault.com/a/1190000013565024 前端布局非常重要的...
    天字一等閱讀 431評論 0 5
  • 前端布局非常重要的一環(huán)就是頁面框架的搭建秩铆,也是最基礎(chǔ)的一環(huán)。在頁面框架的搭建之中灯变,又有居中布局殴玛、多列布局以及全局布...
    BULL_DEBUG閱讀 354評論 0 3
  • 前端布局非常重要的一環(huán)就是頁面框架的搭建,也是最基礎(chǔ)的一環(huán)添祸。在頁面框架的搭建之中滚粟,又有居中布局、多列布局以及全局布...
    HelloJames閱讀 368評論 0 2