Bài viết sẽ hướng dẫn các bạn cách tạo ra 1 trang 404 có hiệu ứng giống với tivi bị muỗi của những năm 80 bằng công nghệ HTML5 cực đẹp.
Xem qua demo nhé. Hình ảnh tuy tĩnh nhưng khi các bạn làm xong nó sẽ có hiệu ứng như tivi muỗi hẳn hỏi. ^^
OK! bắt đầu nào. Đầu tiên là HTML
1 2 3 4 5 6 7 8 9 | <h1>404</h1> <div class="frame"> <div></div> <div></div> <div></div> </div> <div class="caps"><img src="https://sharecodeweb.net/wp-content/themes/alltuts/images/logo.png" alt=""></div> <canvas id="canvas"></canvas> |
Tiếp theo là css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | * { margin: 0; padding: 0; } html { height: 100%; overflow: hidden; } canvas { z-index: 1; position: absolute; left: 0; top: 0; width: 100%; height: 100%; } .caps { z-index: 2; position: absolute; left: 0; top: 0; width: 100%; height: 100%; opacity: 0; animation: asd 12s linear infinite; } .caps img { display: block; width: 100%; height: 100%; } @keyframes as { 0% { opacity: 0; } 10% { opacity: .3; } 20% { opacity: .1; } 30% { opacity: .5; } 40% { opacity: 0; } 50% { opacity: .8; } 55% { opacity: 0; } 55% { opacity: 0; } } .frame { z-index: 3; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: -moz-radial-gradient(center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 19%, rgba(0, 0, 0, 0.9) 100%); /* FF3.6+ */ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, rgba(0, 0, 0, 0)), color-stop(19%, rgba(0, 0, 0, 0)), color-stop(100%, rgba(0, 0, 0, 0.9))); /* Chrome,Safari4+ */ background: -webkit-radial-gradient(center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 19%, rgba(0, 0, 0, 0.9) 100%); /* Chrome10+,Safari5.1+ */ background: -o-radial-gradient(center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 19%, rgba(0, 0, 0, 0.9) 100%); /* Opera 12+ */ background: -ms-radial-gradient(center, ellipse cover, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 19%, rgba(0, 0, 0, 0.9) 100%); /* IE10+ */ background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 19%, rgba(0, 0, 0, 0.9) 100%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#00000000', endColorstr = '#e6000000', GradientType = 1); /* IE6-9 fallback on horizontal gradient */ } .frame div { position: absolute; left: 0; top: -20%; width: 100%; height: 20%; background-color: rgba(0, 0, 0, .12); box-shadow: 0 0 10px rgba(0, 0, 0, .3); animation: asd 12s linear infinite; } .frame div:nth-child(1) { animation-delay: 0; } .frame div:nth-child(2) { animation-delay: 4s; } .frame div:nth-child(3) { animation-delay: 8s; } @keyframes asd { 0% { top: -20%; } 100% { top: 100%; } } h1 { z-index: 3; position: absolute; font: bold 200px/200px Arial, sans-serif; left: 50%; top: 50%; margin-top: -100px; width: 100%; margin-left: -50%; height: 200px; text-align: center; color: transparent; text-shadow: 0 0 30px rgba(0, 0, 0, .5); animation: asdd 2s linear infinite; } @keyframes asdd { 0% { text-shadow: 0 0 30px rgba(0, 0, 0, .5); } 33% { text-shadow: 0 0 10px rgba(0, 0, 0, .4); } 66% { text-shadow: 0 0 20px rgba(0, 0, 0, .2); } 100% { text-shadow: 0 0 40px rgba(0, 0, 0, .8); } } |
Đoạn css trên các bạn cũng chỉ cần để ý tới những đoạn có sử dụng Keyframes, đây là thuộc tính giúp chúng ta có những bức hình động thay vì sử dụng flash hoặc photoshop tạo ảnh động.
Cuối cùng là các mã javascript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | var Application = ( function () { var canvas; var ctx; var imgData; var pix; var WIDTH; var HEIGHT; var flickerInterval; var init = function () { canvas = document.getElementById('canvas'); ctx = canvas.getContext('2d'); canvas.width = WIDTH = 700; canvas.height = HEIGHT = 500; ctx.fillStyle = 'white'; ctx.fillRect(0, 0, WIDTH, HEIGHT); ctx.fill(); imgData = ctx.getImageData(0, 0, WIDTH, HEIGHT); pix = imgData.data; flickerInterval = setInterval(flickering, 30); }; var flickering = function () { for (var i = 0; i < pix.length; i += 4) { var color = (Math.random() * 255) + 50; pix[i] = color; pix[i + 1] = color; pix[i + 2] = color; } ctx.putImageData(imgData, 0, 0); }; return { init: init }; }()); |
Đoạn Js trên sẽ tạo ra hiện tượng nhiễu sóng cho các bạn.
Vậy là xong rồi đó, chúc bạn tạo được những trang 404 như ý.
Bài viết được chia sẻ bởi
Sharecodeweb.com
You must log in to post a comment.