2012-08-29 19 views
2

我的代碼都在default.html中的HTML是:如何讓winms html和javascript metro app中的-ms-grid自適應寬度佈局?

<div id="content"> 
    <div class="group" id="left"> 
      <div>Left_1</div> 
      <div>Left_2</div> 
      <div>Left_3</div> 
      <div>Left_4</div> 
      <div>Left_5</div> 
    </div> 
    <div class="group" id="center"> 
      <div>Center_1</div> 
      <div>Center_2</div> 
      <div>Center_3</div> 
    </div> 
    <div class="group" id="right"> 
      <div>Right_1</div> 
      <div>Right_2</div> 
    </div> 
</div> 

和CSS是:

body { 
    font-size:20px; 
} 

#content { 
    display:-ms-grid; 
    -ms-grid-rows:1fr; 
    -ms-grid-columns:auto auto auto; 
    height:100%; 
} 

.group { 
    margin-right:20px; 
} 

#left { 
    -ms-grid-column:1; 
} 

#center { 
    -ms-grid-column:2; 
} 

#right { 
    -ms-grid-column:3; 
} 

.group div { 
    width:300px; 
    height:300px; 
    background:#888; 
    margin:10px; 
    text-align:center; 
} 

,其結果是: enter image description here

,但我需要的是: enter image description here

如何修改css?誰能幫幫我?

回答

0

我解決了這個利用Flexbox的:

.group { 
    display:-ms-flexbox; 
    -ms-flex-align:center; 
    -ms-flex-pack:start; 
    -ms-flex-direction:column; 
    -ms-flex-wrap:wrap; 
} 
+1

爲什麼你想使用IE瀏覽器特定的代碼,當你可以使用W3C標準,甚至在IE瀏覽器,自舊版本以來支持? – Oriol

+0

@Oriol這是win8地鐵應用程序,所以瀏覽器只有ie10 – artwl

+1

但我認爲這不是重點。我認爲你應該以正確的方式去做,而不是一種可行但不是最好的方式。 – Oriol

-3

http://jsfiddle.net/zuB3k/

如果使用display:-ms-grid,僅由IE 10的支持,您可以使用display:tabledisplay:table-cell,它遵循W3C標準和版本以來支持8

body { 
    font-size:20px; 
} 

#content { 
    height:100%; 
    display:table; 
    width:100%; 
} 

.group { 
    display:table-cell; 
    padding-right:20px; 
    vertical-align:top; 

} 

.group div { 
    width:100px; 
    height:100px; 
    background:#888; 
    margin:10px; 
    text-align:center; 
    float:left; 
} 
+1

這篇文章有一個windows-8標記,意思是他瞄準IE10。 –

+0

@JeremyFoster是的,但是更多的瀏覽器支持代碼,不是嗎? – Oriol

+1

如果你打算使用更多的瀏覽器,也許,但如果它只是Windows 8,那麼我會使用網格。無論如何,這將節省時間併爲開發者提供更多的權力。 –

3

你應使用flexbox:

.container 
{ 
    display: -ms-flex; 
    -ms-flex-direction: column; 
} 

然後將您的物品放入該容器中你應該都很好。

我肯定會推薦在您的metro-only應用程序中使用flexbox over table-cell。

Flexbox佈局還有很多其他選項,可能會變得非常複雜。請參閱here以獲取更多文檔(請務必在IE10中查看)和here

0

您應該可以通過使用ListView及其佈局設置爲GridLayout來實現所需的佈局。關於列表視圖的信息在這裏http://msdn.microsoft.com/en-us/library/windows/apps/br211837.aspx

簽出Visual Studio 2012中Javascript部分下的Grid App模板(當您選擇File - > New Project)作爲示例時。

+0

我只想知道網格簡單的如何做到這一點 – artwl

+0

這對於簡單的盒子來說是對的,但對於複雜的用戶界面來說則不然。你不能在ListView控件中嵌套一些UI控件。 –

0

Flexbox的不給你這個,但需要通過使用winjs列表視圖重新連接你得到的開箱即用的行爲......(頁面導航,點擊事件,數據綁定等)

Gridview不會讓你的數據呈現水平。

+0

你可以有ms-inline-grid – ShrekOverflow

+0

或orientation:horizo​​ntal; – ShrekOverflow