Dashboard sipadu mbip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
  8. <!-- Google font -->
  9. <link href="https://fonts.googleapis.com/css?family=Maven+Pro:400,900" rel="stylesheet">
  10. <style type="text/css">
  11. body,
  12. html {
  13. padding: 0;
  14. margin: 0;
  15. font-family: 'Quicksand', sans-serif;
  16. font-weight: 400;
  17. overflow: hidden;
  18. }
  19. .writing {
  20. width: 320px;
  21. height: 200px;
  22. background-color: #3f3f3f;
  23. border: 1px solid #bbbbbb;
  24. border-radius: 6px 6px 4px 4px;
  25. position: relative;
  26. }
  27. .writing .topbar{
  28. position: absolute;
  29. width: 100%;
  30. height: 12px;
  31. background-color: #f1f1f1;
  32. border-top-left-radius: 4px;
  33. border-top-right-radius: 4px;
  34. }
  35. .writing .topbar div{
  36. height: 6px;
  37. width: 6px;
  38. border-radius: 50%;
  39. margin: 3px;
  40. float: left;
  41. }
  42. .writing .topbar div.green{
  43. background-color: #60d060;
  44. }
  45. .writing .topbar div.red{
  46. background-color: red;
  47. }
  48. .writing .topbar div.yellow{
  49. background-color: #e6c015;
  50. }
  51. .writing .code {
  52. padding: 15px;
  53. }
  54. .writing .code ul {
  55. list-style: none;
  56. margin: 0;
  57. padding: 0;
  58. }
  59. .writing .code ul li {
  60. background-color: #9e9e9e;
  61. width: 0;
  62. height: 7px;
  63. border-radius: 6px;
  64. margin: 10px 0;
  65. }
  66. .container {
  67. display: -webkit-box;
  68. display: -ms-flexbox;
  69. display: flex;
  70. -webkit-box-align: center;
  71. -ms-flex-align: center;
  72. align-items: center;
  73. -webkit-box-pack: center;
  74. -ms-flex-pack: center;
  75. justify-content: center;
  76. height: 100vh;
  77. width: 100%;
  78. -webkit-transition: -webkit-transform .5s;
  79. transition: -webkit-transform .5s;
  80. transition: transform .5s;
  81. transition: transform .5s, -webkit-transform .5s;
  82. }
  83. .stack-container {
  84. position: relative;
  85. width: 420px;
  86. height: 210px;
  87. -webkit-transition: width 1s, height 1s;
  88. transition: width 1s, height 1s;
  89. }
  90. .pokeup {
  91. -webkit-transition: all .3s ease;
  92. transition: all .3s ease;
  93. }
  94. .pokeup:hover {
  95. -webkit-transform: translateY(-10px);
  96. transform: translateY(-10px);
  97. -webkit-transition: .3s ease;
  98. transition: .3s ease;
  99. }
  100. .error {
  101. width: 400px;
  102. padding: 40px;
  103. text-align: center;
  104. }
  105. .error h1 {
  106. font-size: 125px;
  107. padding: 0;
  108. margin: 0;
  109. font-weight: 700;
  110. }
  111. .error h2 {
  112. margin: -30px 0 0 0;
  113. padding: 0px;
  114. font-size: 47px;
  115. letter-spacing: 12px;
  116. }
  117. .perspec {
  118. -webkit-perspective: 1000px;
  119. perspective: 1000px;
  120. }
  121. .writeLine{
  122. -webkit-animation: writeLine .4s linear forwards;
  123. animation: writeLine .4s linear forwards;
  124. }
  125. .explode{
  126. -webkit-animation: explode .5s ease-in-out forwards;
  127. animation: explode .5s ease-in-out forwards;
  128. }
  129. .card {
  130. -webkit-animation: tiltcard .5s ease-in-out 1s forwards;
  131. animation: tiltcard .5s ease-in-out 1s forwards;
  132. position: absolute;
  133. }
  134. @-webkit-keyframes tiltcard {
  135. 0% {
  136. -webkit-transform: rotateY(0deg);
  137. transform: rotateY(0deg);
  138. }
  139. 100% {
  140. -webkit-transform: rotateY(-30deg);
  141. transform: rotateY(-30deg);
  142. }
  143. }
  144. @keyframes tiltcard {
  145. 0% {
  146. -webkit-transform: rotateY(0deg);
  147. transform: rotateY(0deg);
  148. }
  149. 100% {
  150. -webkit-transform: rotateY(-30deg);
  151. transform: rotateY(-30deg);
  152. }
  153. }
  154. @-webkit-keyframes explode {
  155. 0% {
  156. -webkit-transform: translate(0, 0) scale(1);
  157. transform: translate(0, 0) scale(1);
  158. }
  159. 100% {
  160. -webkit-transform: translate(var(--spreaddist), var(--vertdist)) scale(var(--scaledist));
  161. transform: translate(var(--spreaddist), var(--vertdist)) scale(var(--scaledist));
  162. }
  163. }
  164. @keyframes explode {
  165. 0% {
  166. -webkit-transform: translate(0, 0) scale(1);
  167. transform: translate(0, 0) scale(1);
  168. }
  169. 100% {
  170. -webkit-transform: translate(var(--spreaddist), var(--vertdist)) scale(var(--scaledist));
  171. transform: translate(var(--spreaddist), var(--vertdist)) scale(var(--scaledist));
  172. }
  173. }
  174. @-webkit-keyframes writeLine {
  175. 0% {
  176. width:0;
  177. }
  178. 100% {
  179. width: var(--linelength);
  180. }
  181. }
  182. @keyframes writeLine {
  183. 0% {
  184. width:0;
  185. }
  186. 100% {
  187. width: var(--linelength);
  188. }
  189. }
  190. @media screen and (max-width: 1000px) {
  191. .container {
  192. -webkit-transform: scale(.85);
  193. transform: scale(.85);
  194. }
  195. }
  196. @media screen and (max-width: 850px) {
  197. .container {
  198. -webkit-transform: scale(.75);
  199. transform: scale(.75);
  200. }
  201. }
  202. @media screen and (max-width: 775px) {
  203. .container {
  204. -ms-flex-wrap: wrap-reverse;
  205. flex-wrap: wrap-reverse;
  206. -webkit-box-align: inherit;
  207. -ms-flex-align: inherit;
  208. align-items: inherit;
  209. }
  210. }
  211. @media screen and (max-width: 370px) {
  212. .container {
  213. -webkit-transform: scale(.6);
  214. transform: scale(.6);
  215. }
  216. }
  217. </style>
  218. </head>
  219. <body>
  220. <div class="container">
  221. <div class="error">
  222. <h1>500</h1>
  223. <h2>error</h2>
  224. <p>Please contact the developers (internal server error)</p>
  225. </div>
  226. <div class="stack-container">
  227. <div class="card-container">
  228. <div class="perspec" style="--spreaddist: 125px; --scaledist: .75; --vertdist: -25px;">
  229. <div class="card">
  230. <div class="writing">
  231. <div class="topbar">
  232. <div class="red"></div>
  233. <div class="yellow"></div>
  234. <div class="green"></div>
  235. </div>
  236. <div class="code">
  237. <ul>
  238. </ul>
  239. </div>
  240. </div>
  241. </div>
  242. </div>
  243. </div>
  244. <div class="card-container">
  245. <div class="perspec" style="--spreaddist: 100px; --scaledist: .8; --vertdist: -20px;">
  246. <div class="card">
  247. <div class="writing">
  248. <div class="topbar">
  249. <div class="red"></div>
  250. <div class="yellow"></div>
  251. <div class="green"></div>
  252. </div>
  253. <div class="code">
  254. <ul>
  255. </ul>
  256. </div>
  257. </div>
  258. </div>
  259. </div>
  260. </div>
  261. <div class="card-container">
  262. <div class="perspec" style="--spreaddist:75px; --scaledist: .85; --vertdist: -15px;">
  263. <div class="card">
  264. <div class="writing">
  265. <div class="topbar">
  266. <div class="red"></div>
  267. <div class="yellow"></div>
  268. <div class="green"></div>
  269. </div>
  270. <div class="code">
  271. <ul>
  272. </ul>
  273. </div>
  274. </div>
  275. </div>
  276. </div>
  277. </div>
  278. <div class="card-container">
  279. <div class="perspec" style="--spreaddist: 50px; --scaledist: .9; --vertdist: -10px;">
  280. <div class="card">
  281. <div class="writing">
  282. <div class="topbar">
  283. <div class="red"></div>
  284. <div class="yellow"></div>
  285. <div class="green"></div>
  286. </div>
  287. <div class="code">
  288. <ul>
  289. </ul>
  290. </div>
  291. </div>
  292. </div>
  293. </div>
  294. </div>
  295. <div class="card-container">
  296. <div class="perspec" style="--spreaddist: 25px; --scaledist: .95; --vertdist: -5px;">
  297. <div class="card">
  298. <div class="writing">
  299. <div class="topbar">
  300. <div class="red"></div>
  301. <div class="yellow"></div>
  302. <div class="green"></div>
  303. </div>
  304. <div class="code">
  305. <ul>
  306. </ul>
  307. </div>
  308. </div>
  309. </div>
  310. </div>
  311. </div>
  312. <div class="card-container">
  313. <div class="perspec" style="--spreaddist: 0px; --scaledist: 1; --vertdist: 0px;">
  314. <div class="card">
  315. <div class="writing">
  316. <div class="topbar">
  317. <div class="red"></div>
  318. <div class="yellow"></div>
  319. <div class="green"></div>
  320. </div>
  321. <div class="code">
  322. <ul>
  323. </ul>
  324. </div>
  325. </div>
  326. </div>
  327. </div>
  328. </div>
  329. </div>
  330. </div>
  331. </body>
  332. <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
  333. <script type="text/javascript">
  334. const stackContainer = document.querySelector('.stack-container');
  335. const cardNodes = document.querySelectorAll('.card-container');
  336. const perspecNodes = document.querySelectorAll('.perspec');
  337. const perspec = document.querySelector('.perspec');
  338. const card = document.querySelector('.card');
  339. let counter = stackContainer.children.length;
  340. //function to generate random number
  341. function randomIntFromInterval(min, max) {
  342. return Math.floor(Math.random() * (max - min + 1) + min);
  343. }
  344. //after tilt animation, fire the explode animation
  345. card.addEventListener('animationend', function () {
  346. perspecNodes.forEach(function (elem, index) {
  347. elem.classList.add('explode');
  348. });
  349. });
  350. //after explode animation do a bunch of stuff
  351. perspec.addEventListener('animationend', function (e) {
  352. if (e.animationName === 'explode') {
  353. cardNodes.forEach(function (elem, index) {
  354. //add hover animation class
  355. elem.classList.add('pokeup');
  356. //add event listner to throw card on click
  357. elem.addEventListener('click', function () {
  358. let updown = [800, -800]
  359. let randomY = updown[Math.floor(Math.random() * updown.length)];
  360. let randomX = Math.floor(Math.random() * 1000) - 1000;
  361. elem.style.transform = `translate(${randomX}px, ${randomY}px) rotate(-540deg)`
  362. elem.style.transition = "transform 1s ease, opacity 2s";
  363. elem.style.opacity = "0";
  364. counter--;
  365. if (counter === 0) {
  366. stackContainer.style.width = "0";
  367. stackContainer.style.height = "0";
  368. }
  369. });
  370. //generate random number of lines of code between 4 and 10 and add to each card
  371. let numLines = randomIntFromInterval(5, 10);
  372. //loop through the lines and add them to the DOM
  373. for (let index = 0; index < numLines; index++) {
  374. let lineLength = randomIntFromInterval(25, 97);
  375. var node = document.createElement("li");
  376. node.classList.add('node-' + index);
  377. elem.querySelector('.code ul').appendChild(node).setAttribute('style', '--linelength: ' + lineLength + '%;');
  378. //draw lines of code 1 by 1
  379. if (index == 0) {
  380. elem.querySelector('.code ul .node-' + index).classList.add('writeLine');
  381. } else {
  382. elem.querySelector('.code ul .node-' + (index - 1)).addEventListener('animationend', function (e) {
  383. elem.querySelector('.code ul .node-' + index).classList.add('writeLine');
  384. });
  385. }
  386. }
  387. });
  388. }
  389. });
  390. </script>
  391. </html>