Guest User

Untitled

a guest
Jul 19th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.50 KB | None | 0 0
  1. <!doctype>
  2. <html>
  3. <head>
  4. <title>How-to CSS Modal Popup</title>
  5. <style>
  6.  
  7. button {
  8. background-color: orange;
  9. border: none;
  10. border-radius: 3px;
  11. color: #ffffff;
  12. cursor: pointer;
  13. line-height: 2rem;
  14. outline: none;
  15. padding: 0 24px;
  16. }
  17.  
  18. .modal {
  19. background-color: rgba(0,0,0,0.5);
  20. cursor: pointer;
  21. opacity: 0;
  22. position: fixed; top: 0; left: 0;
  23. transition: 0.4s opacity ease-in-out;
  24. visibility: hidden;
  25. width: 0; height: 0;
  26. }
  27.  
  28. .modal.modal-opacity,
  29. .modal.modal-on {
  30. bottom: 0; right: 0;
  31. padding: 24px;
  32. visibility: visible;
  33. width: auto; height: auto;
  34. }
  35.  
  36. .modal.modal-opacity {
  37. opacity: 1;
  38. }
  39.  
  40. .modal.modal-on {
  41. transition: 0s all ease 0.4s,
  42. 0.4s opacity ease-in-out 0s;
  43. }
  44.  
  45. .modal-content {
  46. background-color: #fff;
  47. box-shadow: 0 1px 4px rgba(0,0,0,0.5);
  48. box-sizing: border-box;
  49. color: #333;
  50. cursor: default;
  51. margin: 0 auto;
  52. max-width: 640px;
  53. max-height: calc(100vh - 24px);
  54. min-height: 250px;
  55. overflow-y: scroll;
  56. padding: 24px;
  57. position: absolute; top: 50%; left: 50%;
  58. transform: translate(-50%, -50%);
  59. width: calc(100% - 24px);
  60. }
  61.  
  62. body.overflow-hidden {
  63. overflow: hidden;
  64. }
  65.  
  66. </style>
  67. </head>
  68.  
  69. <body>
  70.  
  71. <button type="button" data-target="popup">Popup</button>
  72. <div class="modal" id="popup" data-target="popup">
  73. <div class="modal-content">
  74. <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sodales quam nibh, quis euismod metus volutpat facilisis. Pellentesque bibendum elit id justo efficitur, eu molestie orci facilisis. Duis ac tortor in justo pellentesque elementum quis non ipsum. Sed tellus erat, luctus ac accumsan at, suscipit sed leo. Duis aliquet sem augue, ut ornare ipsum volutpat id. Aliquam mi velit, imperdiet ut sodales eu, aliquam at sapien. Etiam ornare gravida laoreet. Phasellus faucibus nulla vitae varius commodo. Duis aliquet placerat metus nec vulputate.</p>
  75. <p><button type="button" data-target="popup">Close</button></p>
  76. </div>
  77. </div>
  78.  
  79. <script>
  80.  
  81. document.addEventListener('click', (event) => {
  82. event.preventDefault();
  83.  
  84. const target = event.target.getAttribute('data-target');
  85.  
  86. if ( target ) {
  87.  
  88. const modal = document.getElementById(target);
  89.  
  90. modal.classList.toggle('modal-opacity');
  91.  
  92. setTimeout( (modal) => {
  93. modal.classList.toggle('modal-on');
  94. }, 400, modal );
  95.  
  96. document.body.classList.toggle('overflow-hidden');
  97. }
  98. });
  99.  
  100. </script>
  101.  
  102. </body>
  103. </html>
Add Comment
Please, Sign In to add comment