javascript - Forstør billede ved hover og vis tekst over det CSS3
Jeg prøver at lave en responsiv billedside til mit website. Indtil videre har jeg lavet det sådan, at billederne på siden alle er responsive og forbliver centrerede uanset, hvilken størrelse browseren har.
Mit problem er, at når jeg holder musen over et billede, bliver det større, men skubber alle de andre billeder ud af deres plads. Jeg vil gerne have, at det bliver større, men at alle de andre billeder beholder deres position. Jeg har prøvet position absolute, men det virkede ikke.
Jeg vil også virkelig gerne tilføje hover-tekst til billederne. Jeg vil gerne have, at når et billede bliver hovered, kan man se en tekst fra midten. Jeg vil gerne gøre dette kun med html/css og ikke behøve et separat billede til teksten og muligt uden javascript.
Her er min nuværende HTML;
<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>
Her er min 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;
}
}
Her er også en JS fiddle, så du kan se en live version af min billedside http://jsfiddle.net/Z66Z9/ Du kan få brug for at udvide 'resultat'-boksen, så du kan se, hvordan min billedside virkelig ser ud.
Mange tak for enhver hjælp.
Svar #1
Billedfokus : brug CSS3 transform: scale egenskaben.
Hover-tekst : Brug en div.wrap og en :hover-regel i CSS for at ændre tekstens opacity fra 0 til 1.
VIOLIN
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;
}
}
