Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

116 linhas
4.9 KiB

  1. <div class="bs-docs-section">
  2. <h1 id="affix" class="page-header">Affix <small>affix.js</small></h1>
  3. <h2 id="affix-examples">Example</h2>
  4. <p>The subnavigation on the right is a live demo of the affix plugin.</p>
  5. <hr class="bs-docs-separator">
  6. <h2 id="affix-usage">Usage</h2>
  7. <p>Use the affix plugin via data attributes or manually with your own JavaScript. <strong class="text-danger">In both situations, you must provide CSS for the positioning and width of your affixed content.</strong></p>
  8. <h3>Positioning via CSS</h3>
  9. <p>The affix plugin toggles between three classes, each representing a particular state: <code>.affix</code>, <code>.affix-top</code>, and <code>.affix-bottom</code>. You must provide the styles for these classes yourself (independent of this plugin) to handle the actual positions.</p>
  10. <p>Here's how the affix plugin works:</p>
  11. <ol>
  12. <li>To start, the plugin adds <code>.affix-top</code> to indicate the element is in its top-most position. At this point no CSS positioning is required.</li>
  13. <li>Scrolling past the element you want affixed should trigger the actual affixing. This is where <code>.affix</code> replaces <code>.affix-top</code> and sets <code>position: fixed;</code> (provided by Bootstrap's CSS).</li>
  14. <li>If a bottom offset is defined, scrolling past it should replace <code>.affix</code> with <code>.affix-bottom</code>. Since offsets are optional, setting one requires you to set the appropriate CSS. In this case, add <code>position: absolute;</code> when necessary. The plugin uses the data attribute or JavaScript option to determine where to position the element from there.</li>
  15. </ol>
  16. <p>Follow the above steps to set your CSS for either of the usage options below.</p>
  17. <h3>Via data attributes</h3>
  18. <p>To easily add affix behavior to any element, just add <code>data-spy="affix"</code> to the element you want to spy on. Use offsets to define when to toggle the pinning of an element.</p>
  19. {% highlight html %}
  20. <div data-spy="affix" data-offset-top="60" data-offset-bottom="200">
  21. ...
  22. </div>
  23. {% endhighlight %}
  24. <h3>Via JavaScript</h3>
  25. <p>Call the affix plugin via JavaScript:</p>
  26. {% highlight js %}
  27. $('#myAffix').affix({
  28. offset: {
  29. top: 100,
  30. bottom: function () {
  31. return (this.bottom = $('.footer').outerHeight(true))
  32. }
  33. }
  34. })
  35. {% endhighlight %}
  36. <h3>Options</h3>
  37. <p>Options can be passed via data attributes or JavaScript. For data attributes, append the option name to <code>data-</code>, as in <code>data-offset-top="200"</code>.</p>
  38. <div class="table-responsive">
  39. <table class="table table-bordered table-striped">
  40. <thead>
  41. <tr>
  42. <th style="width: 100px;">Name</th>
  43. <th style="width: 100px;">type</th>
  44. <th style="width: 50px;">default</th>
  45. <th>description</th>
  46. </tr>
  47. </thead>
  48. <tbody>
  49. <tr>
  50. <td>offset</td>
  51. <td>number | function | object</td>
  52. <td>10</td>
  53. <td>Pixels to offset from screen when calculating position of scroll. If a single number is provided, the offset will be applied in both top and bottom directions. To provide a unique, bottom and top offset just provide an object <code>offset: { top: 10 }</code> or <code>offset: { top: 10, bottom: 5 }</code>. Use a function when you need to dynamically calculate an offset.</td>
  54. </tr>
  55. <tr>
  56. <td>target</td>
  57. <td>selector | node | jQuery element</td>
  58. <td>the <code>window</code> object</td>
  59. <td>Specifies the target element of the affix.</td>
  60. </tr>
  61. </tbody>
  62. </table>
  63. </div><!-- /.table-responsive -->
  64. <h3>Events</h3>
  65. <p>Bootstrap's affix plugin exposes a few events for hooking into affix functionality.</p>
  66. <div class="table-responsive">
  67. <table class="table table-bordered table-striped">
  68. <thead>
  69. <tr>
  70. <th style="width: 150px;">Event Type</th>
  71. <th>Description</th>
  72. </tr>
  73. </thead>
  74. <tbody>
  75. <tr>
  76. <td>affix.bs.affix</td>
  77. <td>This event fires immediately before the element has been affixed.</td>
  78. </tr>
  79. <tr>
  80. <td>affixed.bs.affix</td>
  81. <td>This event is fired after the element has been affixed.</td>
  82. </tr>
  83. <tr>
  84. <td>affix-top.bs.affix</td>
  85. <td>This event fires immediately before the element has been affixed-top.</td>
  86. </tr>
  87. <tr>
  88. <td>affixed-top.bs.affix</td>
  89. <td>This event is fired after the element has been affixed-top.</td>
  90. </tr>
  91. <tr>
  92. <td>affix-bottom.bs.affix</td>
  93. <td>This event fires immediately before the element has been affixed-bottom.</td>
  94. </tr>
  95. <tr>
  96. <td>affixed-bottom.bs.affix</td>
  97. <td>This event is fired after the element has been affixed-bottom.</td>
  98. </tr>
  99. </tbody>
  100. </table>
  101. </div><!-- /.table-responsive -->
  102. </div>