Ich habe ein Raster von 6 Blöcken. Wenn Sie auf jeden der Blöcke klicken, wird der Block erweitert und bedeckt den Container mit den Blöcken.Animiere die Breite/Höhe von den fernen Ecken
Die erste Box (oben links) sieht gut aus, aber die anderen versäumen die Illusion, dass der Block auf die Containerbreite und -höhe wächst, weil er von ihrer oberen linken Position aus beginnt.
Idealerweise sollten Box 2 und 5 von ihrer Mitte aus expandieren und Box 1, 3, 4 und 6 sollten sich von ihren fernen Ecken aus erweitern. Ist das möglich und wie?
Ich habe created a JSFiddle, die mein Problem zeigt. Aber der Code für reproduce ist hier:
JQuery
$(".service-block").on("click", "a", function (e) {
e.preventDefault();
var block = $(this);
var blockOffset = block.offset();
var blockBackgroundColor = block.css("backgroundColor");
var container = $(".service-grid");
var containerOffset = container.offset();
// Create the popup and append it to the container
var popout = $("<div class='service-block-popup'>Test</div>");
popout.css({
"backgroundColor": blockBackgroundColor,
"position": "absolute",
"top": blockOffset.top,
"left": blockOffset.left
}).appendTo(container)
// Now animate the properties
.animate({
"height": container.height() + "px",
"width": container.width() + "px",
"top": containerOffset.top,
"left": containerOffset.left
}, 1500, function() {
//alert("done");
})
.on("click", function() {
popout.remove();
});
});
Markup
<div class="service-grid">
<div class="row">
<div class="service-block">
<a href="#" class="box1">
<span class="title">Box 1</span>
</a>
</div>
<div class="service-block">
<a href="#" class="box2">
<span class="title">Box 2</span>
</a>
</div>
<div class="service-block">
<a href="#" class="box3">
<span class="title">Box 3</span>
</a>
</div>
</div>
<div class="row">
<div class="service-block">
<a href="#" class="box4">
<span class="title">Box 4</span>
</a>
</div>
<div class="service-block">
<a href="#" class="box5">
<span class="title">Box 5</span>
</a>
</div>
<div class="service-block">
<a href="#" class="box6">
<span class="title">Box 6</span>
</a>
</div>
</div>
</div>
CSS
*, *::after, *::before {
box-sizing: border-box;
}
.service-grid { width: 600px; }
.row {
overflow: hidden;
}
.service-grid .service-block a {
display: block;
height: 200px;
width: 200px;
text-align: center;
float: left;
}
.service-grid .service-block a > img {
display: block;
margin: 0 auto;
transition: all 100ms linear 0s;
}
.service-grid .service-block a > .title {
display: block;
font-family: Arial,Helvetica,sans-serif;
font-size: 2.2rem;
font-weight: bold;
line-height: 3.2rem;
margin-top: 20px;
text-transform: uppercase;
}
.box1 { background: red; }
.box2 { background: purple; }
.box3 { background: yellow; }
.box4 { background: orange; }
.box5 { background: green; }
.box6 { background: magenta; }
Sie haben nur 6 Boxen? oder die Anzahl der Boxen kann erhöht werden? –
Im Moment nur 6 - es könnte sich erhöhen, ich möchte es in Betracht ziehen kann es erhöhen. – janhartmann