index.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <!doctype html>
  2. <head>
  3. <meta charset="utf-8">
  4. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  5. <title>Tether – Marrying elements for life</title>
  6. <meta name="description" content="Tether is a JavaScript and CSS library. It is free and open source and was developed by HubSpot developers Adam Schwartz (@adamfschwartz) and Zack Bloom (@zackbloom).">
  7. <link rel="icon" href="http://static.hubspot.com/favicon.ico">
  8. <script type="text/javascript" src="//use.typekit.net/ghy0wve.js"></script>
  9. <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
  10. <!-- Tether themes -->
  11. <link rel="stylesheet" href="//github.hubspot.com/tether/dist/css/tether-theme-arrows-dark.css" />
  12. <!-- Welcome docs styles -->
  13. <link rel="stylesheet" href="//github.hubspot.com/tether/docs/welcome/css/prism.css" />
  14. <link rel="stylesheet" href="//github.hubspot.com/tether/docs/welcome/css/welcome.css" />
  15. <!-- OS icons -->
  16. <link rel="stylesheet" href="http://github.hubspot.com/os-icons/os-icons.css" />
  17. </head>
  18. <body>
  19. <div class="hero-wrap">
  20. <table class="showcase hero"><tr><td>
  21. <div class="showcase-inner">
  22. <div class="tether-target-demo">
  23. <h1>Tether</h1>
  24. <div class="mobile-copy">
  25. <h2>Marrying elements for life</h2>
  26. <p>
  27. <a class="button" href="http://github.com/HubSpot/tether">★ On Github</a>
  28. </p>
  29. </div>
  30. </div>
  31. </div>
  32. </td></tr></table>
  33. </div>
  34. <div class="browser-demo-start-point"></div>
  35. <table class="showcase browser-demo"><tr><td>
  36. <div class="showcase-inner">
  37. <div class="section-copy" data-section="what">
  38. <h2>What is Tether?</h2>
  39. </div>
  40. <div class="section-copy" data-section="how">
  41. <h2>How Tether works.</h2>
  42. </div>
  43. <div class="section-copy" data-section="why">
  44. <h2>Tether is powerful.</h2>
  45. </div>
  46. <div class="section-copy" data-section="outro">
  47. <h2>Play with Tether</h2>
  48. </div>
  49. <div class="browser-demo-inner">
  50. <div class="browser-window">
  51. <div class="browser-titlebar">
  52. <div class="browser-dots"><b></b><b></b><b></b></div>
  53. </div>
  54. <div class="browser-frame">
  55. <iframe src="browser-demo.html"></iframe>
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. </td></tr></table>
  61. <table class="showcase browser-demo-section no-next-arrow" data-section="what"><tr><td>
  62. <div class="section-scroll-copy">
  63. <div class="section-scroll-copy-inner">
  64. <p>Tether is a low-level UI library that can be used to position any element on a page <i>next to any other element</i>.</p>
  65. <p>It can be used for dropdown menus, tooltips, popovers, tours, help information, scroll guides, autocompletes, etc. The possibilities are endless.</p>
  66. <p class="example-paragraph">In this example we're showing an action menu <em>tethered</em> to a list item.</p>
  67. </div>
  68. </div>
  69. </td></tr></table>
  70. <table class="showcase browser-demo-section no-next-arrow" data-section="how"><tr><td>
  71. <div class="section-scroll-copy">
  72. <div class="section-scroll-copy-inner">
  73. <p>Tether works by creating an absolutely positioned element and meticulously tracking the movements of a <i>target</i> which you specify.</p>
  74. <p>The <i>target</i> and <i>element</i> can be tethered together in a variety of different ways.</p>
  75. <p class="example-paragraph">Notice how the <i>tethered element</i> stays tethered to its <i>target</i> list item even as the left pane is scrolled up and down.</p>
  76. </div>
  77. </div>
  78. </td></tr></table>
  79. <table class="showcase browser-demo-section no-next-arrow" data-section="why"><tr><td>
  80. <div class="section-scroll-copy">
  81. <div class="section-scroll-copy-inner">
  82. <p>Tether can keep your element positioned properly even in some tough situations.</p>
  83. <p>Tether handles all of the common pain points:</p>
  84. <ul>
  85. <li>Automatically detect collisions with the edge of the page or edge of the scrollParent</li>
  86. <li>Automatically reposition on browser resize, scroll, and other events,</li>
  87. <li>Constrain the position to any bounding box,</li>
  88. </ul>
  89. <p>...and a lot more.</p>
  90. </div>
  91. </div>
  92. </td></tr></table>
  93. <table class="showcase browser-demo-section no-next-arrow" data-section="outro"><tr><td>
  94. <div class="section-scroll-copy">
  95. <div class="section-scroll-copy-inner">
  96. <p class="example-paragraph">Interact with this demo.</p>
  97. <p>&nbsp;</p>
  98. <p>To learn more, check out our <a href="/">documentation</a>.</p>
  99. </div>
  100. </div>
  101. </td></tr></table>
  102. <table class="showcase browser-demo-section no-next-arrow" data-section="__empty"><tr><td></td></tr></table>
  103. <div class="browser-demo-stop-point"></div>
  104. <table class="showcase projects-showcase no-next-arrow"><tr><td>
  105. <div class="showcase-inner">
  106. <h1>Tether Family</h1>
  107. <h2>These projects are all powered by Tether's positioning engine.</h2>
  108. <div class="projects-list">
  109. <a href="//github.hubspot.com/drop/docs/welcome" class="project">
  110. <h1>Drop</h1>
  111. <span class="os-icon drop-icon"></span>
  112. <p>Create dropdowns, popovers, and more.</p>
  113. </a>
  114. <a href="//github.hubspot.com/tooltip/docs/welcome" class="project">
  115. <h1>Tooltip</h1>
  116. <span class="os-icon tooltip-icon"></span>
  117. <p>Stylable tooltips built on Tether.</p>
  118. </a>
  119. <a href="//github.hubspot.com/select/docs/welcome" class="project">
  120. <h1>Select</h1>
  121. <span class="os-icon select-icon"></span>
  122. <p>Stylable select elements built on Tether.</p>
  123. </a>
  124. <a href="//github.hubspot.com/shepherd/docs/welcome" class="project">
  125. <h1>Shepherd</h1>
  126. <span class="os-icon shepherd-icon"></span>
  127. <p>Guide your users through a tour of your app.</p>
  128. </a>
  129. </div>
  130. </div>
  131. </td></tr></table>
  132. <table class="showcase last-showcase no-next-arrow share"><tr><td>
  133. <div class="showcase-inner">
  134. <h1>Share</h1>
  135. <h2>Help us spread the word.</h2>
  136. <!-- Share -->
  137. <style>
  138. .share-buttons {
  139. margin: 4em auto;
  140. text-align: center;
  141. }
  142. .share-button {
  143. display: inline-block;
  144. }
  145. .retweet-button {
  146. width: 100px;
  147. margin-left: 20px;
  148. }
  149. .github-stars {
  150. width: 100px;
  151. }
  152. </style>
  153. <div class="share-buttons">
  154. <div class="share-button retweet-button">
  155. <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://github.hubspot.com/tether/docs/welcome" data-text="Tether.js - A positioning engine for JavaScript" data-count="horizontal" data-via="HubSpotDev">Tweet</a>
  156. <script>
  157. (function(){
  158. var recommends, button;
  159. if (Math.random() >= 0.5) {
  160. recommends = ['hubspotdev', 'zackbloom', 'adamfschwartz'];
  161. } else {
  162. recommends = ['hubspotdev', 'adamfschwartz', 'zackbloom'];
  163. }
  164. button = document.querySelector('.twitter-share-button');
  165. if (button) {
  166. button.setAttribute('data-related', recommends.join(','));
  167. }
  168. })();
  169. </script>
  170. <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
  171. </div>
  172. <div class="share-button github-stars-button">
  173. <iframe src="http://ghbtns.com/github-btn.html?user=HubSpot&amp;repo=tether&amp;type=watch&amp;count=true&amp;size=small" allowtransparency="true" frameborder="0" scrolling="0" width="100" height="20"></iframe>
  174. </div>
  175. </p>
  176. </div>
  177. </td></tr></table>
  178. <!-- Tether javascript -->
  179. <script src="//github.hubspot.com/tether/dist/js/tether.min.js"></script>
  180. <!-- Welcome docs javascript -->
  181. <script src="//github.hubspot.com/tether/docs/welcome/js/log.js"></script>
  182. <script src="//github.hubspot.com/tether/docs/welcome/js/jquery.js"></script>
  183. <script src="//github.hubspot.com/tether/docs/welcome/js/drop.js"></script>
  184. <script src="//github.hubspot.com/tether/docs/welcome/js/welcome.js"></script>
  185. <!-- HubSpot analytics -->
  186. <script type="text/javascript">
  187. (function(d,s,i,r) {
  188. if (d.getElementById(i)){return;}
  189. var n=d.createElement(s),e=d.getElementsByTagName(s)[0];
  190. n.id=i;n.src='//js.hubspot.com/analytics/'+(Math.ceil(new Date()/r)*r)+'/51294.js';
  191. e.parentNode.insertBefore(n, e);
  192. })(document,"script","hs-analytics",300000);
  193. </script>
  194. <!-- Google analytics -->
  195. <script>
  196. (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  197. (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  198. m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  199. })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  200. ga('create', 'UA-45159009-1', 'auto');
  201. ga('send', 'pageview');
  202. </script>
  203. </body>
  204. </html>