Ich habe eine Weile eine Mauerwerk Galerie mit Raster-Layout gesucht, ich habe es nicht gefunden, also habe ich beschlossen, es für mich selbst zu tun. Ich benutze ein customElement mit Rasterlayout, aber ich werde blockiert, wenn ich die Rasterzeilen dynamisch zuweise.
Ich möchte Ihr Feedback und helfen, es zu verbessern.Mauerwerk Galerie mit Raster Layout
Einige Fehler, die ich entdeckt habe, sind:
- Need 2 mal zu Werke
- Leerzeichen laufen, wenn Bild/Behälterhöhe nicht mehrere von 100
<masonry-gallery></masonry-gallery>
JS
class MasonryGallery extends HTMLElement {
items = [
{ image:'https://unsplash.it/200/100/' },
{ image:'https://unsplash.it/200/200/' },
{ image:'https://unsplash.it/200/300/' },
{ image:'https://unsplash.it/200/400/' },
{ image:'https://unsplash.it/200/300/' },
{ image:'https://unsplash.it/200/200/' },
{ image:'https://unsplash.it/200/100/' },
{ image:'https://unsplash.it/200/300/' },
{ image:'https://unsplash.it/200/700/' },
{ image:'https://unsplash.it/200/300/' },
{ image:'https://unsplash.it/200/200/' },
{ image:'https://unsplash.it/200/600/' },
{ image:'https://unsplash.it/200/100/' }
]
constructor() {
super()
this.attachShadow({ mode: 'open'})
this.create()
this.append()
}
create() {
this.style.display = 'grid'
this.style.gridTemplateColumns = 'repeat(auto-fill, 200px)'
this.style.gridTemplateRows = 'repeat(auto-fill, 1fr)'
this.style.gridGap = '1rem'
this.style.gridAutoFlow = 'row dense'
}
append() {
this.items.map(item => {
const div = document.createElement('DIV');
const image = document.createElement('IMG')
image.src = item.image
div.appendChild(image)
this.shadowRoot.appendChild(div)
div.style.gridRow = 'auto/span ' + [...String(image.height)][0]
})
}
}
customElements.define('masonry-gallery', MasonryGallery)
FIDDLE https://jsfiddle.net/znhybgb6/6/
https://stackoverflow.com/q/44377343/3597276 –
Haben Sie die Dokumente überprüft? https://isotope.metafizzy.co/layout-modes/maurism.html.html Viele Beispiele dort. Ein Galerie-Layout ist das, was es tut. –
Bitte überprüfen Sie die folgende Gabel Ihrer Geige: https://jsfiddle.net/znhybgb6/12/. Hauptänderungen: Berechnung der Bildhöhen nach dem Laden, 100px-hohe automatische Rasterzeilen, Berücksichtigung der Lückenhöhe in Berechnungen. –