Advertisement
Guest User

Untitled

a guest
May 4th, 2016
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.19 KB | None | 0 0
  1. <style>
  2. body { margin: 0; font: .9em lucida grande, helvetica, sans-serif }
  3. header { padding: 1em 1.4em; background: #f3f3f3; border-bottom: 1px solid #ddd }
  4. input { padding: .4em }
  5. li { list-style: none; padding: 1.2em 0; border-bottom: 1px solid #eaeaea; color:rgba(0,0,0,.6); text-shadow:rgba(0,0,0,.2) 2px 6px 5px,rgba(255,255,255,.4) 0 -4px 30px; }
  6. </style>
  7.  
  8. <header>
  9. <input placeholder=Search autofocus class=search><!-- search.js input -->
  10. </header>
  11.  
  12. <ul class=search>
  13. <li>JavaScript</li>
  14. <li>Java</li>
  15. <li>jQuery</li>
  16. <li>AngularJS</li>
  17. <li>ReactJS</li>
  18. <ul>
  19. <li>Submunu 1</li>
  20. <ul>
  21. <li>Submenu 1.2</li>
  22. </ul>
  23. </ul>
  24. <ul>
  25. <li>Submenu 2</li>
  26. </ul>
  27. <ul>
  28. <li>Submenu 3</li>
  29. </ul>
  30. <li>Bootstrap</li>
  31. <li>PHP</li>
  32. <li>Python</li>
  33. </ul>
  34.  
  35. <script>
  36. document.addEventListener("DOMContentLoaded", function() {
  37. "use strict"
  38.  
  39. var style = ""
  40. + "<style>"
  41. + "input.search {"
  42. + "-webkit-tap-highlight-color: transparent;"
  43. + "}"
  44. + ".search .hidden {"
  45. + "opacity: 0;"
  46. + "pointer-events: none;"
  47. + "}"
  48. + ".search > * {"
  49. + "position: absolute;"
  50. + "transition: .5s;"
  51. + "}"
  52. + "</style>"
  53.  
  54. document.head.insertAdjacentHTML("beforeend", style)
  55.  
  56. var items = document.querySelectorAll(".search > *")
  57. var itemHeight = items[0].offsetHeight
  58. var texts = []
  59. var i = -1
  60. var len = items.length
  61. var transform = "transform" in document.body.style ? "transform" : "webkitTransform"
  62.  
  63. while (++i < len) {
  64. texts.push(items[i].textContent.trim())
  65. items[i].style[transform] = "translateY(" + i*itemHeight +"px)"
  66. }
  67.  
  68. document.querySelector("input.search").addEventListener("input", function() {
  69. var re = new RegExp(this.value, "i")
  70. texts.forEach(function(element, index) {
  71. if (re.test(element)) {
  72. items[index].classList.remove("hidden")
  73. }
  74. else {
  75. items[index].classList.add("hidden")
  76. }
  77. var i = -1
  78. var position = 0
  79. while (++i < len) {
  80. if (items[i].className != "hidden") {
  81. items[i].style[transform] = "translateY(" + position++ * itemHeight + "px)"
  82. }
  83. }
  84. })
  85. })
  86. })
  87. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement