Create an Image Modal using CSS and Javascript
Submitted by nurhodelta_17 on Monday, January 22, 2018 - 17:05.
Step 1 : Creating our Body
First lets create our displayed image and our modal.Step 2 : Add CSS
- #sampleImg {
- cursor: pointer;
- transition: 0.3s;
- }
- #sampleImg:hover {opacity: 0.7;}
- .modal {
- display: none;
- position: fixed;
- z-index: 1;
- padding-top: 100px;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- overflow: auto;
- background-color: rgb(0,0,0);
- background-color: rgba(0,0,0,0.9);
- }
- .modal-content {
- margin: auto;
- display: block;
- width: 80%;
- max-width: 700px;
- }
- #desc {
- margin: auto;
- display: block;
- width: 80%;
- max-width: 700px;
- text-align: center;
- color: #ccc;
- padding: 10px 0;
- height: 150px;
- }
- .modal-content, #desc {
- -webkit-animation-name: zoom;
- -webkit-animation-duration: 0.6s;
- animation-name: zoom;
- animation-duration: 0.6s;
- }
- @-webkit-keyframes zoom {
- from {-webkit-transform:scale(0)}
- to {-webkit-transform:scale(1)}
- }
- @keyframes zoom {
- from {transform:scale(0)}
- to {transform:scale(1)}
- }
- .close {
- position: absolute;
- top: 15px;
- right: 35px;
- color: #f1f1f1;
- font-size: 40px;
- font-weight: bold;
- transition: 0.3s;
- }
- .close:hover,
- .close:focus {
- color: #bbb;
- text-decoration: none;
- cursor: pointer;
- }
- @media only screen and (max-width: 700px){
- .modal-content {
- width: 100%;
- }
- }
Adding the Javascript
Lastly, we add our javascript- var modal = document.getElementById('sampleModal');
- var img = document.getElementById('sampleImg');
- var modalImg = document.getElementById("modalImage");
- var captionText = document.getElementById("desc");
- var close = document.getElementById("closeModal");
- img.onclick = function(){
- modal.style.display = "block";
- modalImg.src = this.src;
- captionText.innerHTML = this.alt;
- }
- close.onclick = function() {
- modal.style.display = "none";
- }
Full HTML
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <style type="text/css">
- #sampleImg {
- cursor: pointer;
- transition: 0.3s;
- }
- #sampleImg:hover {opacity: 0.7;}
- .modal {
- display: none;
- position: fixed;
- z-index: 1;
- padding-top: 100px;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- overflow: auto;
- background-color: rgb(0,0,0);
- background-color: rgba(0,0,0,0.9);
- }
- .modal-content {
- margin: auto;
- display: block;
- width: 80%;
- max-width: 700px;
- }
- #desc {
- margin: auto;
- display: block;
- width: 80%;
- max-width: 700px;
- text-align: center;
- color: #ccc;
- padding: 10px 0;
- height: 150px;
- }
- .modal-content, #desc {
- -webkit-animation-name: zoom;
- -webkit-animation-duration: 0.6s;
- animation-name: zoom;
- animation-duration: 0.6s;
- }
- @-webkit-keyframes zoom {
- from {-webkit-transform:scale(0)}
- to {-webkit-transform:scale(1)}
- }
- @keyframes zoom {
- from {transform:scale(0)}
- to {transform:scale(1)}
- }
- .close {
- position: absolute;
- top: 15px;
- right: 35px;
- color: #f1f1f1;
- font-size: 40px;
- font-weight: bold;
- transition: 0.3s;
- }
- .close:hover,
- .close:focus {
- color: #bbb;
- text-decoration: none;
- cursor: pointer;
- }
- @media only screen and (max-width: 700px){
- .modal-content {
- width: 100%;
- }
- }
- </style>
- </head>
- <body>
- <img id="sampleImg" src="gardens.jpg" alt="An Example of a Beautiful Garden" width="300" height="200">
- <!-- Sample Modal -->
- <div id="sampleModal" class="modal">
- <img class="modal-content" id="modalImage">
- </div>
- <script>
- var modal = document.getElementById('sampleModal');
- var img = document.getElementById('sampleImg');
- var modalImg = document.getElementById("modalImage");
- var captionText = document.getElementById("desc");
- var close = document.getElementById("closeModal");
- img.onclick = function(){
- modal.style.display = "block";
- modalImg.src = this.src;
- captionText.innerHTML = this.alt;
- }
- close.onclick = function() {
- modal.style.display = "none";
- }
- </script>
- </body>
- </html>
Add new comment
- 103 views