1

私はWindows8用のアプリを作成するためにチームで作業しています。CSS3グリッドを使用してページをレイアウトしていますが、これはほとんどの場合非常に簡単です。ただし、アプリの一部の領域に外部ソースからのデータを入力しているため、インポートされるテキストの長さを制御できません。私たちのアプリは左から右にスクロールしているので、幅を自動サイズ設定してテキストを列に流すために塗りつぶされているグリッド列が必要です-したがって、両方とも「自動」に設定されているCSSグリッドとCSS列を使用する必要がありますうまくいきますよね?

まあ、そうではありません。CSSのさまざまな組み合わせを試しましたが、divに明確な幅を指定するか(インポートされるコンテンツが非常に短い場合は機能しません)、テキストが流入できる列の数を定義する必要があります(これは、非常に短いコンテンツと非常に長いコンテンツの両方では機能しません)。これは主に、柔軟なページを水平方向に作成しようとしているためだと思います。これは、Win8アプリでさえ混乱しているようです。このためのJS/jQueryの回避策を見つける必要があると思っていますが、JS / jqueryは比較的新しいので、正確に何を書くかわかりません。

もちろん、他のWin8フロントエンド開発者がこれを経験している場合は、洞察をいただければ幸いです。

私の.detailSectionは他の列の真ん中にあるので、コンテンツがいっぱいになる可能性がある場合は、必要に応じて絶対に拡大および縮小する必要があります。

これは、現在の私のCSSのスニペットです。もちろん、他に情報があれば教えてください。

.advisorDetail {
    height: 100%;
    -ms-grid-columns: 120px 560px 80px auto 80px auto auto;
}
.advisorDetail section[role=main].detailSection {
    -ms-grid-column: 4;
    display: -ms-grid;
    -ms-grid-rows: 24px 20px 1fr;
    -ms-grid-columns: auto;
}
    .advisorDetail section[role=main].detailSection .detailFeed {
        -ms-grid-row: 3;
        column-count: 3;
        column-width: 400px;
        column-gap: 40px;
    }
4

1 に答える 1

1

CSSスニペットは、定義されている列数を示しています。column-count説明から、またはwidth複数列の要素を指定する必要はありません。column-countどうすれば削除しても、必要なビジュアルを取得できるかを尋ねていると思います。あれは正しいですか?と仮定すると...

複数列の要素がそれ自体のサイズを決定しようとしているとき、その高さはまだ定義されていません。その結果、高さに制限がないかのようにサイズが変更され、1列のテキストが表示されます。height: 100%複数列の要素で指定し、サイズ設定時にコンテナの高さが定義されていること確認すると、探しているビジュアルが得られるはずです。

たとえば、.detailFeed要素が-ms-grid-row-span:3(すべての行にまたがる)であるとします。3番目の行は分数単位を使用しているため、3番目の行の大きさを知るには、グリッドの高さを事前に定義する必要があります。グリッド要素を常にウィンドウの高さの100%にしたい場合は、通常、グリッドのパーセンテージ値を指定height: 100%して、自動ではない高さの祖先があることを確認することで、グリッドのパーセンテージ値が時間内に解決されるようにします(たとえばheight: 100%、すべてに設定)ツリーの上の要素)。もう1つのオプションは、ビューポートの高さの単位を使用することです(つまりheight: 100vh

複数列の要素が含まれるグリッド行がすべて非自動で非分数である場合、グリッドセルの高さは引き続き定義されるため、グリッドの高さを事前に定義する必要はありません。

これが私が説明していることを示すいくつかのサンプルマークアップです。これは、IE10またはアプリ内で実行できます。ウィンドウのサイズを変更すると、列の数が調整されることに気付くでしょう。

<!doctype html>
<html>
<head>
<style>
html, body, .advisorDetail, section
{
    height: 100%;
}
.advisorDetail section[role=main].detailSection {
    -ms-grid-column: 4;
    display: -ms-grid;
    -ms-grid-rows: 24px 20px 1fr;
    -ms-grid-columns: auto;
    height: 100%;
}
    .advisorDetail section[role=main].detailSection .detailFeed {
        -ms-grid-row-span: 3;
        column-width: 400px;
        column-gap: 40px;
        height: 100%;
    }
</style>
</head>
<body>
<div class="advisorDetail">
  <section role="main" class="detailSection">
    <div class="detailFeed">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.
Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.
Aenean nec lorem. In porttitor. Donec laoreet nonummy augue.
Suspendisse dui purus, scelerisque at, vulputate vitae, pretium mattis, nunc. Mauris eget neque at sem venenatis eleifend. Ut nonummy.
Fusce aliquet pede non pede. Suspendisse dapibus lorem pellentesque magna. Integer nulla.
Donec blandit feugiat ligula. Donec hendrerit, felis et imperdiet euismod, purus ipsum pretium metus, in lacinia nulla nisl eget sapien. Donec ut est in lectus consequat consequat.
Etiam eget dui. Aliquam erat volutpat. Sed at lorem in nunc porta tristique.
Proin nec augue. Quisque aliquam tempor magna. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Nunc ac magna. Maecenas odio dolor, vulputate vel, auctor ac, accumsan id, felis. Pellentesque cursus sagittis felis.
Pellentesque porttitor, velit lacinia egestas auctor, diam eros tempus arcu, nec vulputate augue magna vel risus. Cras non magna vel ante adipiscing rhoncus. Vivamus a mi.
Morbi neque. Aliquam erat volutpat. Integer ultrices lobortis eros.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin semper, ante vitae sollicitudin posuere, metus quam iaculis nibh, vitae scelerisque nunc massa eget pede. Sed velit urna, interdum vel, ultricies vel, faucibus at, quam.
Donec elit est, consectetuer eget, consequat quis, tempus quis, wisi. In in nunc. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.
Donec ullamcorper fringilla eros. Fusce in sapien eu purus dapibus commodo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
Cras faucibus condimentum odio. Sed ac ligula. Aliquam at eros.
Etiam at ligula et tellus ullamcorper ultrices. In fermentum, lorem non cursus porttitor, diam urna accumsan lacus, sed interdum wisi nibh nec nisl. Ut tincidunt volutpat urna.
Mauris eleifend nulla eget mauris. Sed cursus quam id felis. Curabitur posuere quam vel nibh.
Cras dapibus dapibus nisl. Vestibulum quis dolor a felis congue vehicula. Maecenas pede purus, tristique ac, tempus eget, egestas quis, mauris.
Curabitur non eros. Nullam hendrerit bibendum justo. Fusce iaculis, est quis lacinia pretium, pede metus molestie lacus, at gravida wisi ante at libero.
Quisque ornare placerat risus. Ut molestie magna at mi. Integer aliquet mauris et nibh.
Ut mattis ligula posuere velit. Nunc sagittis. Curabitur varius fringilla nisl.
Duis pretium mi euismod erat. Maecenas id augue. Nam vulputate.
Duis a quam non neque lobortis malesuada. Praesent euismod. Donec nulla augue, venenatis scelerisque, dapibus a, consequat at, leo.
Pellentesque libero lectus, tristique ac, consectetuer sit amet, imperdiet ut, justo. Sed aliquam odio vitae tortor. Proin hendrerit tempus arcu.
In hac habitasse platea dictumst. Suspendisse potenti. Vivamus vitae massa adipiscing est lacinia sodales.
Donec metus massa, mollis vel, tempus placerat, vestibulum condimentum, ligula. Nunc lacus metus, posuere eget, lacinia eu, varius quis, libero. Aliquam nonummy adipiscing augue.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.
Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.
    </div>
  </div>
</div>
</body>
</html>

開示:私は、MicrosoftによるCSSグリッドの実装に取り​​組んだチームに所属しています。

于 2012-08-27T19:16:49.037 に答える