|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en"> |
| 3 | + <head> |
| 4 | + <title>Open: scroll (via API)</title> |
| 5 | + <link rel="stylesheet" href="../demo.css" /> |
| 6 | + <style> |
| 7 | + .scroll-indicator { |
| 8 | + position: fixed; |
| 9 | + top: 0; |
| 10 | + right: 0; |
| 11 | + text-align: right; |
| 12 | + padding: 20px; |
| 13 | + background: black; |
| 14 | + color: white; |
| 15 | + } |
| 16 | + .lorem-ipsum { |
| 17 | + opacity: 0.25; |
| 18 | + } |
| 19 | + </style> |
| 20 | + </head> |
| 21 | + <body> |
| 22 | + <div class="scroll-indicator"> |
| 23 | + The popup will open at <span id="percent">30</span>%<br/> |
| 24 | + You scrolled <span id="scroll-pixels">0</span>px, that is <span id="scroll-percentage">0.00</span>% of the page |
| 25 | + </div> |
| 26 | + <h1>This popup opens on scroll - at <span id="percent-title">30</span>% (via API)</h1> |
| 27 | + <p>The popup is opened automatically when you scroll past given percentage of the page height.</p> |
| 28 | + <p>The popup is opened only once (when you scroll past the given percentage for the first time).</p> |
| 29 | + |
| 30 | + <h2>Customize the percentage</h2> |
| 31 | + <p>This can be set on "Share" page as well.</p> |
| 32 | + <form action="" method="get"> |
| 33 | + <label for="threshold">Percent</label> |
| 34 | + <input id="threshold" name="percent" type="number" value="30" step="10" min="10" /> |
| 35 | + <button type="submit">Set</button> |
| 36 | + </form> |
| 37 | + |
| 38 | + <script type="text/javascript" src="../embed.js"></script> |
| 39 | + <script> |
| 40 | + document.addEventListener('scroll', function() { |
| 41 | + const offsetTop = window.pageYOffset || document.documentElement.scrollTop |
| 42 | + const clientTop = document.documentElement.clientTop || 0 |
| 43 | + const scrollTopPixels = offsetTop - clientTop |
| 44 | + const scrollTopPercentage = scrollTopPixels / document.body.clientHeight * 100 |
| 45 | + document.getElementById('scroll-pixels').innerHTML = scrollTopPixels; |
| 46 | + document.getElementById('scroll-percentage').innerHTML = (Math.round(scrollTopPercentage * 100) / 100).toFixed(2); |
| 47 | + }) |
| 48 | + |
| 49 | + const param = window.location.search.match(/percent=(\d+)/) |
| 50 | + const percent = param ? parseInt(param[1], 10) : 30; |
| 51 | + |
| 52 | + document.getElementById('threshold').value = percent; |
| 53 | + document.getElementById('percent').innerHTML = percent; |
| 54 | + document.getElementById('percent-title').innerHTML = percent; |
| 55 | + |
| 56 | + window.typeformEmbed.makePopup( |
| 57 | + '../form/mock.html#foobar=hello', |
| 58 | + { |
| 59 | + mode: 'popup', |
| 60 | + open: 'scroll', |
| 61 | + openValue: percent |
| 62 | + } |
| 63 | + ) |
| 64 | + </script> |
| 65 | + |
| 66 | + <div class="lorem-ipsum"> |
| 67 | + <h2>Random text to make the page long</h2> |
| 68 | + <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed viverra aliquam augue vitae volutpat. Integer eu turpis elit.</p> |
| 69 | + <p>Mauris nec lobortis metus. Quisque commodo quis neque sed volutpat. Integer a bibendum ante, at dapibus arcu.</p> |
| 70 | + <p>Curabitur at suscipit enim. Aliquam ut urna nunc. Praesent nisl elit, iaculis nec lectus vitae, posuere aliquet velit.</p> |
| 71 | + <p>Aenean id porttitor nisi. Phasellus vel fermentum elit. In ut maximus risus, quis lobortis elit.</p> |
| 72 | + <p>Phasellus pellentesque placerat turpis ac semper. Duis ligula enim, vulputate sed erat vitae, vehicula bibendum turpis.</p> |
| 73 | + <p>Donec nibh purus, vehicula at mauris volutpat, placerat molestie diam.</p> |
| 74 | + <p>Mauris tristique posuere ipsum vitae venenatis. Donec ut orci id massa ullamcorper pulvinar.</p> |
| 75 | + <p>Morbi pulvinar ante mauris, at sollicitudin lorem molestie sit amet. Morbi tellus nisi, rutrum ut lectus et, luctus eleifend mi.</p> |
| 76 | + <p>Quisque felis enim, blandit in convallis in, bibendum non metus. Proin consectetur ut ante nec malesuada.</p> |
| 77 | + <p>Pellentesque interdum id metus condimentum varius. Nullam fringilla lacinia posuere.</p> |
| 78 | + <p>Morbi pellentesque ante vitae tellus ullamcorper sollicitudin. Proin leo dolor, molestie quis diam id, tempor ullamcorper diam.</p> |
| 79 | + <p>Donec sed pulvinar nunc, et posuere purus. Morbi ornare, diam eget blandit molestie, massa leo sollicitudin nisi.</p> |
| 80 | + <p>Id tempus ex nisi quis lectus. Etiam laoreet dui est, quis tempus augue pharetra et. Nullam sed elit turpis.</p> |
| 81 | + <p>Donec et mi tellus. Aliquam ut interdum dolor. Aliquam dapibus velit non nunc porttitor finibus.</p> |
| 82 | + <p>Proin elementum risus et molestie aliquam.</p> |
| 83 | + <p>Duis a egestas lectus, sed mattis nisl. Ut ultricies id mi vel varius. Donec nec laoreet orci.</p> |
| 84 | + <p>Morbi pulvinar ante mauris, at sollicitudin lorem molestie sit amet. Morbi tellus nisi, rutrum ut lectus et, luctus eleifend mi.</p> |
| 85 | + <p>Quisque felis enim, blandit in convallis in, bibendum non metus. Proin consectetur ut ante nec malesuada.</p> |
| 86 | + <p>Pellentesque interdum id metus condimentum varius. Nullam fringilla lacinia posuere.</p> |
| 87 | + <p>Morbi pellentesque ante vitae tellus ullamcorper sollicitudin. Proin leo dolor, molestie quis diam id, tempor ullamcorper diam.</p> |
| 88 | + <p>Donec sed pulvinar nunc, et posuere purus. Morbi ornare, diam eget blandit molestie, massa leo sollicitudin nisi.</p> |
| 89 | + <p>Id tempus ex nisi quis lectus. Etiam laoreet dui est, quis tempus augue pharetra et. Nullam sed elit turpis.</p> |
| 90 | + <p>Donec et mi tellus. Aliquam ut interdum dolor. Aliquam dapibus velit non nunc porttitor finibus.</p> |
| 91 | + <p>Proin elementum risus et molestie aliquam.</p> |
| 92 | + <p>Phasellus sagittis iaculis nisi at molestie. Aliquam id justo orci. Aenean cursus nulla sit amet lectus consequat vestibulum.</p> |
| 93 | + <p>In volutpat neque at egestas pellentesque. Vivamus in viverra eros, non facilisis mi.</p> |
| 94 | + <p>Suspendisse sed metus molestie dolor convallis porta eu vitae mauris. Curabitur pharetra, lorem non tincidunt sollicitudin.</p> |
| 95 | + <p>Odio tortor consequat nisi, et feugiat lectus odio sit amet nisi. Curabitur et tempor purus.</p> |
| 96 | + <p>Maecenas commodo lorem augue, sed varius est maximus auctor. Proin finibus justo eu ante bibendum mollis.</p> |
| 97 | + <p>Proin laoreet dapibus lorem a euismod. Integer dignissim eleifend efficitur. Pellentesque vitae pellentesque nisl.</p> |
| 98 | + <p>Suspendisse vitae sem vitae risus sollicitudin sagittis ac sed urna.</p> |
| 99 | + <p>In hac habitasse platea dictumst. Nulla sit amet mauris elit. Maecenas consectetur imperdiet nisl, a vestibulum lectus maximus vel.</p> |
| 100 | + <p>Nulla sagittis tempus arcu id vestibulum. Donec at nulla congue, luctus orci sit amet, scelerisque ante.</p> |
| 101 | + <p>Praesent faucibus, lacus et varius cursus, turpis nibh scelerisque est, sit amet lacinia sapien metus vitae tellus.</p> |
| 102 | + <p>Phasellus pellentesque placerat turpis ac semper. Duis ligula enim, vulputate sed erat vitae, vehicula bibendum turpis.</p> |
| 103 | + <p>Donec nibh purus, vehicula at mauris volutpat, placerat molestie diam.</p> |
| 104 | + <p>Mauris tristique posuere ipsum vitae venenatis. Donec ut orci id massa ullamcorper pulvinar.</p> |
| 105 | + <p>Mauris aliquam erat feugiat ligula faucibus, eu imperdiet ante molestie.</p> |
| 106 | + <p>Donec convallis, nisi at molestie fringilla, mi dolor suscipit risus, vitae gravida nulla libero vitae urna.</p> |
| 107 | + <p>Vestibulum id nisi mauris. In faucibus vitae massa eget feugiat. Morbi in arcu congue, iaculis eros ac, fermentum purus.</p> |
| 108 | + <p>Fusce lectus tortor, facilisis tincidunt varius ac, sodales quis eros. Pellentesque quis nulla a nisl feugiat pretium.</p> |
| 109 | + <p>Duis et magna finibus, hendrerit ligula non, rutrum nunc.</p> |
| 110 | + <p>Pellentesque interdum id metus condimentum varius. Nullam fringilla lacinia posuere.</p> |
| 111 | + <p>Morbi pellentesque ante vitae tellus ullamcorper sollicitudin. Proin leo dolor, molestie quis diam id, tempor ullamcorper diam.</p> |
| 112 | + <p>Donec sed pulvinar nunc, et posuere purus. Morbi ornare, diam eget blandit molestie, massa leo sollicitudin nisi.</p> |
| 113 | + <p>Id tempus ex nisi quis lectus. Etiam laoreet dui est, quis tempus augue pharetra et. Nullam sed elit turpis.</p> |
| 114 | + <p>Donec et mi tellus. Aliquam ut interdum dolor. Aliquam dapibus velit non nunc porttitor finibus.</p> |
| 115 | + <p>Proin elementum risus et molestie aliquam.</p> |
| 116 | + <p>Phasellus sagittis iaculis nisi at molestie. Aliquam id justo orci. Aenean cursus nulla sit amet lectus consequat vestibulum.</p> |
| 117 | + <p>In volutpat neque at egestas pellentesque. Vivamus in viverra eros, non facilisis mi.</p> |
| 118 | + <p>Suspendisse sed metus molestie dolor convallis porta eu vitae mauris. Curabitur pharetra, lorem non tincidunt sollicitudin.</p> |
| 119 | + <p>Odio tortor consequat nisi, et feugiat lectus odio sit amet nisi. Curabitur et tempor purus.</p> |
| 120 | + <p>Maecenas commodo lorem augue, sed varius est maximus auctor. Proin finibus justo eu ante bibendum mollis.</p> |
| 121 | + <p>Proin laoreet dapibus lorem a euismod. Integer dignissim eleifend efficitur. Pellentesque vitae pellentesque nisl.</p> |
| 122 | + <p>Suspendisse vitae sem vitae risus sollicitudin sagittis ac sed urna.</p> |
| 123 | + <p>In hac habitasse platea dictumst. Nulla sit amet mauris elit. Maecenas consectetur imperdiet nisl, a vestibulum lectus maximus vel.</p> |
| 124 | + <p>Nulla sagittis tempus arcu id vestibulum. Donec at nulla congue, luctus orci sit amet, scelerisque ante.</p> |
| 125 | + <p>Praesent faucibus, lacus et varius cursus, turpis nibh scelerisque est, sit amet lacinia sapien metus vitae tellus.</p> |
| 126 | + <p>Phasellus pellentesque placerat turpis ac semper. Duis ligula enim, vulputate sed erat vitae, vehicula bibendum turpis.</p> |
| 127 | + <p>Donec nibh purus, vehicula at mauris volutpat, placerat molestie diam.</p> |
| 128 | + <p>Mauris tristique posuere ipsum vitae venenatis. Donec ut orci id massa ullamcorper pulvinar.</p> |
| 129 | + <p>Morbi pulvinar ante mauris, at sollicitudin lorem molestie sit amet. Morbi tellus nisi, rutrum ut lectus et, luctus eleifend mi.</p> |
| 130 | + <p>Quisque felis enim, blandit in convallis in, bibendum non metus. Proin consectetur ut ante nec malesuada.</p> |
| 131 | + <p>Pellentesque interdum id metus condimentum varius. Nullam fringilla lacinia posuere.</p> |
| 132 | + <p>Morbi pellentesque ante vitae tellus ullamcorper sollicitudin. Proin leo dolor, molestie quis diam id, tempor ullamcorper diam.</p> |
| 133 | + <p>Donec sed pulvinar nunc, et posuere purus. Morbi ornare, diam eget blandit molestie, massa leo sollicitudin nisi.</p> |
| 134 | + <p>Id tempus ex nisi quis lectus. Etiam laoreet dui est, quis tempus augue pharetra et. Nullam sed elit turpis.</p> |
| 135 | + <p>Donec et mi tellus. Aliquam ut interdum dolor. Aliquam dapibus velit non nunc porttitor finibus.</p> |
| 136 | + <p>Proin elementum risus et molestie aliquam.</p> |
| 137 | + <p>Phasellus sagittis iaculis nisi at molestie. Aliquam id justo orci. Aenean cursus nulla sit amet lectus consequat vestibulum.</p> |
| 138 | + <p>In volutpat neque at egestas pellentesque. Vivamus in viverra eros, non facilisis mi.</p> |
| 139 | + <p>Suspendisse sed metus molestie dolor convallis porta eu vitae mauris. Curabitur pharetra, lorem non tincidunt sollicitudin.</p> |
| 140 | + <p>Odio tortor consequat nisi, et feugiat lectus odio sit amet nisi. Curabitur et tempor purus.</p> |
| 141 | + <p>Maecenas commodo lorem augue, sed varius est maximus auctor. Proin finibus justo eu ante bibendum mollis.</p> |
| 142 | + <p>Proin laoreet dapibus lorem a euismod. Integer dignissim eleifend efficitur. Pellentesque vitae pellentesque nisl.</p> |
| 143 | + <p>Suspendisse vitae sem vitae risus sollicitudin sagittis ac sed urna.</p> |
| 144 | + <p>Mauris aliquam erat feugiat ligula faucibus, eu imperdiet ante molestie.</p> |
| 145 | + </div> |
| 146 | + </body> |
| 147 | +</html> |
0 commit comments