2016-10-28 4 views
-1

I found some code to do modal images at w3schools.com。何らかの理由で、このコードでは、画像の「ズーム」は一度だけ発生します(最初に画像をクリックすると発生します)。戻るボタンをクリックしてもう一度やり直してください。ズームはしません。イメージをクリックするたびにズームを実行するにはどうすればこのコードを変更できますか?モーダル画像は1回だけズームします

コード:あなたはこのページを表示するために使用しているブラウザ

<!DOCTYPE html> 
<html> 
<head> 
<style> 
#myImg { 
    border-radius: 5px; 
    cursor: pointer; 
    transition: 0.3s; 
} 

#myImg:hover {opacity: 0.7;} 

/* The Modal (background) */ 
.modal { 
    display: none; /* Hidden by default */ 
    position: fixed; /* Stay in place */ 
    z-index: 1; /* Sit on top */ 
    padding-top: 100px; /* Location of the box */ 
    left: 0; 
    top: 0; 
    width: 100%; /* Full width */ 
    height: 100%; /* Full height */ 
    overflow: auto; /* Enable scroll if needed */ 
    background-color: rgb(0,0,0); /* Fallback color */ 
    background-color: rgba(0,0,0,0.9); /* Black w/ opacity */ 
} 

/* Modal Content (image) */ 
.modal-content { 
    margin: auto; 
    display: block; 
    width: 80%; 
    max-width: 700px; 
} 

/* Caption of Modal Image */ 
#caption { 
    margin: auto; 
    display: block; 
    width: 80%; 
    max-width: 700px; 
    text-align: center; 
    color: #ccc; 
    padding: 10px 0; 
    height: 150px; 
} 

/* Add Animation */ 
.modal-content, #caption {  
    -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)} 
} 

/* The Close Button */ 
.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; 
} 

/* 100% Image Width on Smaller Screens */ 
@media only screen and (max-width: 700px){ 
    .modal-content { 
     width: 100%; 
    } 
} 
</style> 
</head> 
<body> 

<h2>Image Modal</h2> 
<p>In this example, we use CSS to create a modal (dialog box) that is hidden by default.</p> 
<p>We use JavaScript to trigger the modal and to display the current image inside the modal when it is clicked on. Also note that we use the value from the image's "alt" attribute as an image caption text inside the modal.</p> 

<img id="myImg" src="img_fjords.jpg" alt="Trolltunga, Norway" width="300" height="200"> 

<!-- The Modal --> 
<div id="myModal" class="modal"> 
    <span class="close">×</span> 
    <img class="modal-content" id="img01"> 
    <div id="caption"></div> 
</div> 

<script> 
// Get the modal 
var modal = document.getElementById('myModal'); 

// Get the image and insert it inside the modal - use its "alt" text as a caption 
var img = document.getElementById('myImg'); 
var modalImg = document.getElementById("img01"); 
var captionText = document.getElementById("caption"); 
img.onclick = function(){ 
    modal.style.display = "block"; 
    modalImg.src = this.src; 
    captionText.innerHTML = this.alt; 
} 

// Get the <span> element that closes the modal 
var span = document.getElementsByClassName("close")[0]; 

// When the user clicks on <span> (x), close the modal 
span.onclick = function() { 
    modal.style.display = "none"; 
} 
</script> 

</body> 
</html> 

答えて

0

Chromeバージョン54.0.2840.71(64ビット)では完全に動作しており、同じ結果で繰り返しクリックすることができます。

1つの問題は、javascriptの仕組みを示すためにw3schoolsの例が提供されていることです。プロジェクトに参加するのは本当に適切ではありません。

可能であれば、オープンソースのライトボックスのJavaScriptパッケージを使用することをお勧めします。これらは、複数のブラウザおよびディスプレイサイズと互換性がある可能性が非常に高いです。

+0

私はFirefox 49.0.2を使用していました。私はちょうどマイクロソフトエッジでテストし、それは完全に動作します - Firefoxの問題でなければなりません... – Todd

関連する問題