MozTW 討論區
https://forum.moztw.org/

[求助]只用CSS控制隱藏區塊
https://forum.moztw.org/viewtopic.php?f=13&t=17661
1 頁 (共 1 頁)

發表人:  legnaleurc [ 2007-02-16, 22:41 ]
文章主題 :  [求助]只用CSS控制隱藏區塊

假設我目前有:

<a class="detect">NULL link</a>
<div class="stealth">
content
</div>

我的CSS設成這樣:

div.stealth {
display: none;
}
a.detect:visited+div.stealth {
display: block;
}

用意是要按過假連結之後顯示.stealth裡的東西
不過:visited這個擬似類別好像一定要有href屬性才有意義?
我用:active是可以,不過一定要滑鼠持續按著

可不可以純用CSS來達成這個目的呢?

發表人:  BobChao [ 2007-02-16, 23:13 ]
文章主題 : 

legnaleurc 寫:
用意是要按過假連結之後顯示.stealth裡的東西
不過:visited這個擬似類別好像一定要有href屬性才有意義?


我的記憶上也是這樣,其實這個用 JavaScript 做很簡單哪...
onclick="obj.style.display='block';" 就可以了說 (obj 要換成 DOM 的 Node)

發表人:  不惑仔Boohover [ 2007-02-16, 23:49 ]
文章主題 : 

legnaleurc 寫:
假設我目前有:

<a class="detect">NULL link</a>
<div class="stealth">
content
</div>

我的CSS設成這樣:

div.stealth {
display: none;
}
a.detect:visited+div.stealth {
display: block;
}

用意是要按過假連結之後顯示.stealth裡的東西
不過:visited這個擬似類別好像一定要有href屬性才有意義?
我用:active是可以,不過一定要滑鼠持續按著

可不可以純用CSS來達成這個目的呢?


這樣應該就可以了

html修改一下
代碼:
<a class="detect" href="#stealth">NULL link</a>
<div id="stealth">
content
</div>


css改成
代碼:
#stealth {display: none;}
a.detect:visited+#stealth {display: block;}


不過挺好奇的,這樣設計有何目的?因為一旦被瀏覽器視為visited,下回開就不再隱藏了。

發表人:  legnaleurc [ 2007-02-17, 00:10 ]
文章主題 : 

BobChao 寫:
\我的記憶上也是這樣,其實這個用 JavaScript 做很簡單哪...
onclick="obj.style.display='block';" 就可以了說 (obj 要換成 DOM 的 Node)


是的,只是我希望盡量避免使用JavaScript
因為我不知道使用者到底有沒有開JavaScript
加上想試試CSS有沒有辦法做到這個程度

JavaScript我比較困擾的一點是
我希望它能夠獲取特定的Class
但是沒有現成的函式

改:
後來我想想用class去抓有點危險.....
JavaScript有直接取得下一個節點的式子嗎?

不惑仔Boohover 寫:
不過挺好奇的,這樣設計有何目的?因為一旦被瀏覽器視為visited,下回開就不再隱藏了。


ouch!
你倒是說到重點了,我還真沒想到這回事....(汗)

看來還是用JavaScript是比較好的方法的樣子

發表人:  風痕影 [ 2007-02-18, 17:28 ]
文章主題 : 

legnaleurc 寫:
JavaScript我比較困擾的一點是
我希望它能夠獲取特定的Class
但是沒有現成的函式

我本身是先用 getElementsByTagName 取得所有的 DIV
然後再用迴圈比對它們的 className...

聽 Kourge 大大說,Firefox 3 將會支援 getElementsByClassName...
滿期待的 :wink:

發表人:  legnaleurc [ 2007-02-18, 18:04 ]
文章主題 : 

風痕影 寫:
我本身是先用 getElementsByTagName 取得所有的 DIV
然後再用迴圈比對它們的 className...

聽 Kourge 大大說,Firefox 3 將會支援 getElementsByClassName...
滿期待的 :wink:


這個我後來是用prototype去抓class
用了函式庫真的是省事許多

對了,有沒有事件是在文件開始讀取時就會觸發的啊?
onLoad事件似乎要"完全"讀完才會執行?

發表人:  BobChao [ 2007-02-19, 00:49 ]
文章主題 : 

legnaleurc 寫:
風痕影 寫:
我本身是先用 getElementsByTagName 取得所有的 DIV
然後再用迴圈比對它們的 className...

聽 Kourge 大大說,Firefox 3 將會支援 getElementsByClassName...
滿期待的 :wink:


這個我後來是用prototype去抓class
用了函式庫真的是省事許多

對了,有沒有事件是在文件開始讀取時就會觸發的啊?
onLoad事件似乎要"完全"讀完才會執行?


開始讀取就觸發的話,就直接放 <script> 讓他執行就好囉,不過這樣 DOM 還沒有完整建立完就執行,可能會有錯誤。

發表人:  風痕影 [ 2007-02-20, 01:37 ]
文章主題 : 

BobChao 寫:
開始讀取就觸發的話,就直接放 <script> 讓他執行就好囉,不過這樣 DOM 還沒有完整建立完就執行,可能會有錯誤。

我以前的解決方法是放在網頁最後面...
現在則是用 DOMContentLoaded,只是 IE 不支援 @___@"
不過,有人寫了一個 解決方案 :)

發表人:  kourge [ 2007-02-26, 15:47 ]
文章主題 : 

如果 <a> 沒有 href,那 a:link 就不適用,所以 href 可以設成 #,然後 onclick 的時候再 stopPropagation(),不然網址後面會多一個 #。

Dean Edwards 寫的 onload 算是最完善的了。

引言回覆:
JavaScript有直接取得下一個節點的式子嗎?

Prototype 可以用 $(element).next(),jQuery 也一樣。

1 頁 (共 1 頁) 所有顯示的時間為 UTC + 8 小時
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/