亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

css實現右側固定寬度 左側寬度自適應

2024-07-11 08:59:00
字體:
來源:轉載
供稿:網友

反過來也可以:左側寬度固定,右側自適應。不管是左是右,反正就是一邊寬度固定,一邊寬度自適應。

這種布局比較常見,博客園很多默認主題就是這種。一般情況下,這種布局中寬度固定的區域是側邊欄,而自適應的區域是主體內容區——相信把側邊欄搞成自適應的人很少吧?

要實現這種布局,也算比較簡單。我們先給出html結構:

<div id="wrap">  <div id="sidebar" style="height:240px;">固定寬度區</div>  <div id="content" style="height:340px;">自適應區</div></div><div id="footer">后面的一個DIV,以確保前面的定位不會導致后面的變形</div>

代碼中的#wrap的div,是用來包裹我們要定位的這兩個區的;他后面還有個#footer,用來測試在前面的定位搞定后會不會導致后面的div錯位——如果錯位了,那證明我們的定位方法必須改進。

下面列舉幾個常見的方法:

1,固定寬度區浮動,自適應區不設寬度而設置 margin

我們拿右邊定寬左邊自適應來做示范,CSS代碼如下:

#wrap {    overflow: hidden; *zoom: 1;  }  #content ,#sidebar {    background-color: #eee;   }  #sidebar {    float: right; width: 300px;  }  #content {    margin-right: 310px;  }  #footer {background-color: #f00;color:#fff; margin-top: 1em}

其中,sidebar讓他浮動,并設置了一個寬度;而content沒有設置寬度。

大家要注意html中必須使用div標簽,不要妄圖使用什么p標簽來達到目的。因為div有個默認屬性,即如果不設置寬度,那他會自動填滿他的父標簽的寬度。這里的content就是例子。

當然我們不能讓他填滿了,填滿了他就不能和sidebar保持同一行了。我們給他設置一個margin。由于sidebar在右邊,所以我們設置content的margin-right值,值比sidebar的寬度大一點點——以便區分他們的范圍。例子中是310.

假設content的默認寬度是100%,那么他設置了margin后,他的寬度就變成了100%-310,此時content發現自己的寬度可以與sidebar擠在同一行了,于是他就上來了。

而寬度100%是相對于他的父標簽來的,如果我們改變了他父標簽的寬度,那content的寬度也就會變——比如我們把瀏覽器窗口縮小,那wrap的寬度就會變小,而content的寬度也就變小——但,他的實際寬度100%-310始終是不會變的。

這個方法看起來很完美,只要我們記得清除浮動(這里我用了最簡單的方法),那footer也不會錯位。而且無論content和sidebar誰更長,都不會對布局造成影響.

但實際上這個方法有個很老火的限制——html中sidebar必須在content之前!

但我需要sidebar在content之后!因為我的content里面才是網頁的主要內容,我不想主要內容反而排在次要內容后面。

但如果sidebar在content之后,那上面的一切都會化為泡影。

可能有的人不理解,說你干嘛非要sidebar在后面呢?這個問題說來話長,反正問題就是——content必須在sidebar之前,但content寬度要自適應,怎么辦?

下面有兩個辦法,不過我們先把html結構改成我們想要的樣子:

<div id="wrap">  <div id="content" style="height:340px;">自適應區,在前面</div>  <div id="sidebar" style="height:240px;">固定寬度區</div></div>

2,固定寬度區使用絕對定位,自適應區照例設置margin

我們把sidebar扔掉,只對content設置margin,那么我們會發現content的寬度就已經變成自適應了——于是content對sidebar說,我的寬度,與你無關。

content很容易就搞定了,此時來看看sidebar,他迫不得已拋棄了float。我們來看看sidebar的特點:在右邊,寬度300,他的定位對content不影響——很明顯,一個絕對主義分子誕生了。

于是我們的css如下:

#wrap {    *zoom: 1; position: relative;  }  #sidebar {    width: 300px; position: absolute; right: 0; top: 0;  }  #content {    margin-right: 310px;  }

這段css中要注意給wrap加上了相對定位,以免sidebar太絕對了跑到整個網頁的右上角而不是wrap的右上角。

好像完成了?在沒有看footer的表現時,我很欣慰。我們來把sidebar加長——增長100px!不要一年,只要一條內褲!哦,,,只要一句代碼。

但是,footer怎么還是在那兒呢?怎么沒有自動往下走呢?footer說——我不給絕對主義者讓位!

其實這與footer無關,而是因為wrap對sidebar的無視造成的——你再長,我還是沒感覺。

看來這種定位方式只能滿足sidebar自己,但對他的兄弟們卻毫無益處。

3,float與margin齊上陣

經過前面的教訓,我們重新確立了這個自適應寬度布局必須要達成的條件:

  • sidebar寬度固定,content寬度自適應
  • content要在sidebar之前
  • 后面的元素要能正常定位,不能受影響

由于絕對定位會讓其他元素無視他的存在,所以絕對定位的方式必須拋棄。

如果content和sidebar一樣,都用float,那content的自適應寬度就沒戲了;如果不給content加float,那sidebar又會跑到下一行去。

所以,最終我決定:float與margin都用。

我打算把content的寬度設為100%,然后設置float:left,最后把他向左移動310,以便于sidebar能擠上來。

但這么一來content里面的內容也會跟著左移310,導致被遮住了,所以我們要把他重新擠出來。為了好擠,我用了一個額外的div包裹住內容,所以html結構變成了這種樣子:

<div id="wrap">  <div id="content" style="height:140px;">    <div id="contentb">      content自適應區,在前面    </div>  </div>  <div id="sidebar" style="height:240px;">sidebar固定寬度區</div></div>

css則變成這樣:

#sidebar {    width: 300px; float: right;  }  #content {    margin-left: -310px; float: left; width: 100%;  }  #contentb {    margin-left: 310px;  }

這樣一改,真正的“content”就變成了contentb,他的寬度跟以前的content一樣,是100%-310.

大家可能注意到了代碼中的兩個margin-left,一個-310px一個310px,最后結合起來相當于什么都沒干,著實蛋疼。但他確實解決了content與sidebar的順序問題。

這個方法的缺點就是:太怪異,以及額外多了一層div。

4,標準瀏覽器的方法

當然,以不折騰人為標準的w3c標準早就為我們提供了制作這種自適應寬度的標準方法。那就簡單了:把wrap設為display:table并指定寬度100%,然后把content+sidebar設為display:table-cell;然后只給sidebar指定一個寬度,那么content的寬度就變成自適應了。

代碼很少,而且不會有額外標簽。不過這是IE7都無效的方法。

———————割尾巴————————-

如果不考慮ie7及以下版本,則使用標準方法;如果不在意sidebar與content的順序,則用第一種方法;否則用第3種方法。

以上代碼都沒在IE6測試,有問題不負責解釋。個人覺得,讓IE6壽終正寢的辦法就是——從此不再理他。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
性欧美在线看片a免费观看| 色多多国产成人永久免费网站| 性欧美视频videos6一9| 疯狂欧美牲乱大交777| 久久亚洲精品视频| 亚洲天堂精品在线| 国产日韩一区在线| 亚洲欧美色婷婷| 欧美日韩中文在线观看| 美日韩精品免费观看视频| 欧洲美女7788成人免费视频| 国产精品视频男人的天堂| 热门国产精品亚洲第一区在线| wwwwwwww亚洲| 91精品国产综合久久久久久久久| 日韩在线观看成人| 人人澡人人澡人人看欧美| 中文字幕一区二区三区电影| 国产一区二区丝袜高跟鞋图片| 国产精品一区二区三| 亚洲精品久久久久中文字幕二区| 亚洲国产第一页| 日韩欧美国产激情| 国产99在线|中文| 日韩高清电影免费观看完整| 国产精品一区二区三区毛片淫片| 欧美日韩国产麻豆| 岛国av午夜精品| 夜夜嗨av一区二区三区免费区| 国产精品久久久久久av福利| 久久影院中文字幕| 中文精品99久久国产香蕉| 第一福利永久视频精品| 日韩成人在线免费观看| 亚洲电影免费观看高清| 国产精品欧美亚洲777777| 国产亚洲精品久久久久久| 国产亚洲精品一区二555| 欧美一区二区.| 亚洲视频自拍偷拍| 色老头一区二区三区| 亚洲精品电影网在线观看| 国产精品久久久精品| 日本高清久久天堂| 国产精品99一区| 亚洲第一天堂无码专区| 欧美大码xxxx| 色哟哟网站入口亚洲精品| 日韩美女视频免费在线观看| 97在线视频观看| 国产精品日本精品| 最近2019年手机中文字幕| 亚洲夜晚福利在线观看| 亚洲免费电影在线观看| 丝袜亚洲另类欧美重口| 日韩精品福利在线| 亚洲精品国产综合久久| 亚洲毛片在线观看| 97香蕉超级碰碰久久免费软件| 亚洲人成电影网站色…| 国产一区二区视频在线观看| 一区二区av在线| 亚洲精品久久久久中文字幕二区| 一区二区三区动漫| 欧美日韩亚洲视频| 亚洲成人黄色在线观看| 在线观看欧美日韩| 亚洲在线观看视频| 亚洲久久久久久久久久久| 国产日产亚洲精品| 久久夜色精品国产亚洲aⅴ| 欧美一区亚洲一区| 日韩美女激情视频| 欧美极品美女视频网站在线观看免费| 亚洲欧美综合区自拍另类| 欧美国产日韩一区二区| 日本久久久久亚洲中字幕| 国语自产精品视频在免费| 亚洲第一精品电影| 国产精品亚洲激情| 另类视频在线观看| 亚洲精品一区二三区不卡| 91久久久久久久久| 日韩欧美在线网址| 亚洲欧美制服中文字幕| 久久男人av资源网站| 欧美极品第一页| 51ⅴ精品国产91久久久久久| 少妇精69xxtheporn| 国产欧美日韩综合精品| 韩国精品美女www爽爽爽视频| 日韩一区二区精品视频| 欧美三级欧美成人高清www| 亚洲欧美在线免费观看| 成人高清视频观看www| 国产精品久久久久久久久久三级| 欧美国产中文字幕| 欧美黄色成人网| 久久九九亚洲综合| 热久久美女精品天天吊色| 亚洲电影免费在线观看| 国产成人一区二区三区| 国产欧美一区二区三区久久人妖| 日韩在线视频中文字幕| 日韩av中文在线| 亚洲免费人成在线视频观看| 黄色一区二区三区| 亚洲性夜色噜噜噜7777| xxx欧美精品| 欧美激情欧美激情| 亚洲男人第一网站| 色视频www在线播放国产成人| 欧美资源在线观看| 主播福利视频一区| 在线国产精品播放| 日韩女优人人人人射在线视频| 久久精品国产99国产精品澳门| 久久精品夜夜夜夜夜久久| 97欧美精品一区二区三区| 日韩在线观看免费高清完整版| 俺去亚洲欧洲欧美日韩| 久久久国产精彩视频美女艺术照福利| 色视频www在线播放国产成人| 国产精品综合网站| 亚洲白虎美女被爆操| 国产精品久久综合av爱欲tv| 中文日韩在线视频| 亚洲精品中文字幕有码专区| 亚洲国产精品999| 神马国产精品影院av| 一区二区亚洲欧洲国产日韩| 国产日韩欧美综合| 亚洲欧美在线第一页| 中文字幕亚洲欧美日韩在线不卡| 日韩欧美第一页| 国产精品99久久久久久久久久久久| 国产精品日韩在线播放| 国产精品美女www| 久久人人爽人人爽爽久久| 日韩免费观看在线观看| 欧美美女18p| 色偷偷91综合久久噜噜| 精品国产乱码久久久久久虫虫漫画| 国产精品偷伦一区二区| 91亚洲国产成人精品性色| 91精品国产高清久久久久久91| 久久精品精品电影网| 日韩成人av在线| 日韩精品在线观看一区二区| 91黑丝高跟在线| 一区二区欧美日韩视频| 在线免费看av不卡| 国产成人精品av在线| 欧美日韩国产一区二区| 国产精品久久一区主播| 久久视频在线视频| 国产精品户外野外| 色无极亚洲影院| 亚洲男人天天操| 亚洲国产99精品国自产| 国产亚洲欧洲高清| 欧美电影在线观看高清| 黄网动漫久久久| 亚洲视频第一页|