2018-08-02

實現(xiàn)響應(yīng)式布局的網(wǎng)站

響應(yīng)式

響應(yīng)式網(wǎng)頁設(shè)計是一種解決問題的途徑巧勤,它建議設(shè)計和開發(fā)應(yīng)該根據(jù)用戶行為和環(huán)境(基于屏幕大小嵌灰,平臺和方向)進行響應(yīng),這種實踐由靈活的網(wǎng)格和布局颅悉、圖片和CSS媒體查詢的智能使用所構(gòu)成沽瞭。當用戶從他們的便攜式電腦切換到iPad的時候,網(wǎng)站應(yīng)該自動切換合適的分辨率剩瓶,圖片尺寸和腳本能力驹溃。換句話說柒瓣,網(wǎng)站應(yīng)該能夠自動響應(yīng)用戶的設(shè)備參數(shù)。這樣就沒必要對市場上每一種設(shè)備都要進行不同的設(shè)計和開發(fā)吠架。

解決方案

0 根據(jù)屏幕分辨率調(diào)整樣式

相關(guān)工具:viewport、@media媒體查詢搂鲫、利用JavaScript在不同的樣式表間切換傍药,重新排放使之適應(yīng)不同的窗口寬度。



什么是viewport魂仍?

viewport是用戶網(wǎng)頁的可視區(qū)域/設(shè)備上瀏覽器的默認viewport的寬度拐辽。基于用戶窗口的寬度來改變設(shè)計的布局寬度擦酌,使得整個設(shè)計總能適應(yīng)屏幕的寬度俱诸,無需使用水平滾動條。

? ? viewpor content屬性值中的這四個參數(shù)赊舶,分別代表 :

? ? width:可視區(qū)域的寬度睁搭,值可為數(shù)字或關(guān)鍵詞device-width(CSS像素和物理像素不同)

? ? height:同width

? ? intial-scale:頁面首次被顯示是可視區(qū)域的縮放級別,取值1.0則頁面按實際尺寸顯示笼平,無任何縮放

? ? maximum-scale=1.0,minimum-scale=1.0;可視區(qū)域的縮放級別园骆,

? ? maximum-scale用戶可將頁面放大的程序,1.0將禁止用戶放大到實際尺寸之上寓调。

? ? user-scalable:是否可對頁面進行縮放锌唾,no禁止縮放



1 元素做成響應(yīng)式:

1.1文字做成響應(yīng)式

1.1.1 自適應(yīng)式文字

相關(guān)工具:em單位

1.1.2 如果想要對每一行特定的文本字符進行優(yōu)化,我們可以使用彈性布局夺英,它基于用戶的文本大小來改變布局寬度

相關(guān)工具:flex

1.2 圖片和視頻做成響應(yīng)式:

1.2.1隱藏和顯示部分圖片

相關(guān)工具:display:none晌涕、visibility(visible | hidden | collapse)

1.2.2 創(chuàng)建變化的復(fù)合圖片

相關(guān)工具:媒體查詢、overflow(visible | hidden | scroll | auto)

1.2.3 隨著布局縮放的前景圖片

相關(guān)工具:max-width痛悯、max-width+媒體查詢(使得設(shè)計在極端的尺寸下不要被拉得太長/壓得太扁)

2 布局做成響應(yīng)式:

2.1流式布局(liquid layout):

根據(jù)頁面寬度余黎,對已存在于網(wǎng)頁中的元素進行重新布局。

相關(guān)工具:max-width灸蟆、max-width+媒體查詢(限定彈性程度)

2.2彈性布局(elastic layout):

在間隔一致的水平或垂直的線所形成的網(wǎng)格中設(shè)計一致的模式驯耻。

相關(guān)工具:flex、max-width炒考、max-width+媒體查詢(限定彈性程度)

2.3布局網(wǎng)格(layout grid)

在間隔一致的水平和垂直的線所形成的網(wǎng)格中設(shè)計一致的模式可缚。

相關(guān)工具:grid(做法是定義一個容器元素并設(shè)置display:grid,使用grid-template-columns 和 grid-template-rows屬性設(shè)置網(wǎng)格的列與 行的大小斋枢,然后使用grid-column 和 grid-row屬性將其子元素放入網(wǎng)格之中帘靡。與flexbox類似,網(wǎng)格項的源順序無關(guān)緊要瓤帚。為了更好地使你的網(wǎng)格與媒體查詢相結(jié)合使用描姚,你可以在 CSS 中任意放置涩赢。)






實例分析:

NASA主頁在兩種窗口寬度下的頁面顯示狀態(tài):


設(shè)備尺寸小于960
設(shè)備尺寸大于960

因為我們要用響應(yīng)式,所以一開始先在html中加入viewport 聲明:meta name=“viewport”content=“width=device-width,initial-scale=1.0,? minimum-scale=1.0,? user-scalable=no”

1.確定布局:結(jié)構(gòu)內(nèi)部各個內(nèi)容的大體位置轩勘。請熟練使用各種盒元素筒扒、塊元素、行內(nèi)元素的屬性绊寻。

2.確定圖層間關(guān)系花墩,這一步是為了能夠更強化體感關(guān)系的包括動態(tài)的。請熟練使用各種選擇器澄步。

3.填充細節(jié)

1.在html中加入viewport

2.在html中處理navigation分塊——main-nav&sub-nav

操作步驟

/*這2個列表冰蘑,之后可以用對li元素設(shè)置inline-block屬性,再消除inline-block間距來實現(xiàn)橫欄的樣式村缸。完成這一塊的html之后祠肥,馬上處理它的css*/

.body{

background:black;

padding:15px;

}

header{

background:url(“img”);

}

.main-nav{

Background:black;

}

.sub-nav{

background:black;

}

.util{

background:black;

}

/*技巧:再定大調(diào)的過程中,這2個nav梯皿,可以先不同背景色區(qū)分開來仇箱,之后處理樣式:用對li元素設(shè)置inline-block屬性,再消除inline-block 間距來實現(xiàn)橫欄东羹。

這是第一步工碾,區(qū)分結(jié)構(gòu),接下來更細一點地繼續(xù)調(diào)整:首先是網(wǎng)格*/

header{

# display:grid;

# grid-template-columns:20% auto 20%;

# grid-template-rows:repeat(2,58px)

.logo{

# grid-row:1/span 2,

/*從第一行開始百姓,橫跨2個行*/

# grid-column:1

background:url(“img=”);

}

.main-nav{

# grid-row:1渊额;

# grid-column:2;

background:black;

}

.sub-nav{

# grid-row:2垒拢;

# grid-column:2旬迹;

background:black;

}

.util{

# grid-row:1;

# grid-column:3求类;

background:black;

}

/*2)調(diào)整display*/

.main-nav{

##? display:inline-block奔垦;

# grid-row:1;

# grid-column:2尸疆;

background:black;

}

.sub-nav{

##? display:inline-block椿猎;

# grid-row:2;

# grid-column:2寿弱;

background:black;

}

.util{

##? display:inline-gird犯眠;

# grid-template-columns:? 60%? 20%? 20%;

# grid-template-rows:repeat(1,50px)症革;

# grid-row:1筐咧;

# grid-column:3;

background:black;

}

.search-input{

##? display:inline-block;

}

.util-img{

##? display:inline-block量蕊;

}

/*再針對細分的util內(nèi)部進行大小微調(diào):*/

.util{

##? display:inline-gird铺罢;

# grid-template-columns:? 60%? 20%? 20%

# grid-template-rows:repeat(1,50px)/*repeat:*/

.search-input{

##? display:inline-block;

###? width:100%残炮;

### height:100%韭赘;}

.util-img{

##? display:inline-block;

###? width:50px势就;

}

/*看一下效果辞居;大了一些,因為默認了padding和border蛋勺,把它們定義為0*/

.search-input{

##? display:inline-block;

###? width:100%鸠删;

### height:100%抱完;

#### border:0;

}

/*接下來再處理細節(jié)方面刃泡,豎線問題:

因為豎線比字體大小更大巧娱,可以main-nav用border-left:? solid 2px實現(xiàn)*/

.main-nav li{

# grid-row:1;

# grid-column:2烘贴;

Background:black;

}

.main-nav li{

##### border-left:2px solid #a55555禁添;

####height:30px;

##? display:inline-block桨踪;

}

/*把第一個的左邊線去掉*/

.main-nav li:first-child{

##### border-left:0px

}

/*再去除間距:用對li元素設(shè)置inline-block屬性老翘,再消除inline-block間距來實現(xiàn)橫欄的樣式。*/

/*再查看效果锻离,發(fā)現(xiàn)ul這里特別擠铺峭,你第一個想到的就是默認的那些事兒:*/

ul{

######? padding:0 40px;

######? margin:0汽纠;

}

/*40px是左右卫键,還是要一點的,后來又去掉了虱朵,再微調(diào)一下盒子大小*/

.main-nav li{

##### border-left:2px solid #a55555莉炉;

##### height:30px;

##? display:inline-block碴犬;

######? padding:10px絮宁;

}

sub-nav和main-nav的處理方法大致一樣。*/

/*首先處理豎線并去掉第一個元素*/

.sub-nav li{

##### border-left:solid 1px white服协;

##? display:inline-block羞福;

#######? color:white;

background:grey;

}

把第一個的左邊線去掉

.sub-nav li:first-child{

##### border-left:0px

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

}

/*首先處理ul,給ul加個背景,給背景加個外框蚯涮,豎線可以掉下來了治专,可以看到margin 的距離會變寬*/

/*再對字體卖陵,顏色和間距進行微調(diào)*/

.sub-nav li{

##### border-left:solid 1px white;

##? display:inline-block张峰;

########? color:white;

######## font-size:13px;

########? margin:18px 0 10px;

########? padding:0 10px;

background:grey;

}

/*再對.util-img一分為二泪蔫,進行背景圖片的設(shè)置*/

.search-img{

##? display:inline-block;

########? background:url(“”);

########? height:50px;

}

.share-img{

##? display:inline-block喘批;

########? background:url(“”);

########? height:50px;

}

/*樣式就做好了撩荣,接下來做navigation的響應(yīng)式效果,也即寬度在***以下時候的樣式*/


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饶深,一起剝皮案震驚了整個濱河市餐曹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敌厘,老刑警劉巖台猴,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異俱两,居然都是意外死亡饱狂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門宪彩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來休讳,“玉大人,你說我怎么就攤上這事尿孔】∪幔” “怎么了?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵活合,是天一觀的道長婆咸。 經(jīng)常有香客問我,道長芜辕,這世上最難降的妖魔是什么尚骄? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮侵续,結(jié)果婚禮上嗤锉,老公的妹妹穿的比我還像新娘末融。我一直安慰自己遇绞,他們只是感情好除呵,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著轧坎,像睡著了一般宏邮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天蜜氨,我揣著相機與錄音械筛,去河邊找鬼。 笑死飒炎,一個胖子當著我的面吹牛埋哟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播郎汪,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼赤赊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了煞赢?” 一聲冷哼從身側(cè)響起抛计,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎照筑,沒想到半個月后吹截,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡朦肘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了双饥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片媒抠。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖咏花,靈堂內(nèi)的尸體忽然破棺而出趴生,到底是詐尸還是另有隱情,我是刑警寧澤昏翰,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布苍匆,位于F島的核電站,受9級特大地震影響棚菊,放射性物質(zhì)發(fā)生泄漏浸踩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一统求、第九天 我趴在偏房一處隱蔽的房頂上張望检碗。 院中可真熱鬧,春花似錦码邻、人聲如沸折剃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怕犁。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奏甫,已是汗流浹背戈轿。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留扶檐,地道東北人凶杖。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像款筑,于是被迫代替她去往敵國和親智蝠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

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