Board logo

標題: [教學] (教學第33篇) Dynamic HTML 中篇 [打印本頁]

作者: 小誌    時間: 2010-5-19 09:43     標題: (教學第33篇) Dynamic HTML 中篇

固定元件位置
在上一節中,小誌提出「pixelTop」與「pixelLeft」屬性的測量單位作為元件的定位,大家可能還有些疑惑,現在小誌再來說明一下。

我們之所以使用CSS的位置(position)與大小(size) 屬性來做元件控制,是因為這些屬性會將元件的位置與大小數據化,讓我們能更容易瞭解及處理,不過,我們之前所使用過的CSS屬性,如width、height、top、left等,當我們取得這些屬性的值時,其所回應給我們的資料是一組數值加上其單位,也就是說這些屬性的回傳值是一個字串組,例如有一個元件它的寬(width)是30點(point),那麼我們所得的屬性值將會是「30pt」。

正因為屬性值若是一個字串組,將會使我們在做運算或指定屬性值時變的非常難以處理,例如在範例13-4.htm中,我們透過「left」屬性來設定元件的位置時,除了設定屬性的數值外,還得指定其單位為「px」,所以小誌才會提出「pixelTop」與「pixelLeft」屬性來使用,這兩種屬性都是以「像素」為測量單位,它們的屬性設定與取得都只是「數值」,因此我們在利用這些屬性值做運算或處理就輕鬆多了;除了位置的「pixelTop」與「pixelLeft」屬性外,元件寬度、高度也有為像素單位的屬性:「pixelWidth」與「pixelHeight」。如果「width」的字串屬性值為「30px」,那麼「pixelWidth」的屬性值就是一組數據「30」。

元件的位置與大小還有一種是以「點(point)」為單位的,但是它們的屬性設定與取得也是「數值」,這些屬性是「posTop」、「posLeft」、「posWidth」、「posHeight」。如果「width」的字串屬性值為「30pt」,那麼「posWidth」的屬性值就是一組數據「30」。
作者: 小誌    時間: 2010-5-19 09:54

捲動軸位置
當我們的網頁文件超過瀏覽器視窗可顯示範圍時,就會在瀏覽器視窗左方出現垂直捲動軸,或在瀏覽器視窗下方出現水平捲動軸,以便我們檢視網頁文件的內容:

[attach]752[/attach]

當我們移動捲動軸時,會引發onscroll(頁面捲動)事件,要有onscroll事件產生,當然得要有捲動軸可以使用才行!當我們利用捲動軸去改變頁面時,onscroll事件就會發生,在發生onscroll事件時,我們可以依照捲動軸當時所在的位置來改變我們元件的對應位置,捲動軸的位置由兩個屬性來控制與記錄,水平位置是「scrollLeft」屬性,而垂直位置則是「scrollTop」屬性:

屬性

作用

document.body.scrollTop

捲動軸的垂直位置

document.body.scrollLeft

捲動軸的水平位置



當我們使用捲動軸來改變頁面(捲動視窗)時,網頁元件會隨著頁面改變而看不到了,也就是說:元件不會隨著視窗捲動,我們無法將元件的位置固定在視窗中的某個地方,可是有一個某家外國提供免費空間的公司網頁中,有個圖片是會隨著視窗捲動,圖片會一直出現在畫面中ㄚ,沒錯!這樣的效果我們也可以輕易的做到,只要我們利用捲動軸的位置屬性就可以辦到。
[attach]753[/attach]
  1. <HTML>
  2. <HEAD>
  3. </HEAD>
  4. <SCRIPT language="JavaScript">
  5. //變更元件位置函式
  6. function move()
  7. //利用捲動軸位置改變元件位置
  8. {
  9. document.all.map.style.pixelLeft=document.body.scrollLeft
  10. document.all.map.style.pixelTop=document.body.scrollTop
  11. }

  12. </SCRIPT>
  13. <!--當視窗捲動時呼叫函式變更元件位置-->
  14. <BODY onScroll="move()">

  15. <img src="test.gif" alt="游移的圖片" id="map" style="position: absolute">

  16. </BODY>
  17. </HTML>
複製代碼


[attach]754[/attach]
作者: 小誌    時間: 2010-5-19 10:00

人家不要浮動的圖片在左上角啦!我要它在畫面的右下角啦!OK,我們現在就將圖片設定在右下角。
實例學習:
13-8.htm
  1. <HTML>
  2. <HEAD>
  3. <TITLE></TITLE>

  4. <SCRIPT Language="JavaScript">
  5. //設定浮動圖片位置更新速度
  6. changespeed = 20
  7. //浮定圖片水平位置設定  
  8. Xpos =100  
  9. //浮定圖片垂直位置設定
  10. Ypos =100

  11. //初始值設定
  12. function setinit()
  13. {
  14. posX = (document.body.clientWidth-Xpos)
  15. posY = (document.body.clientHeight-Ypos)
  16. }

  17. //捲動軸移動時更新圖片位置
  18. function Renew()
  19. {
  20. document.all.mymap.style.left = posX + (document.body.scrollLeft)
  21. document.all.mymap.style.top = posY + (document.body.scrollTop)
  22. }

  23. //特效主程式區
  24. function gomove()
  25. {
  26. setinit()
  27. window.onresize=setinit
  28. setInterval ("Renew()",changespeed)
  29. }
  30. </SCRIPT>
  31. </HEAD>
  32. <BODY>
  33. <!--浮動圖片的網頁敘述-->
  34. <img src="test.gif" id="mymap" style="position:absolute">
  35. <!--呼叫Java浮動表格特效的敘述-->
  36. <script language="JavaScript">
  37. <!--
  38. window.onload=gomove
  39. //-->
  40. </script>
  41. </BODY>
  42. </HTML>
複製代碼
首先我們先定義你圖片的位置與,重新計算定位圖片的時間:程式碼6至11行(網頁原始碼紅色標註),奇怪?!圖片的水平及垂直位置只有100個單位距離?沒錯啦!我們這次是從視窗的右下角來算,這是圖片與視窗邊界的距離,等一下我們還要計算圖片真正的位置啦!
setinit()函式,程式碼6至11行(網頁原始碼藍色標註):這個函式就是用來設定圖片的初始位置,圖片的初始位置是網頁視窗顯示區域減掉我們預設的圖片與視窗邊界的距離!說的不容易理解,小誌以圖片的水平位置為例,你看了下圖的解說就瞭了啦!

[attach]755[/attach]


當你開啟範例13-8.htm時會發現,還是沒有捲動軸可用,看不到效果ㄚ,原因之前已經說過了,你想一想,不過小誌還是預備了一個13-9.htm好讓你能看到效果,開啟看看吧! [attach]757[/attach]
[attach]756[/attach]




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)