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

首頁 > 開發 > CSS > 正文

純CSS表頭固定的實現代碼

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

純CSS實現表頭固定之所以難,主要在兩點。一是占有最大市場份額的IE6不支持position:fixed。另一個,是人們想破頭都想在一起表格中實現這種效果。不過外國真的人用純CSS實現了這種效果,動用了數量驚人的CSS hacks……我覺得,如果搞到代碼如此難懂且難擴展,還不如用javascript好了。碰巧今天我也遇到這種需求,換個視角想想,真的搞出來了。

我們知道,CSS是負責表現,HTML是負責結構,同樣的結構,換個樣式,給人的感覺完全不同,這也說明人的眼睛是很容易受騙。因此前些狂熱鼓吹DIV+CSS的日子里,人們總是想在頁面去掉table,用div+span弄出了一個個“table”來。雖然這種事是不可取,但也告訴我們,table做得的事,通過一些組合我們也能做出來。換個思路來說,既然一個table做不了,就兩個吧。上面的table模擬表頭,下面的table模擬帶滾動條的部分。在我們繼續講下去之前,我們先明確一下我們的需求吧,要不太抽象了。首先是表格為4*9,每列寬170px,總為680px,滾動條在各瀏覽器默認為16px,別忘了,width是不包含border在內,四列就有5個縱向的border,寬總長為701px。

<table >  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr>  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr>  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr>  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr>  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr>  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr>  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr>  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr>  <tr>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>    <td>&nbsp;</td>  </tr></table>

然后我們把這個table一分為二,第一個table為表頭,第二個table要帶滾動條,說明要在其父元素上應用overflow樣式,因此它要外套一個div。這個div與第一個table應該是等長的。不過不用花心思了,我們在它們的外面最套一個div,設置其width為701px,然后把這兩個子元素的寬都設為100%就行了。注意,我們在table中顯式添加tbody以提高表格的渲染效率。

<div id="scrollTable">  <table class="thead">    <tbody>      <tr>        <th>名稱</th>        <th>語法</th>        <th>說明</th>        <th>例子</th>      </tr>    </tbody>  </table>  <div>    <table class="tbody">      <tbody>        <tr>          <td>Simple attribute Selector</td>          <td>[attr] </td>          <td>選擇具有此屬性的元素</td>          <td>blockquote[title] { <br/>color: red }</td>        </tr>        <tr>          <td>attribute Value Selector</td>          <td>[attr="value"] </td>          <td>選出屬性值精確等于給出值的元素</td>          <td>h2[align="left"] { <br/>cursor: hand } </td>        </tr>        <tr>          <td>"Begins-with" attribute Value Selector</td>          <td>[attr^="value"] </td>          <td>選出屬性值以給出值開頭的元素</td>          <td>h2[align^="right"] { <br/>cursor: hand } </td>        </tr>        <tr>          <td>"Ends-with" attribute Value Selector</td>          <td>[attr$="value"] </td>          <td>選出屬性值以給出值結尾的元素</td>          <td>div[class$="vml"]{<br/>cursor: hand} </td>        </tr>        <tr>          <td>Substring-match attribute Value Selector</td>          <td>[attr*="value"] </td>          <td>選出屬性值包含給出值的元素</td>          <td>div[class*="grid"]{<br/> float:left} </td>        </tr>        <tr>          <td>One-Of-Many Attribute Value Selector</td>          <td>[attr~="value"] </td>          <td>原元素的屬性值為多個單詞,給出值為其中一個。</td>          <td>li[class~="last"]{<br/> padding-left:2em} </td>        </tr>        <tr>          <td>Hyphen Attribute Value Selector</td>          <td>[attr|="value"] </td>          <td>原元素的屬性值等于給出值,或者以給出值加“-”開頭</td>          <td>span[lang|="en"]{ <br/>color:green}</td>        </tr>        <tr>          <td>反選屬性值選擇器</td>          <td>[attr!="value"] </td>          <td>非標準,jQuery中出現的</td>          <td>span[class!="red"]{<br/>color:green}</td>        </tr>      </tbody>    </table>  </div></div>

表現層部分:

#scrollTable {  width:701px;  border: 1px solid #EB8;/*table沒有外圍的border,只有內部的td或th有border*/  background: #FF8C00;}  #scrollTable table {  border-collapse:collapse; /*統一設置兩個table為細線表格*/} #scrollTable table.thead{ /*表頭*/  /*div的第一個子元素*/  width:100%;} #scrollTable table.thead th{/*表頭*/  border: 1px solid #EB8;  border-right:#C96;  color:#fff;  background: #FF8C00;/*亮桔黃色*/} #scrollTable div{/*能帶滾動條的表身*/  /*div的第二個子元素*/  width:100%;  height:200px;  overflow:auto;/*必需*/} #scrollTable table.tbody{/*能帶滾動條的表身的正體*/  width:100%;  border: 1px solid #C96;  border-right:#B74;  color:#666666;  background: #ECE9D8;}#scrollTable table.tbody td{/*能帶滾動條的表身的格子*/  border:1px solid #C96;}

運行代碼:

<!doctype html><html dir="ltr" lang="zh-CN">  <head>    <meta charset="utf-8"/>    <title>純CSS實現表頭固定</title>    <style type="text/css">      #scrollTable {        width:701px;        border: 1px solid #EB8;/*table沒有外圍的border,只有內部的td或th有border*/        background: #FF8C00;      }      #scrollTable table {        border-collapse:collapse; /*統一設置兩個table為細線表格*/      }      #scrollTable table.thead{ /*表頭*/        /*div的第一個子元素*/        width:100%;      }      #scrollTable table.thead th{/*表頭*/        border: 1px solid #EB8;        border-right:#C96;        color:#fff;        background: #FF8C00;/*亮桔黃色*/      }      #scrollTable div{/*能帶滾動條的表身*/        /*div的第二個子元素*/        width:100%;        height:200px;        overflow:auto;/*必需*/      }      #scrollTable table.tbody{/*能帶滾動條的表身的正體*/        width:100%;        border: 1px solid #C96;        border-right:#B74;        color:#666666;        background: #ECE9D8;      }      #scrollTable table.tbody td{/*能帶滾動條的表身的格子*/        border:1px solid #C96;      }    </style>  </head>  <body>    <div id="scrollTable">      <table class="thead">              <tbody>          <tr>            <th>名稱</th>            <th>語法</th>            <th>說明</th>            <th>例子</th>          </tr>        </tbody>      </table>      <div>        <table class="tbody">                 <tbody>            <tr>              <td>Simple attribute Selector</td>              <td>[attr] </td>              <td>選擇具有此屬性的元素</td>              <td>blockquote[title] { <br/>color: red }</td>            </tr>            <tr>              <td>attribute Value Selector</td>              <td>[attr="value"] </td>              <td>選出屬性值精確等于給出值的元素</td>              <td>h2[align="left"] { <br/>cursor: hand } </td>            </tr>            <tr>              <td>"Begins-with" attribute Value Selector</td>              <td>[attr^="value"] </td>              <td>選出屬性值以給出值開頭的元素</td>              <td>h2[align^="right"] { <br/>cursor: hand } </td>            </tr>            <tr>              <td>"Ends-with" attribute Value Selector</td>              <td>[attr$="value"] </td>              <td>選出屬性值以給出值結尾的元素</td>              <td>div[class$="vml"]{<br/>cursor: hand} </td>            </tr>            <tr>              <td>Substring-match attribute Value Selector</td>              <td>[attr*="value"] </td>              <td>選出屬性值包含給出值的元素</td>              <td>div[class*="grid"]{<br/> float:left} </td>            </tr>            <tr>              <td>One-Of-Many Attribute Value Selector</td>              <td>[attr~="value"] </td>              <td>原元素的屬性值為多個單詞,給出值為其中一個。</td>              <td>li[class~="last"]{<br/> padding-left:2em} </td>            </tr>            <tr>              <td>Hyphen Attribute Value Selector</td>              <td>[attr|="value"] </td>              <td>原元素的屬性值等于給出值,或者以給出值加“-”開頭</td>              <td>span[lang|="en"]{ <br/>color:green}</td>            </tr>            <tr>              <td>反選屬性值選擇器</td>              <td>[attr!="value"] </td>              <td>非標準,jQuery中出現的</td>              <td>span[class!="red"]{<br/>color:green}</td>            </tr>          </tbody>        </table>      </div>    </div>  </body></html>

發現表頭的格子與表身的格子不對齊。這時我們需要動用col標簽,col允許我們統一設置tbody中索引值與它相同的td或th的背景色,文字對齊方式與寬度。雖然CSS2.1的相鄰選擇器與CSS3的子元素過濾偽類能讓我們用更精簡的方式設置它們,而且是樣式與結構分離那種,可惜IE家族總是拖后腿。我們再看一下它們的長度,由于最后一個表格有可能受滾動條擠壓而縮短長度,我們保證前三列長度相等就行了,剩余的都分配給最后一個,換言之,最后一個不用設置。另,IE下可以設置滾動條的樣式,我們也把玩一翻吧。

<table class="thead">        <col width="170px"></col> <col width="170px"></col> <col width="170px"></col><col></col>        <tbody>//********************略*****************        </tbody> </table> <div>      <table class="tbody">          <col width="170px"></col> <col width="170px"></col> <col width="170px"></col><col></col>          <tbody>//********************略*****************              </tbody>      </table> </div>

表現層部分:

#scrollTable {  width:701px;  border: 1px solid #EB8;/*table沒有外圍的border,只有內部的td或th有border*/  background: #FF8C00;} #scrollTable table {  border-collapse:collapse; /*統一設置兩個table為細線表格*/}/*表頭 div的第一個子元素**/#scrollTable table.thead{   width:100%;}/*表頭*/#scrollTable table.thead th{  border: 1px solid #EB8;  border-right:#C96;  color:#fff;  background: #FF8C00;/*亮桔黃色*/}/*能帶滾動條的表身*//*div的第二個子元素*/#scrollTable div{  width:100%;  height:200px;  overflow:auto;/*必需*/  scrollbar-face-color:#EB8;/*那三個小矩形的背景色*/  scrollbar-base-color:#ece9d8;/*那三個小矩形的前景色*/  scrollbar-arrow-color:#FF8C00;/*上下按鈕里三角箭頭的顏色*/  scrollbar-track-color:#ece9d8;/*滾動條的那個活動塊所在的矩形的背景色*/  scrollbar-highlight-color:#800040;/*那三個小矩形左上padding的顏色*/  scrollbar-shadow-color:#800040;/*那三個小矩形右下padding的顏色*/  scrollbar-3dlight-color: #EB8;/*那三個小矩形左上border的顏色*/  scrollbar-darkshadow-Color:#EB8;/*那三個小矩形右下border的顏色*/}/*能帶滾動條的表身的正體*/#scrollTable table.tbody{  width:100%;  border: 1px solid #C96;  border-right:#B74;  color:#666666;  background: #ECE9D8;}/*能帶滾動條的表身的格子*/#scrollTable table.tbody td{  border:1px solid #C96;}

運行代碼:

<!doctype html><html dir="ltr" lang="zh-CN">  <head>    <meta charset="utf-8"/>    <title>純CSS實現表頭固定 </title>    <style type="text/css">      #scrollTable {        width:701px;        border: 1px solid #EB8;/*table沒有外圍的border,只有內部的td或th有border*/        background: #FF8C00;      }      #scrollTable table {        border-collapse:collapse; /*統一設置兩個table為細線表格*/      }      /*表頭 div的第一個子元素**/      #scrollTable table.thead{         width:100%;      }      /*表頭*/      #scrollTable table.thead th{        border: 1px solid #EB8;        border-right:#C96;        color:#fff;        background: #FF8C00;/*亮桔黃色*/      }      /*能帶滾動條的表身*/      /*div的第二個子元素*/      #scrollTable div{        width:100%;        height:200px;        overflow:auto;/*必需*/        scrollbar-face-color:#EB8;/*那三個小矩形的背景色*/        scrollbar-base-color:#ece9d8;/*那三個小矩形的前景色*/        scrollbar-arrow-color:#FF8C00;/*上下按鈕里三角箭頭的顏色*/        scrollbar-track-color:#ece9d8;/*滾動條的那個活動塊所在的矩形的背景色*/        scrollbar-highlight-color:#800040;/*那三個小矩形左上padding的顏色*/        scrollbar-shadow-color:#800040;/*那三個小矩形右下padding的顏色*/        scrollbar-3dlight-color: #EB8;/*那三個小矩形左上border的顏色*/        scrollbar-darkshadow-Color:#EB8;/*那三個小矩形右下border的顏色*/      }      /*能帶滾動條的表身的正體*/      #scrollTable table.tbody{        width:100%;        border: 1px solid #C96;        border-right:#B74;        color:#666666;        background: #ECE9D8;      }      /*能帶滾動條的表身的格子*/      #scrollTable table.tbody td{        border:1px solid #C96;      }    </style>  </head>  <body>    <div id="scrollTable">      <table class="thead">        <col width="170px"></col> <col width="170px"></col> <col width="170px"></col><col></col>        <tbody>          <tr>            <th>名稱</th>            <th>語法</th>            <th>說明</th>            <th>例子</th>          </tr>        </tbody>      </table>      <div>        <table class="tbody">          <col width="170px"></col> <col width="170px"></col> <col width="170px"></col><col></col>          <tbody>            <tr>              <td>Simple attribute Selector</td>              <td>[attr] </td>              <td>選擇具有此屬性的元素</td>              <td>blockquote[title] { <br/>color: red }</td>            </tr>            <tr>              <td>attribute Value Selector</td>              <td>[attr="value"] </td>              <td>選出屬性值精確等于給出值的元素</td>              <td>h2[align="left"] { <br/>cursor: hand } </td>            </tr>            <tr>              <td>"Begins-with" attribute Value Selector</td>              <td>[attr^="value"] </td>              <td>選出屬性值以給出值開頭的元素</td>              <td>h2[align^="right"] { <br/>cursor: hand } </td>            </tr>            <tr>              <td>"Ends-with" attribute Value Selector</td>              <td>[attr$="value"] </td>              <td>選出屬性值以給出值結尾的元素</td>              <td>div[class$="vml"]{<br/>cursor: hand} </td>            </tr>            <tr>              <td>Substring-match attribute Value Selector</td>              <td>[attr*="value"] </td>              <td>選出屬性值包含給出值的元素</td>              <td>div[class*="grid"]{<br/> float:left} </td>            </tr>            <tr>              <td>One-Of-Many Attribute Value Selector</td>              <td>[attr~="value"] </td>              <td>原元素的屬性值為多個單詞,給出值為其中一個。</td>              <td>li[class~="last"]{<br/> padding-left:2em} </td>            </tr>            <tr>              <td>Hyphen Attribute Value Selector</td>              <td>[attr|="value"] </td>              <td>原元素的屬性值等于給出值,或者以給出值加“-”開頭</td>              <td>span[lang|="en"]{ <br/>color:green}</td>            </tr>            <tr>              <td>反選屬性值選擇器</td>              <td>[attr!="value"] </td>              <td>非標準,jQuery中出現的</td>              <td>span[class!="red"]{<br/>color:green}</td>            </tr>          </tbody>        </table>      </div>    </div>  </body></html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲香蕉成人av网站在线观看| 成人免费黄色网| 欧美黄色www| 视频在线观看一区二区| 久久精品人人做人人爽| 久久成人18免费网站| 亚洲国产日韩欧美综合久久| 国产成人涩涩涩视频在线观看| 亚洲精品视频中文字幕| 精品日本美女福利在线观看| 精品女同一区二区三区在线播放| 欧美激情国产日韩精品一区18| 国产精品福利在线观看网址| 亚洲电影免费观看高清完整版在线观看| 2019中文在线观看| 亚洲3p在线观看| 中文字幕日韩欧美| 自拍亚洲一区欧美另类| 久久精视频免费在线久久完整在线看| 国产一区二区三区在线观看网站| 国内精品久久久久伊人av| 亚洲毛茸茸少妇高潮呻吟| 亚洲欧美另类国产| 国产精品福利久久久| 国产精品va在线播放| 欧美激情三级免费| 亚洲免费视频观看| 久久激情视频免费观看| 91av网站在线播放| 国产精品欧美久久久| 国产美女扒开尿口久久久| 精品久久久久久久大神国产| 色777狠狠综合秋免鲁丝| 欧美国产日产韩国视频| 国产亚洲日本欧美韩国| 中文字幕亚洲一区二区三区五十路| 色妞在线综合亚洲欧美| 欧美午夜女人视频在线| 日韩激情视频在线| 日韩欧美在线视频日韩欧美在线视频| 久久久精品电影| 亚洲日本成人女熟在线观看| 亚洲aⅴ日韩av电影在线观看| 国产精品美女呻吟| 久久影院免费观看| 久久久久久久久久久91| 亚洲自拍高清视频网站| 91久久久亚洲精品| 亚洲精品日产aⅴ| 狠狠操狠狠色综合网| 国产成人久久久精品一区| 日本成熟性欧美| 亚洲精品中文字幕女同| 久久手机免费视频| 狠狠色狠狠色综合日日五| 日韩欧美亚洲国产一区| 成人精品视频在线| 激情av一区二区| www.久久撸.com| 精品一区精品二区| 欧美日韩一区二区免费视频| 国产狼人综合免费视频| 欧美高清第一页| 亚洲国产美女精品久久久久∴| 国产精品羞羞答答| 欧美在线一级va免费观看| 成人久久一区二区三区| 日韩电影中文字幕一区| 亚洲欧美激情精品一区二区| 欧美日韩中文字幕日韩欧美| 日韩一区二区三区在线播放| 亚洲国产欧美久久| 国内精品模特av私拍在线观看| 一区二区三区视频观看| 欧美在线精品免播放器视频| 高潮白浆女日韩av免费看| 欧美性69xxxx肥| 色综合视频网站| 亚洲经典中文字幕| 欧美激情日韩图片| 国产欧美亚洲精品| 久久国产加勒比精品无码| 精品成人国产在线观看男人呻吟| 亚州欧美日韩中文视频| 福利一区福利二区微拍刺激| 91免费版网站入口| 国产伊人精品在线| 亚洲精品国产精品国产自| 欧美午夜精品久久久久久浪潮| 北条麻妃一区二区三区中文字幕| 日韩电影免费在线观看| 国产精品极品美女粉嫩高清在线| 日韩a**中文字幕| 日本aⅴ大伊香蕉精品视频| 成人亲热视频网站| 国产精品久久久久久久午夜| 国产精品久在线观看| 国产98色在线| 91久久在线视频| 国产成人精品在线播放| 欧美性极品xxxx娇小| 亚洲男人天堂2019| 亚洲综合小说区| 97色在线观看免费视频| 97视频免费观看| 欧美性感美女h网站在线观看免费| 国产精品男人的天堂| 成人精品久久一区二区三区| 国产日韩欧美影视| 日韩欧美aⅴ综合网站发布| 欧美日韩免费区域视频在线观看| 精品久久香蕉国产线看观看亚洲| 中文在线资源观看视频网站免费不卡| 久久久av亚洲男天堂| 亚洲色图在线观看| 奇米一区二区三区四区久久| 米奇精品一区二区三区在线观看| 亚洲精品v天堂中文字幕| 91综合免费在线| 久久噜噜噜精品国产亚洲综合| 91国内揄拍国内精品对白| 一本一道久久a久久精品逆3p| 精品免费在线观看| 日韩在线观看成人| 国产视频精品xxxx| 5566日本婷婷色中文字幕97| 国产亚洲欧洲高清一区| 日韩一区二区在线视频| 日韩av手机在线看| 欧美另类精品xxxx孕妇| 日韩欧美一区二区三区久久| 亚洲激情免费观看| 日韩**中文字幕毛片| 国产精品扒开腿做爽爽爽视频| 亚州精品天堂中文字幕| 成人444kkkk在线观看| 色午夜这里只有精品| 欧美黑人性生活视频| 在线视频精品一| 在线a欧美视频| 久久国产精品久久久久| 精品美女永久免费视频| 欧美午夜丰满在线18影院| 国产中文字幕91| 成人福利在线观看| 久久久www成人免费精品| 成人综合国产精品| 日韩av在线看| 色婷婷成人综合| 91精品国产777在线观看| 国产精品一区二区3区| 精品欧美激情精品一区| 日韩av在线一区二区| 欧美高清自拍一区| 自拍偷拍亚洲欧美| 亚洲精品美女久久| 中文字幕精品视频| 青青草原成人在线视频| 国产精品青青在线观看爽香蕉| 国产精品aaaa| 成人在线小视频| www.欧美三级电影.com| 中文字幕精品www乱入免费视频| 97国产精品视频|