自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CSS深入研究:display的恐怖故事解密(2)

開發(fā) 前端
?先讓我們來研究下table,那些年曾經使用的table布局為何如此輝煌蕩漾呢?她的特點有哪些呢?拋棄table的兼容性、seo、加載等與本文無關的內容不談,只看屬性,那么就兩個特點。

上集《CSS深入研究:display的恐怖故事解密(1) - display-inline》已經把display的屬性列表拉出來溜了,發(fā)現(xiàn)在這個屬性恐怖面貌其實都是脆弱的偽裝。除了部分常用屬性外,其他的都是傳說哥。既然是傳說哥,請不要迷戀。就讓傳說繼續(xù)傳說著吧。這次我們來搞定table-cell這個貨。(table-cell:IE6、7不支持)

table-cell這個家伙在國外的網站中偶有露頭,天朝由于IE6、7這兩個貨泛濫成災,難有發(fā)揮,那么,這個家伙到底能干些什么呢?先讓我們來研究下table,那些年曾經使用的table布局為何如此輝煌蕩漾呢?她的特點有哪些呢?拋棄table的兼容性、seo、加載等與本文無關的內容不談,只看屬性,那么就兩個特點:

1.同行等高。

2.寬度自動調節(jié)。

那么table-cell是不是具備這個特點呢?答案是yes,為什么呢?css中有一個有意思的規(guī)則“創(chuàng)建匿名表格元素”。拿table-cell來扯,就是,當某個元素被設置為display:table-cell的時候,如果她的父節(jié)點不是display:table-row,爺爺節(jié)點不是display:table,那么下面就是見證奇跡的時候,這個兒子生出了他的爸爸和爺爺(瀏覽器會自動創(chuàng)建者兩個匿名盒對象)雖然你找不到你的father 和 grandfather,但這確實發(fā)生了,這真的是不可思議的事情,哪里不可思議,沒有掌聲最不可思議。^_^

那么下面來看幾種情況,幫助我們了解這個不可思議的事情。我先編寫代碼如下:

  1. <style type="text/css">  
  2.     div{padding:10px 0;}  
  3.     .classtd,  
  4.     td{height:34pxpadding:10pxmargin:10pxborder:1px solid #cccvertical-align:middle;}  
  5.     .classtd{display:table-cellborder-color:#cc0;}  
  6. </style>  
  7. <div class="classtd">tom</div>  
  8. <div class="classtd">jack</div>  
  9. <div>普通 div</div>  
  10. <div class="classtd">angel</div>  
  11.  
  12. <div>======= 上面是div 下面是table ========</div>  
  13. <table cellpadding="0" cellspacing="0">  
  14.     <tr>  
  15.         <td class="dtc">tom</td>  
  16.         <td class="dtc">jack</td>  
  17.     </tr>  
  18. </table>  
  19. <table style="margin-top:10px;" cellpadding="0" cellspacing="0">  
  20.     <tr>  
  21.         <td>angel</td>  
  22.     </tr>  
  23. </table> 

然后,我預測瀏覽器顯示如下:

好吧,我承認我先看了效果,然后就可以下結論了:tom 和 jack 搞基,生出了父親和爺爺(瀏覽器會創(chuàng)建一個表格來包裹相鄰的display:table-cell元素),表現(xiàn)和***個表格相同。angel自己生出了父親和爺爺表現(xiàn)和第二個表格相同。

既然是這樣,那么想了解table-cell,就是變相了解表格的td了。那就回到了前面所說的兩個特點:同行等高,寬度自動調節(jié)。

既然是這樣,那么我們就可以拿這個貨來作等高布局:

  1. <style type="text/css">  
  2.     .classtd{padding:10pxmargin:10pxborder:1px solid #cccvertical-aligntop;}  
  3.     .classtd{display:table-cellborder-color:#cc0;}  
  4. </style>  
  5. <div class="classtd">  
  6.     <p>大人。<br />其實我覺得大家別問元芳,元芳不是神人,<br />也不會武功,也許還是個智障,<br />我就不信我在這里黑元芳<br />他會突然飛檐走壁來到我身后<br />把我的頭按在鍵盤上yu7jhklhgjkfgt;/.";. yujh bnujm798u7jrtb5 tq1qwsewrt5 
  7.     </p>  
  8. </div>  
  9. <div class="classtd"><p>我和左邊等高</p></div> 

把這貨和vertical-align:middle搞在一起可以進行大小不固定元素的垂直居中布局(還有多行文本垂直居中):

  1. <style type="text/css">  
  2.     .classtd{ displaytable-cellpadding:10px;margin:10px;border:1px solid #ccc;}  
  3.     .classtd div{ display: inline-blockvertical-alignmiddle;}  
  4. </style>  
  5. <div class="classtd">  
  6.     <div style="padding:40px 80px 10px 10px; background: #639146; color:#fff;">div+css</div>  
  7.     <div style="padding:60px 80px 10px 10px; background: #2B82EE; color:#fff;">javascript</div>  
  8.     <div style="padding:70px 80px 10px 10px; background: #F57900; color:#fff;">HTML5</div>  
  9.     <div style="padding:80px 80px 10px 10px; background: #BC1D49; color:#fff;">CSS3</div>  
  10. </div> 

利用列寬度自動調節(jié)這個特點可以作左固定右自適應布局:

  1. <style type="text/css">  
  2.     .left{float:leftwidth:260pxpadding:10pxmargin-right:10pxborder:1px solid #ccc;}  
  3.     .classtd{ displaytable-cellwidth:3000pxpadding:10pxborder:1px solid #ccc;}  
  4. </style>  
  5. <div class="left">我是左邊欄目</div>  
  6. <div class="classtd">  
  7.     我是自適應的右邊  
  8. </div> 

有童鞋可能會對這個布局中的width:3000px感到迷惑。那么下面就貼上這個布局的原理

display:table-cell 元素生成的匿名table默認table-layout:auto。寬度將基于單元格內容自動調整。所以設置width:3000px的用途是盡可能的寬的意思。這樣就可以達到自適應的效果。

暴風烈酒說過:“任何恐怖的外表都掩飾不了簡單的實質。”(好吧是我狗血了^_^)原來這貨就這點料,至于display:table-cell的其他應用,比如多行文本居中,以及以上應用的兼容考慮。你可以伸展你的小粉拳or沙包一樣大的拳頭,敲擊鍵盤,碼一碼。了解原理,一切都是那么so easy,是不?^_^

原文鏈接:http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html

責任編輯:張偉 來源: 暴風烈酒的博客
相關推薦

2012-10-18 09:34:57

CSSdisplayDIV

2022-05-11 09:03:05

CSS容器文本換行

2011-12-15 10:43:20

JavaNIO

2011-06-01 10:58:54

Android Service

2010-08-26 15:48:21

DB2優(yōu)化數據庫

2010-06-21 13:07:14

2017-06-06 11:29:23

Java異常研究與分析

2016-01-12 18:04:55

Java異常研究

2010-05-31 17:45:50

MySQL行鎖

2016-10-21 10:36:54

http2spdynode.js

2010-11-23 16:35:59

MySQL刪除多表數據

2018-12-24 15:00:58

混合云多云云采用

2010-11-18 17:24:27

Oracle旋轉ins

2009-12-08 18:45:17

PHP檢查函數可用

2021-05-25 09:00:00

Kubernetes容器集群

2013-01-07 13:38:56

Android開發(fā)布局長度單位

2010-05-19 14:45:46

2009-10-20 10:17:50

綜合布線系統(tǒng)驗收

2022-04-19 08:28:34

main函數

2010-11-26 11:57:35

MySQL結果字符串
點贊
收藏

51CTO技術棧公眾號