Bitte sehen Sie sich das folgende Beispiel an. Ich lerne CSS-Gitter. Der ganze Zweck besteht darin, die Dinge einfach zu halten und keine unnötigen Layoutdetails auf den Kindelementen zu spezifizieren, daher sollten die Lösungen diesem Muster entsprechen.css grid layout einfach halten
Angesichts der folgenden:
function toggle(t) {
document.querySelectorAll('div').forEach(el =>
el.classList[0] === t.classList[0] ?
el.classList.toggle('selected') :
el.classList.remove('selected'))
}
:root,
html,
body,
main {
margin: 0;
padding: 0;
font-family: sans-serif;
height: 100%;
}
main {
border: solid 3pt white;
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr;
}
div {
grid-area: span 2/span 2;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
font-size: 5em;
font-weight: bold;
color: white;
background: grey;
}
.one {
background: red
}
.two {
background: green
}
.three {
background: blue
}
.selected {
width: 150%;
height: 150%;
z-index: 2;
}
<main>
<div class=one onclick="toggle(event.target)">one</div>
<div class=two onclick="toggle(event.target)">two</div>
<div class=three onclick="toggle(event.target)">three</div>
<div class=four onclick="toggle(event.target)">four</div>
</main>
https://jsfiddle.net/robbie_at_harvard/a3ouq711/1/
Bitte stellen Sie die Bereiche, zwei zu verursachen, drei und vier zur Mitte hin zu erweitern, statt immer von der linken oberen Ecke? Auch hier bevorzugt mit generischen Regeln und nicht mit spezifischen Spezifikationen der div.class. Die zweite Frage, wenn ich stattdessen ein 4x4-Layout von 2x2 Kindelementen wollte, wo das Klicken auf ein Element es zu 3x3 erweitert und die anderen zu 1x2, 2x1 und 1x1 in der gegenüberliegenden Ecke kontrahiert, was notwendig ist, um dies zu erzeugen Lösung?
Verwenden CSS Maßstab statt Breite und Höhe? https://stackoverflow.com/questions/28726430/css-how-to-scale-an-image-from-the-center-instead-of-top-left – evolutionxbox
das funktioniert fast .. und Sie könnten es auch ausgleichen um eine vollständige Lösung anzubieten, aber dann müsste der Offset sowohl von der ausgewählten als auch von der Positionsklasse abhängen. wenn ich eine Positionsklasse verwenden muss, die in Ordnung ist, aber ich hatte gehofft, dieses einfachere Beispiel würde das zumindest nicht brauchen. –