私はCSSグリッドの例で作業しようとしています。しかし、Aureliaリピータで使用すると、ブラウザで奇妙に見えます。 私はすべてを単純なスタイルだけに分離しようとしましたが、同じ問題が残っていました。最初にそれはリピーターであり、次に私は以下のリピーターの正確な結果をハードにコーディングしました。どの順序で配置するかは関係ありません。Aureliaリピーターは同じハードコーディングされたコンテンツとは異なるレンダリング
はこっちの例を作成しようとしました: https://gist.run/?id=0dbb9921dd8997e0ddbbeeba8bca9dd6
あなたのapp.jsに置く必要がある唯一のものがある:
app.htmlexport 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;";
}
}
そして、あなたで:
<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>
誰でも私が間違っていることを明確にすることはできますか?
EDIT
申し訳ありません。奇妙な挙動は、私のブラウザでは、4つの列の幅が、ハードコードされた4つの列の幅と同じではないということです。それは完全な長さではありません。
開発者ツールの外側のdivのOUTER HTMLをコピーしてapp.htmlに貼り付けると、エラーを再現できます。しかし、字下げや改行で正しく書式設定すると、自分の意見が正しく表示されます。
EXPLANATION
ファビオが彼のコメントで指摘しているように、それは違いであるホワイトスペースです。私が評価しているCSSグリッドはこれを考慮に入れて、このスタイルを追加します。margin-right:-.25em;
あなたのdiv間に空白があることが予想されるためです。あなたはAndrewが提供するリンクでそれについて実際に読むことができます。
最も簡単な解決策は、margin-right
をオーバーライドしてゼロに設定したAureliaリピータでこれらのグリッド列を生成する場合にクラスを追加することです。
「奇妙な」動作は何かを明確にすることはできますか? – Andrew
4つの列は、リピータなしで同じhtmlを宣言したときと同じくらい広いわけではありません。 – John
これはあなたの問題の一部ではありませんが、 'style'の使用から' css'の使用に切り替えるべきです。 Internet ExplorerとEdgeでは、スタイル属性に無効なCSSが許可されていないため、JavaScriptコードで認識できるようになる前に削除されます。そのため、IEまたはEdgeでは正しく機能しません。 'css'カスタム属性(これはIE/Edgeで動作する以外は' style'と全く同じように動作します)を使用するように切り替えれば、この面でうまくいくでしょう。 –