Issue
I have one image on top of another and with a click on a grid tile it disappears and shows a part of the second image.
I have 2 images, one as a .main_container
background and the other one I have in 3x3 grid.
The problem is that every tile in a grid is his own picture. I want one big picture to be cut and every piece be put in its own tile.
All JS I have is a click function that sets the opacity of a tile to 0
.
I can easily change the picture whenever I want without needing to edit the image into 9 pieces every time
enter image description here enter image description here
var clicks = 0;
$(".grid-item").click(function() {
clicks++;
console.log("clicked " + clicks);
$(this).css({
"opacity": "0"
});
})
body {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
}
.main_container {
width: 60%;
height: 60%;
/* background-color: #3498db; */
background-image: url("/images/cat.jpg");
background-size: cover;
background-position: center;
display: grid;
grid-template-columns: auto auto auto;
}
.grid-item {
background-image: url("/images/narava2_small.jpg");
/* background-color: rgba(255, 255, 255, 0.8); */
opacity: 1;
border: 1px solid rgba(0, 0, 0, 0.8);
padding: 20px;
font-size: 30px;
text-align: center;
background-size: cover;
}
<div class="main_container">
<div class="grid-item">1</div>
<div class="grid-item">2</div>
<div class="grid-item">3</div>
<div class="grid-item">4</div>
<div class="grid-item">5</div>
<div class="grid-item">6</div>
<div class="grid-item">7</div>
<div class="grid-item">8</div>
<div class="grid-item">9</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
Solution
background-attachment: fixed
would do the trick:
var clicks = 0;
$(".grid-item").click(function() {
clicks++;
//console.log("clicked " + clicks);
$(this).css({
"opacity": "0"
});
})
body {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
margin: 0;
}
.main_container {
width: 60%;
background-image: url(https://picsum.photos/id/874/800/600);
background-size: cover;
background-position: center;
display: grid;
grid-template-columns: auto auto auto;
border:solid 1px;
}
.grid-item {
background-image: url(https://picsum.photos/id/871/800/600);
background-size: 60% auto;
background-position: center;
background-attachment: fixed;
opacity: 1;
border: 1px solid rgba(0, 0, 0, 0.8);
padding: 20px;
font-size: 30px;
text-align: center;
}
<div class="main_container">
<div class="grid-item">1</div>
<div class="grid-item">2</div>
<div class="grid-item">3</div>
<div class="grid-item">4</div>
<div class="grid-item">5</div>
<div class="grid-item">6</div>
<div class="grid-item">7</div>
<div class="grid-item">8</div>
<div class="grid-item">9</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
Answered By - Kosh
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.