javascript - Ingrandire l'immagine al passaggio del mouse e visualizzare il testo sopra di essa CSS3
Sto cercando di creare una pagina con immagini responsive per il mio sito web. Finora ho fatto in modo che le immagini sulla pagina siano tutte responsive e rimangano centrate qualunque sia la dimensione del browser.
Il mio problema è che quando passo il mouse su un'immagine questa si ingrandisce ma spinge tutte le altre immagini fuori dal loro posto. Vorrei che si ingrandisse ma che tutte le altre immagini mantenessero la loro posizione, ho provato con position absolute ma non ha funzionato.
Inoltre mi piacerebbe davvero aggiungere del testo al passaggio del mouse sulle immagini, vorrei che quando si passa il mouse su un'immagine si possa vedere un testo dal centro, vorrei farlo solo con HTML/CSS e senza aver bisogno di un'immagine separata per il testo e possibilmente senza JavaScript.
Ecco il mio HTML attuale;
<div class="imgwrap">
<img src="http://placehold.it/120x120" alt="DTE" />
<img src="http://placehold.it/120x120" alt="DTE" />
<img src="http://placehold.it/120x120" alt="DTE" />
<img src="http://placehold.it/120x120" alt="DTE" />
<img src="http://placehold.it/120x120" alt="DTE" />
<img src="http://placehold.it/120x120" alt="DTE" />
<img src="http://placehold.it/120x120" alt="DTE" />
<img src="http://placehold.it/120x120" alt="DTE" />
<img src="http://placehold.it/120x120" alt="DTE" />
</div>
Ecco il mio CSS;
.imgwrap {
width:90%;
margin:0 auto;
padding:5px;
overflow:hidden;
text-align:center;
}
.imgwrap img {
display:inline-block;
width:300px;
height:200px;
margin:5px;
cursor:pointer;
-webkit-transition:opacity 0.26s ease-out;
-moz-transition:opacity 0.26s ease-out;
-ms-transition:opacity 0.26s ease-out;
-o-transition:opacity 0.26s ease-out;
transition:opacity 0.26s ease-out;
border-style:solid;
border-color:black;
border-width:1px;
padding:5px;
transition:500ms;
}
.imgwrap:hover img {
opacity:0.5;
}
.imgwrap:hover img:hover {
opacity:1;
width:400px;
height:266px;
transition:500ms;
}
@media screen and (max-width:500px) {
.imgwrap img {
width:200px;
height:133px;
}
}
Ecco anche un JS fiddle per farti vedere una versione live della mia pagina immagini http://jsfiddle.net/Z66Z9/ Potresti aver bisogno di estendere la casella 'result' in modo da poter vedere come appare veramente la mia pagina immagini.
Grazie mille per qualsiasi aiuto.
Risposta n. 1
Messa a fuoco dell'immagine : usare la proprietà CSS3 transform: scale.
Testo al passaggio del mouse : Usa un div.wrap e una regola :hover in CSS per cambiare l'opacity del testo da 0 a 1.
VIOLINO
HTML :
<div id="container">
<div class="wrap">
<img src="http://lorempixel.com/output/fashion-q-g-640-480-2.jpg" alt="DTE" />
<p>Text here</p>
</div>
<div class="wrap">
<img src="http://lorempixel.com/output/city-q-c-640-480-2.jpg" alt="DTE" />
<p>Text here</p>
</div>
<div class="wrap">
<img src="http://lorempixel.com/output/sports-q-g-640-480-4.jpg" alt="DTE" />
<p>Text here</p>
</div>
<div class="wrap">
<img src="http://lorempixel.com/output/nature-q-c-640-480-8.jpg" alt="DTE" />
<p>Text here</p>
</div>
<div class="wrap">
<img src="http://lorempixel.com/output/fashion-q-c-640-480-7.jpg" alt="DTE" />
<p>Text here</p>
</div>
</div>
CSS :
#container {
text-align:center;
margin: 50px;
}
.wrap{
display:inline-block;
position:relative;
cursor:pointer;
}
.wrap p{
position:absolute;
opacity:0;
top:50%;
left:-8%;
padding:5px;
text-align:center;
width:113%;
font-size:20px;
line-height:20px;
margin-top:-10px;
z-index:3;
background:rgba(255,255,255, 0.7);
transition:1s;
}
.wrap img {
display:block;
width:300px;
height:200px;
margin:5px;
-webkit-transition:opacity 0.26s ease-out;
-moz-transition:opacity 0.26s ease-out;
-ms-transition:opacity 0.26s ease-out;
-o-transition:opacity 0.26s ease-out;
transition:opacity 0.26s ease-out;
transition:500ms;
}
#container:hover img {
opacity:0.5;
}
#container:hover .wrap:hover img {
opacity:1;
-webkit-transform: scale(1.2);
-moz-transform: scale(1.2);
-ms-transform: scale(1.2);
-o-transform: scale(1.2);
transform: scale(1.2);
z-index:2;
position:relative;
transition:500ms;
}
.wrap:hover p {
opacity :1;
}
@media screen and (max-width:500px) {
#container img {
width:200px;
height:133px;
}
}
