电脑技术学习

Js和CSS实现脚注(Footnote)效果

dn001
;;;;脚注(Footnote)是向用户提供更多信息的一个最佳途径,也是主体信息的一个有效补充,常见于各种印刷书籍中。不过,既然脚注有这些好处,我们当然要在网页中也加以利用,本文向您介绍了用;Javascript;和;CSS;实现脚注效果的方法。
Javascript:
  1. <script type="text/javascript">
  2. // 说明:用 Javascript 和 CSS 实现脚注(Footnote)效果
  3. // 作者:CodeBit.cn ( http://www.CodeBit.cn )
  4. var footNotes = function(){}
  5. footNotes.prototype = {
  6. footNoteClassName : "footnote", // 脚注的 className
  7. footNoteTagName : "span", // 脚注的标签名
  8. footNoteBackLink : " [back]", // 返回链接
  9. format : function(contentID, footnoteID)
  10. {
  11. if (!document.getElementById) return false
  12. var content = document.getElementById(contentID)
  13. var footnote = document.getElementById(footnoteID)
  14. var spans = content.getElementsByTagName(this.footNoteTagName)
  15. var noteArr = []
  16. var note = 0
  17. var elContent;
  18. var len = spans.length
  19. for (i=0 i<len; i++)
  20. {
  21. note ++;
  22. if (spans[i].className == this.footNoteClassName)
  23. {
  24. // 获取脚注内容
  25. elContent = spans[i].innerHTML
  26. noteArr.push(elContent)
  27. // 创建一个指向脚注的链接
  28. var newEle = document.createElement( "a" )
  29. newEle.href = '#ftn_' + footnoteID + '_' + note;
  30. newEle.title = "show footnote"
  31. newEle.id = 'ftnlink_'+footnoteID+'_' + note;
  32. newEle.innerHTML = note;
  33. // 清空原有内容
  34. while (spans[i].childNodes.length)
  35. {
  36. spans[i].removeChild( spans[i].firstChild )
  37. }
  38. spans[i].appendChild( newEle )
  39. }
  40. }
  41. // 创建注释列表
  42. var ul = this.__buildNoteList(noteArr, footnoteID)
  43. footnote.appendChild(ul)
  44. },
  45. __buildNoteList : function(notes, noteID)
  46. {
  47. if(!notes || notes.length < 1) return
  48. var ul = document.createElement('ul')
  49. ul.className = this.footNoteClassName
  50. var li;
  51. var len = notes.length + 1
  52. for(i=1 i<len; i++)
  53. {
  54. li = document.createElement('li')
  55. li.id = "ftn_"+noteID+"_"+i;
  56. li.innerHTML = notes[i-1]
  57. // 创建【返回】链接
  58. var link = document.createElement("a")
  59. link.href = "#ftnlink_" + noteID + "_" + i;
  60. link.innerHTML = this.footNoteBackLink
  61. li.appendChild( link )
  62. ul.appendChild( li )
  63. }
  64. return ul;
  65. }
  66. }
  67. </script>
要实现脚注,我们需要下列元素:
HTML:
  1. <div id="article1">
  2. CSS <span class="footnote">CSS 是 Cascading Style Sheet 的缩写。译作「层叠样式表单」。是用于(增强)控制网页样式并允许将样式信息与网页内容分离的一种标记性语言。</span>
  3. </div>
  4. <div id="artnotes1" class="footnoteHolder"></div>
其中:
article1是你需要脚注的文章主体
<span;class="footnote">;..;</span>是注释内容,标签;span;和;class;均可配置。
artnotes1是显示脚注的地方

按照默认的设置调用方式:
Javascript:
  1. <script type="text/javascript">
  2. var footnote = new footNotes()
  3. footnote.format('article1','artnotes1')
  4. </script>



  5. 如果你想自定义一些内容,可以用下面的方式:
    Javascript:
  1. <script type="text/javascript">
  2. var footnote = new footNotes()
  3. footnote.footNoteClassName = "footnote2"
  4. footnote.footNoteTagName = "em"
  5. footnote.footNoteBackLink = " [back &laquo;]"
  6. footnote.format('article1','artnotes1')
  7. </script>