Ich versuche mit einem Beispiel eines CSS-Grids zu arbeiten. Aber wenn ich es mit Aurelia Repeater verwende, wird es im Browser seltsam. Ich habe versucht, alles in nur einfache Stile zu isolieren, aber immer noch das gleiche Problem. Zuerst ist es der Repeater und dann habe ich das genaue Ergebnis des Repeaters unten hart codiert. Beachten Sie, dass es egal ist, in welcher Reihenfolge Sie sie platzieren.Aurelia Repeater rendert anders als der gleiche hartcodierte Inhalt
Versucht ein Beispiel hier zu erstellen: https://gist.run/?id=0dbb9921dd8997e0ddbbeeba8bca9dd6
Das einzige, was Sie in Ihrem app.js stellen müssen, ist:
export class App {
constructor() {
this.styleString = "width:25%;display:inline-block;min-height:1px;vertical-align:top;padding-left:20px;margin-right:-.25em;box-sizing:border-box;";
}
}
Und Sie app.html:
<template>
<div>
<div repeat.for="i of 4" style="background:${i%2==0?'red':'green'};${styleString}">
${i}
</div>
</div>
<div>
<div style="background:red;${styleString}">
0
</div>
<div style="background:green;${styleString}">
1
</div>
<div style="background:red;${styleString}">
2
</div>
<div style="background:green;${styleString}">
3
</div>
</div>
</template>
Kann jemand klären, was ich falsch mache?
EDIT
Es tut uns leid. Das seltsame Verhalten ist, dass in meinem Browser die Breite der vier Spalten nicht so breit ist wie die vier Spalten, die ich fest codiert habe. Es ist nicht in voller Länge.
Ich bin in der Lage, den Fehler zu reproduzieren, wenn ich den OUTER HTML des äußeren Div in Entwickler-Tools kopieren und es in meine app.html einfügen. Aber wenn ich das korrekt in Bezug auf Einrückung und korrekte Zeilenumbrüche formatiere, ergibt es das, was meiner Ansicht nach korrekt ist.
ERKLÄRUNG
Als Fabio in seinem Kommentar weist darauf hin, es der weiße Raum ist, dass der Unterschied ist. Das CSS-Raster, das ich auswerte, berücksichtigt dies und fügt diesen Stil margin-right:-.25em;
hinzu, da erwartet wird, dass Sie weiße Leerzeichen zwischen Ihren divs haben. Sie können darüber in dem von Andrew bereitgestellten Link lesen.
Die einfachste Lösung könnte sein, einfach eine Klasse hinzuzufügen, wenn ich diese Gitterspalten mit Aurelia-Repeater erzeuge, die die margin-right
überschreiben und auf Null setzen.
Können Sie klären, was das "seltsame" Verhalten ist? – Andrew
Die vier Spalten sind nicht so breit wie wenn ich denselben HTML ohne den Repeater deklariere. – John
Dies ist nicht Teil Ihres Problems, aber Sie sollten von der Verwendung von 'style' zur Verwendung von' css' wechseln. Internet Explorer und Edge lassen kein ungültiges CSS im style-Attribut zu, und sie entfernen es, bevor JavaScript-Code es sehen kann, sodass Ihre App in IE oder Edge nicht ordnungsgemäß funktioniert. Wechseln Sie zur Verwendung des benutzerdefinierten Attributs "css" (das genau wie "style" funktioniert, außer dass es in IE/Edge funktioniert), und Sie werden an dieser Front gut sein. –