經驗不在于年限,在于積累---專注互聯網軟件開發

          把工作當事業做,把項目當作品做!

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 66 Comments :: 0 Trackbacks
          CSS布局常用的方法:float:none|left|right 
          取值:
          none: 默認值。對象不飄浮
          left: 文本流向對象的右邊
          right: 文本流向對象的左邊 

          它是怎樣工作的,看個一行兩列的例子 
          xhtml:
          <div id="wrap">
          <div id="column1">這里是第一列</div>
          <div id="column2">這里是第二列</div>
          <div class="clear"></div> /*這是違背web標準意圖的,只是想說明在它下面的元素需要清除浮動*/
          </div> 
          CSS:
          #wrap{width:100;height:auto;}
          #column1{float:left;width:40;}
          #column2{float:right;width:60;}
          .clear{clear:both;}

          position:static|absolute|fixed|relative
          取值:
          static: 默認值。無特殊定位,對象遵循HTML定位規則
          absolute: 將對象從文檔流中拖出,使用leftright,top,bottom等屬性相對于其最接近的一個最有定位設置的父對象進行絕對定位。如果不存在這樣的父對象,則依據body對象。而其層疊通過z-index屬性定義
          fixed: 未支持。對象定位遵從絕對(absolute)方式。但是要遵守一些規范
          relative: 對象不可層疊,但將依據leftright,top,bottom等屬性在正常文檔流中偏移位置 

          它來實現一行兩列的例子 
          xhtml:
          <div id="wrap">
          <div id="column1">這里是第一列</div>
          <div id="column2">這里是第二列</div>
          </div> 
          CSS:
          #wrap{position:relative;/*相對定位*/width:770px;}
          #column1{position:absolute;top:0;left:0;width:300px;}
          #column2{position:absolute;top:0;right:0;width:470px;} 
          他們的區別在哪? 
          顯然,float是相對定位的,會隨著瀏覽器的大小和分辨率的變化而改變,而position就不行了,所以一般情況下還是float布局!

          CSS常用布局實例

          單行一列
          body{margin:0px;padding:0px;text-align:center;}
          #content{margin-left:auto;margin-right:auto;width:400px;} 

          兩行一列 
          body{margin:0px;padding:0px;text-align:center;}
          #content-top{margin-left:auto;margin-right:auto;width:400px;}
          #content-end{margin-left:auto;margin-right:auto;width:400px;} 

          三行一列 
          body{margin:0px;padding:0px;text-align:center;}
          #content-top{margin-left:auto;margin-right:auto;width:400px;width:370px;}
          #content-mid{margin-left:auto;margin-right:auto;width:400px;}
          #content-end{margin-left:auto;margin-right:auto;width:400px;}

          單行兩列 
          #bodycenter{width:700px;margin-right:auto;margin-left:auto;overflow:auto;}
          #bodycenter#dv1{float:left;width:280px;}
          #bodycenter#dv2{float:right;width:420px;} 

          兩行兩列
          #header{width:700px;margin-right:auto;margin-left:auto;overflow:auto;}
          #bodycenter{width:700px;margin-right:auto;margin-left:auto;overflow:auto;}
          #bodycenter#dv1{float:left;width:280px;}
          #bodycenter#dv2{float:right;width:420px;} 

          三行兩列
          #header{width:700px;margin-right:auto;margin-left:auto;}
          #bodycenter{width:700px;margin-right:auto;margin-left:auto;}
          #bodycenter#dv1{float:left;width:280px;}
          #bodycenter#dv2{float:right;width:420px;}
          #footer{width:700px;margin-right:auto;margin-left:auto;overflow:auto;clear:both;} 

          單行三列

          絕對定位 
          #left{position:absolute;top:0px;left:0px;width:120px;}
          #middle{margin:0px190px0px190px;}
          #right{position:absolute;top:0px;right:0px;width:120px;} 

          float定位
          xhtml:
          <div id="wrap">
          <div id="column">
          <div id="column1">這里是第一列</div>
          <div id="column2">這里是第二列</div>
          <div class="clear"></div>/*用法web標準不建議,但是記住下面元素需要清除浮動*/
          </div>
          <divid="column3">這里是第三列</div>
          <divclass="clear"></div>/*用法web標準不建議,但是記住下面元素需要清除浮動*/
          </div> 
          CSS:
          #wrap{width:100;height:auto;}
          #column{float:left;width:60;}
          #column1{float:left;width:30;}
          #column2{float:right;width:30;}
          #column3{float:right;width:40;}
          .clear{clear:both;} 

          float定位二
          xhtml
          <div id="center"class="column">
          <h1>Thisisthemaincontent.</h1>
          </div>
          <div id="left"class="column">
          <h2>Thisistheleftsidebar.</h2>
          </div>
          <div id="right"class="column">
          <h2>Thisistherightsidebar.</h2>
          </div>
          CSS
          body{
          margin:0;
          padding-left:200px;/*LCfullwidth*/
          padding-right:190px;/*RCfullwidth CCpadding*/
          min-width:200px;/*LCfullwidth CCpadding*/
          }
          .column{
          position:relative;
          float:left;
          }
          #center{
          width:100;
          }
          #left{
          width:200px;/*LCwidth*/
          right:200px;/*LCfullwidth*/
          margin-left:-100;
          }
          #right{
          width:190px;/*RCwidth*/
          margin-right:-100;
          }

          /***IEFix***/
          *html#left{
          left:190px;/*RCfullwidth*/
          }

          兩行三列 
          xhtml:

          <div id="header">這里是頂行</div>
          <div id="warp">
          <div id="column">
          <div id="column1">這里是第一列</div>
          <div id="column2">這里是第二列</div>
          <div class="clear"></div>
          </div>
          <div id="column3">這里是第三列</div>
          <div class="clear"></div>
          </div> 
          CSS:
          #header{width:100;height:auto;}
          #wrap{width:100;height:auto;}
          #column{float:left;width:60;}
          #column1{float:left;width:30;}
          #column2{float:right;width:30;}
          #column3{float:right;width:40;}
          .clear{clear:both;} 

          三行三列 
          xhtml:
          <div id="header">這里是頂行</div>
          <div id="wrap">
          <div id="column">
          <div id="column1">這里是第一列</div>
          <div id="column2">這里是第二列</div>
          <div class="clear"></div>
          </div>
          <div id="column3">這里是第三列</div>
          <div class="clear"></div>
          </div>
          <div id="footer">這里是底部一行</div>
          CSS:
          #header{width:100;height:auto;}
          #wrap{width:100;height:auto;}
          #column{float:left;width:60;}
          #column1{float:left;width:30;}
          #column2{float:right;width:30;}
          #column3{float:right;width:40;}
          .clear{clear:both;}
          #footer{width:100;height:auto;} 

          PS:這里列出的是常用的例子,而非研究之用,對一每個盒子,我都沒有設置margin,padding,boeder等屬性,是因為我個人覺得,含有寬度定位的時候,最好不好用到他們,除非必不得已,因為如果不是這樣的話,解決瀏覽器兼容問題,會讓你頭疼,而且產生一系列CSS代碼,我覺得這樣的效率和效果都不好! 

          CSS布局高級技巧
          margin和padding總是有可能要用到,而產生的問題如何解決呢?由于瀏覽器解釋容器寬度的方法不同:
          IE6.0FirefoxOpera等是
          真實寬度=width padding border margin
          IE5.X
          真實寬度=width-padding-border-margin 

          IE中有浮動對象的雙倍距離之BUG(IEDoubledFloat-MarginBug),這里還需要具體問題具體解決,下面是解決辦法www.forest53.com/tutorials/tutorials_show.asp?id=31

          很明顯,第一種下很完美的布局在第二種情況下后果是很凄慘的! 
          解決的方法是hack 
          div.content{
          width:400px;//這個是錯誤的width,所有瀏覽器都讀到了
          voice-family:"\"}\"";//IE5.X/win忽略了"\"}\""后的內容
          voice-family:inherit;
          width:300px;//包括IE6/win在內的部分瀏覽器讀到這句,新的數值(300px)覆蓋掉了舊的
          }
          html>body.content{//html>body是CSS2的寫法
          width:300px;//支持CSS2該寫法的瀏覽器(非IE5)有幸讀到了這一句
          }

          div.content{
          width:300px!important;//這個是正確的width,大部分支持!important標記的瀏覽器使用這里的數值
          width(空格)/**/:400px;//IE6/win不解析這句,所以IE6/win仍然認為width的值是300px;而IE5.X/win讀到這句,新的數值(400px)覆蓋掉了舊的,因為!important標記對他們不起作用
          }
          html>body.content{//html>body是CSS2的寫法
          width:300px;//支持CSS2該寫法的瀏覽器有幸讀到了這一句


          列等高技巧
          n行n列布局,每列高度(事先并不能確定哪列的高度)的相同,是每個設計師追求的目標,做法有:背景圖填充、加JS腳本的
          方法和容器溢出部分隱藏和列的負底邊界和正的內補丁相結合的方法。

          背景圖填充法:
          xhtml:
          <div id="wrap">
          <div id="column1">這是第一列</div>
          <div id="column1">這是第二列</div>
          <div class="clear"></div>
          </div>
          css:
          #wrap{width:776px;background:url(bg.gif)repeat-y300px;}
          #column1{float:left;width:300px;}
          #column2{float:right;width:476px;}
          .clear{clear:both;} 

          就是將一個npx寬的一張圖片在外部容器縱向重復,定位到兩列交錯的位置縱向重復,在視覺上產生了兩列高度一樣的錯覺。
          posted on 2010-02-27 13:01 hankchen 閱讀(2860) 評論(0)  編輯  收藏 所屬分類: HTML+CSS

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 文山县| 达拉特旗| 宣化县| 拉萨市| 庆城县| 额济纳旗| 扎赉特旗| 巴里| 施秉县| 改则县| 宁陕县| 台湾省| 盐山县| 徐闻县| 九寨沟县| 永丰县| 通辽市| 星座| 舒城县| 宣化县| 武威市| 九江市| 惠水县| 讷河市| 德清县| 增城市| 华亭县| 屯门区| 行唐县| 额敏县| 大同县| 天津市| 综艺| 榆中县| 聂拉木县| 普宁市| 嘉定区| 宣城市| 吉木萨尔县| 柳州市| 廊坊市|