MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-10-09, 05:39

所有顯示的時間為 UTC + 8 小時





發表新文章 這個主題已被鎖定,您不能編輯或回覆這個主題。  [ 8 篇文章 ] 
發表人 內容
文章發表於 : 2004-11-12, 17:43 
離線

註冊時間: 2004-11-12, 17:32
文章: 15
我需要在Table上面有ScrollBar,垂直的ScrollBar要可以固定Header,只拉動Row,而水平要可以Row和Header連動

我研究了很久,發現mozilla可以很方便的達到"垂直的ScrollBar要可以固定Header"的需求: (比IE方便多了)
代碼:
 tbody {overflow=auto;width: 100%; height: 200px}


但是水平要可以Row和Header連動卻做不到也,除了自己寫javascript控制之外,還有沒有別的方法啊?我想這個問題只要有寫網頁的人就一定會碰到才對. :shock:

因為這個javascript控制不太好做,碰到解析度不一樣的話,就會對不準,唉... :lol:


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7) Gecko/20040626 Firefox/0.8
 個人資料  
 
 文章主題 :
文章發表於 : 2004-11-12, 22:29 
不太明你的問題...
row跟header是指什麼呢...?

跟據你的CSS, 我把row跟header分別理解成tbody跟thead...

引言回覆:
水平要可以Row和Header連動

這個...
在下認為不可能...

要做到thead跟tbody能在同一個scrollbar下操作, 馬上想到的是用一個div包著它們, 然後把oveflow設成auto或是scroll...
但條件是tbody, thead任一的width必須超過div, 而且不能有horizontal scrollbar (要不就沒意思)...

但在下試驗過這是不可能的...

因為table width有特殊算法...
跟據CSS2.1 Specs, 不論table-layout的value是fixed還是auto, table-cell的width都不可能比parent table大...

詳情...
17.5.2 Table width algorithms: the 'table-layout' property
http://www.w3.org/TR/CSS21/tables.html#width-layout

奇怪的倒是Firefox竟然會讓overflow apply在tbody上...
照理應該不能用啊...


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0
  
 
 文章主題 :
文章發表於 : 2004-11-13, 01:20 
離線

註冊時間: 2004-11-12, 17:32
文章: 15
李某人 寫:
不太明你的問題...
row跟header是指什麼呢...?


不好意思,沒把問題說明清楚,Row就是Table上實際的資料,header就是column的意思
一般來說,Application的Table上的ScrollBar,一個是垂直捲軸,
一個是水平捲軸:

1. 垂直捲軸是當Row Count超過畫面顯示範圍的時候,會出現的,然後拉動的時候Column會Fixed住,只動Row Data

2. 水平捲軸的話,就是當橫向的Column Count太多超過畫面範圍時,就會出現,當拉動水平捲軸的時候Row跟Column會一起動

第一個沒問題,但是第二個就不行了,我也是測試了一陣子(當然沒有你久,一看就知道你是高手 :D )

不過我看過一個網站有寫一個Table元件可以達到說...
可是一大堆javascript,看了就頭大,如果要當成標準元件用在自己的每一個網頁上還需要自己在多墊一層呢... :twisted:

請連結這裡看Demo,好像IE和Mozilla都可以喔!


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7) Gecko/20040626 Firefox/0.8
 個人資料  
 
 文章主題 :
文章發表於 : 2004-11-29, 18:42 
離線

註冊時間: 2004-11-12, 17:32
文章: 15
我剛剛看到一篇文章,專門在解這個問題,不但可以解決,更是可以輕易的作到固定住前面幾個column,只讓水平捲軸拉動後面幾個column的高難度技巧喔

可是重點是,這個是針對IE所設計的解決方案,提供給各位作參考:
原文出處

以下是內容:

看到一篇文章,用css實現鎖定 HTML Table表頭和第一列,曾見過不少網友為鎖定DataGrid的表頭而傷腦筋,找到的很多實現方法都不盡如人意(最主要的問題就是表頭行中的列和表格其它行中的列的錯位),而這篇文章介紹的實現方法卻非常完美地解決了這個問題,而且還可以象Excel一樣鎖定表格的第一列...


為了避免文章過長,大家瀏覽不方便,所以我把html和css當成附加檔案供大家下載
這裡只提出重點部份

test.html
代碼:
...
<link rel="stylesheet" href="test.css" type="text/css">

<script type="text/javascript">
function lockCol(tblID) {

 var table = document.getElementById(tblID);
 var button = document.getElementById('toggle');
 var cTR = table.getElementsByTagName('TR');  //collection of rows

 if (table.rows[0].cells[0].className == '') {
  for (i = 0; i < cTR.length; i++)
   {
   var tr = cTR.item(i);
   tr.cells[0].className = 'locked'
   }
  button.innerText = "Unlock First Column";
  }
  else {
  for (i = 0; i < cTR.length; i++)
   {
   var tr = cTR.item(i);
   tr.cells[0].className = ''
   }
  button.innerText = "Lock First Column";
  }
}
</script>

<button onClick="lockCol('tbl')"  id="toggle">Lock First Column</button>

<div id="tbl-container">

<table id="tbl">
<thead>
...
</thead>

<tbody>
...
</tbody>
</table>

<div>


test.css
代碼:
...
div#tbl-container {
width: 418px;
height: 252px;
overflow: auto;
}

table {
table-layout: fixed;
border-collapse: collapse;
}

div#tbl-container table th {
width: 100px;
}

thead th, thead th.locked {
font-weight: bold;
text-align: center;
color: white;
border-right: 1px solid silver;
position:relative;
cursor: default;
}
 
thead th {
top: expression(document.getElementById("tbl-container").scrollTop-2); /*IE5+ only*/
z-index: 20;
}

thead th.locked {z-index: 30;}

td.locked,  th.locked{
border-right: 1px solid silver;
left: expression(document.getElementById("tbl-container").scrollLeft); /*IE5+ only*/
position: relative;
z-index: 10;
}

td {
padding: 2px 5px 2px 2px;
font-size: 12px;
border-left: 1px solid silver;
border-bottom: 1px solid silver;
}
...


不過只限制在IE上,不能用在mozilla上,真是太不公平啦! >_<[/url]


附加檔案:
檔案註釋: html table的scrollbar完美解決方案(For IE)
test.zip [2.63 KiB]
被下載 603 次
回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.5) Gecko/20041111 Firefox/1.0 (JTw)
 個人資料  
 
 文章主題 :
文章發表於 : 2004-11-29, 20:30 
離線
頭像

註冊時間: 2004-07-23, 14:05
文章: 1552
來自: 台北縣豆腐的故鄉
沒有符合W3C標準的解決方案嗎?我們也可以多研究非IE的標準方式啊,不然會被IE吃死喔 :)

_________________
不努力的話,就會死在這裡,或是死在那裡。


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10.1
 個人資料  
 
 文章主題 :
文章發表於 : 2004-11-30, 10:11 
離線

註冊時間: 2004-11-12, 17:32
文章: 15
MilchFlasche 寫:
沒有符合W3C標準的解決方案嗎?我們也可以多研究非IE的標準方式啊,不然會被IE吃死喔 :)


當然是希望這樣啊,可是單就這一點功能而言,非IE的瀏覽器(ex: firefox)頂多只能解決垂直ScrollBar的問題,卻沒有辦法解決水平ScrollBar的Header和Body連動的問題,令人遺憾 :oops:

還是說有解法,請各位高手分享一下吧... :roll:


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.5) Gecko/20041111 Firefox/1.0 (JTw)
 個人資料  
 
 文章主題 :
文章發表於 : 2004-11-30, 11:15 
離線
[網站管理員]
頭像

註冊時間: 2002-01-07, 19:28
文章: 3080
來自: 台灣
http://www.activewidgets.com/

這個可以嗎?我還沒有研究所以您得自己看 ^^;

_________________
雜工 :: 柏強 / Bob Chao
發問討論請保持禮節,在志工社群裡沒有人有「義務」要為您做些什麼。

* MozTW 志工無限招募中,開放網路世界需要您的一臂之力


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.5) Gecko/20041119 Firefox/1.0
 個人資料  
 
 文章主題 :
文章發表於 : 2004-11-30, 16:14 
BobChao 寫:
http://www.activewidgets.com/

這個可以嗎?我還沒有研究所以您得自己看 ^^;


這個我已經研究過了,的確是可以解決沒有錯.
但是,這個全部都是要用javascript寫成,像我是用JSP來開發UI,就會非常麻煩,雖然它有提供JSP Tag可用,不過好像要錢,只Open grid.js給大家免費使用. (太生氣了) :twisted:


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.7.5) Gecko/20041111 Firefox/1.0 (JTw)
  
 
顯示文章 :  排序  
發表新文章 這個主題已被鎖定,您不能編輯或回覆這個主題。  [ 8 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 11 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群