Ich habe ein Gitter mit einigen Elementen. Diese Elemente haben die Klasse item
. Wenn ich in einem von ihnen klicken Sie, Toogle ich die expand
dieses Element zu ändern.JQuery CSS-Verfahren ändert nicht die Höhe Element
<body>
<div class="grid">
<a href="#">
<div class="item" style="background-image: url('https://i.giphy.com/l0NwI1oBNxYfoRRny.gif'); height: 270px; background-size: cover; background-repeat: no-repeat; position: absolute;">
</div>
</a>
<a href="#">
<div class="item" style="background-image: url('https://i.giphy.com/pYI1hSqUdcBiw.gif'); height: 202px; background-size: cover; background-repeat: no-repeat; position: absolute;">
</div>
</a>
<a href="#">
<div class="item" style="background-image: url('https://i.giphy.com/l3vR58nYgtIUKua1G.gif'); height: 149px; background-size: cover; background-repeat: no-repeat; position: absolute;">
</div>
</a>
<a href="#">
<div class="item" style="background-image: url('https://i.giphy.com/3o7abxtmPxanzaESGY.gif'); height: 202px; background-size: cover; background-repeat: no-repeat; position: absolute;">
</div>
</a>
...
</div>
</body>
CSS
.item {
color: white;
display: table;
font-size: 1.4em;
text-align: center;
margin: 5px;
width: 270px;
}
.expand {
transition: width 0.5s, height 0.5s, left 0.5s, top 0.5s;
-webkit-transition: width 0.5s, height 0.5s, left 0.5s, top 0.5s;
height: 100% ;
width: 100%;
left: 0 !important;
top: 0 ;
z-index: 99;
text-indent: -9999px;
}
JS
$('.item').click(function() {
$(this).toggleClass('expand');
});
Also, die width
ändert die Größe auf die 100% der Mutter Größe (grid
), aber die height
nicht ändert .
Dies ist die Grid-Ansicht vor, klicken Sie auf ein beliebiges Element Element
Nach dem Einschalten des dritten Elements klicken
So, hier ist das Problem: Im gleichen JS Methode ich habe versucht, hinzuzufügen:
$('.item').click(function() {
var height = $(this).height();
var width = $(this).width();
var act = $(this).hasClass("expand");
if(act){
$('.expand').css('height',Math.floor($('.grid').width() * height/width) + 'px !important');
$('.expand').css('width','50% !important');
}
}
Aber die height
und width
nicht ändern. Also, aus irgendeinem Grunde diese $('.expand').css()
Methode fügt die neuen Werte.
Das Problem, dass jeder ist Das Element "item" muss die Höhe im Inline-Stil definiert haben. Ich habe versucht, das '$ ('. Expand'). Css ('Höhe', Math.floor ($ ('. Raster'). Breite() * Höhe/Breite) + 'px! Wichtig');' Aber funktioniert nicht. Wenn ich das '! Wichtig 'auf der' Breite 'versuche, funktioniert es nicht' $ ('. Expand'). Css ('width', '50%! Wichtig');'. –
@AlbertoCrespo '! Wichtig' funktioniert gut - aktualisiert meine Antwort. –