2016-11-19 97 views
0

在我用於uni的PC上,我的DIV的定位在Visual Studio 2015社區的DESIGN視圖和Internet Explorer/Chrome瀏覽器調試模式下均可正常工作。它看起來像這樣:CSS Visual Studio 2015 Float定位

9 divs, 3 columns and 3 rows

在家裏,我使用Visual Studio的相同版本的像我一樣的統一。

這個想法是,應該有3行,每行有3個div。中間的div應該比左邊和右邊的寬,left_mid/right_mid top_mid/bot_mid DIV應該有邊框。

我把float:left上留下的div(LEFT_TOP,left_mid,left_bot),float:right上,我想就在中間的div(mid_top,mid_mid,mid_bot)右(RIGHT_TOP,right_mid,right_bot)和width:auto定位的div。

這是簡單的思想,它工作得很好。當我在家裏打開解決方案時,DIV看起來應該是在設計視圖中 - 不過在IE/Chrome調試時的瀏覽器視圖中 - 由於某種原因,它們沒有任何高度。過了一段時間,我發現由於某種原因,我不得不在FORM上放置高度和寬度,然後這些小傢伙又回到了他們的身高。 爲什麼?我不知道,不需要在FORM上設置高度和寬度。

但是,這並不能解決問題。他們的定位是不正確的 - 左頂DIV是它應該在的位置 - 在頁面的左上角。 Right_top DIV的位置也正確,它位於我的頁面的右上角。但是,由於某種未知的原因,中間DIV(mid_top)被放置在與left_top div相同的位置。

它適用於所有行 - mid_top/mid_mid/mid_bot div與left_top/left_mid/left_bot divs完全位於相同的位置(正如我只在瀏覽器調試視圖中所說的,在設計視圖中它看起來都很好) 。

這裏是我的問題的畫,使之更易於理解:

Painting of the problem

下面是代碼:

ASPX:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %> 
<meta http-equiv="X-UA-Compatible" content="IE=8"> 
<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
    <link href="StyleSheet1.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div id="page"> 
      <div id="left_side"></div> 
      <div id="right_side"> 
       <div id="row1"> 
        <div id="left_top"></div> 
        <div id="right_top"></div> 
        <div id="mid_top"></div> 
       </div> 
       <div id="row2"> 
        <div id="left_mid"></div> 
        <div id="right_mid"></div> 
        <div id="mid_mid"></div> 
       </div> 
       <div id="row3"> 
        <div id="left_bot"></div> 
        <div id="right_bot"></div> 
        <div id="mid_bot"></div> 
       </div> 
      </div> 


     </div> 
    </form> 
</body> 
</html> 

和CSS樣式表:

body { 
    height:800px; 
    width:1200px; 
} 

#form1{ 
    height:800px; 
    width:1200px; 
} 

#page{ 
    height:800px; 
    width:1200px; 
} 

#left_side{ 
    height:100%; 
    width:25%; 
    float:left; 
} 

#right_side{ 
    height:100%; 
    width:75%; 
    float:right; 
} 

#row1{ 
    height:33%; 
    width:100%; 
} 

#left_top{ 
    height:100%; 
    width:25%; 
     float:left; 
} 

#right_top{ 
    height:100%; 
    width:25%; 
    float:right; 

} 

#mid_top{ 
    height:100%; 
    width:50%; 
    border:dashed; 
    border-width:1px; 
} 

#row2{ 
    height:33%; 
    width:100%; 
} 

#left_mid{ 
    height:100%; 
    width:25%; 
    float:left; 
    border:dashed; 
    border-width:1px; 

} 

#right_mid{ 
    height:100%; 
    width:25%; 
    float:right; 
    border:dashed; 
    border-width:1px; 

} 

#mid_mid{ 
    height:100%; 
    width:50%; 
} 

#row3{ 
    height:33%; 
    width:100%; 
} 

#left_bot{ 
    height:100%; 
    width:25%; 
    float:left; 
} 

#right_bot{ 
    height:100%; 
    width:25%; 
    float:right; 
} 

#mid_bot{ 
    height:100%; 
    width:50%; 
    border:dashed; 
    border-width:1px; 

} 

Left_side DIV在這裏是不必要的 - 我將在以後的項目中使用它。所有的行動都在right_side DIV。

正如你所看到的,我嘗試添加一些元標題,但我不完全知道它在做什麼,它也沒有改變任何東西。

我也嘗試玩像設置顯示:塊,顯示:內聯,顯示:內聯塊等,但無濟於事......我不知道爲什麼它不工作時,它只是工作罰款之前。

+0

如何保持你的語言在一個成熟的水平?我編輯了你不必要的粗俗 - 在這裏沒有地方。沒有地方要求幫助或討論你的壓力水平(我也刪除了所有這些)。只是...問你的問題。 –

+0

使用bootstrap css框架。如果您在移動設備中展示,佈局將永遠不會改變。從下面的鏈接學習引導。不要自殺,請你是我的兄弟! http://getbootstrap.com/ –

+0

乾杯兄弟!但是,我們不能在我們的代碼中使用JavaScript,所以我不能真正使用它。無論如何顯然自殺的一部分是誇張的,我不想冒犯任何使用我的語言的人 - 我習慣了人們在reddit上發佈的方式以及這是常態的網站,假設我應該調整我的帖子到更屬於這裏的正式水平。 –

回答

1

在這裏,你正在嘗試做的一個工作示例 - 我改變了HTML和CSS,所以如果你使用浮動等綁定,那麼它將無法工作,但否則它確實是你想要的。

html,body { 
 
    margin: 0; padding; 0; 
 
    } 
 
body { 
 
    height:800px; 
 
    width:1200px; 
 
} 
 

 
#form1{ 
 
    height:800px; 
 
    width:1200px; 
 
} 
 

 
#page{ 
 
    height:800px; 
 
    width:1200px; 
 
} 
 

 
#left_side{ 
 
    height:100%; 
 
    width:25%; 
 
    float:left; 
 
    display: none; 
 
} 
 

 
#right_side{ 
 
    height:100%; 
 
    width:75%; 
 
    float:right; 
 
    overflow: hidden; 
 
} 
 
#row1 div,#row2 div, #row3 div { 
 
    display: inline-block; 
 
    } 
 
.row .left,.row .right { 
 
    width: 25%; 
 
    } 
 
.row .middle { 
 
    width: 50%; 
 
    } 
 
#left_top{ 
 
    border: 1px solid blue; 
 
} 
 
#right_top{ 
 
    border: 1px solid green; 
 
} 
 
#mid_top{ 
 
    border: 1px dashed brown; 
 
} 
 
#left_mid{ 
 
    border: 1px solid blue; 
 
} 
 
#right_mid{ 
 
    border: 1px solid green; 
 
} 
 
#left_bot{ 
 
    border: 1px solid blue; 
 
} 
 
#right_bot{ 
 
    border: 1px solid green; 
 
} 
 
#mid_bot{ 
 
    border: 1px dashed brown; 
 
} 
 
#row1,#row2,#row3 { 
 
    border: 1px solid red; 
 
    height: 33%; 
 
    width: 100%; 
 
    } 
 
div { 
 
    box-sizing: border-box; 
 
    } 
 
div div { 
 
    height: 100%; 
 
}
<!DOCTYPE html> 
 

 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head runat="server"> 
 
    <title></title> 
 
    <link href="StyleSheet1.css" rel="stylesheet" type="text/css" /> 
 
</head> 
 
<body> 
 
    <form id="form1" runat="server"> 
 
     <div id="page"> 
 
      <div id="left_side"></div> 
 
      <div id="right_side"> 
 
       <div id="row1" class="row"> 
 
        <div id="left_top" class="left"></div><div id="mid_top" class="middle"></div><div id="right_top" class="right"></div> 
 
       </div> 
 
       <div id="row2" class="row"> 
 
        <div id="left_mid" class="left"></div><div id="mid_mid" class="middle"></div><div id="right_mid" class="right"></div>     
 
       </div> 
 
       <div id="row3" class="row"> 
 
        <div id="left_bot" class="left"></div><div id="mid_bot" class="middle"></div><div id="right_bot" class="right"></div> 
 
       </div> 
 
      </div> 
 

 

 
     </div> 
 
    </form> 
 
</body> 
 
</html>

+0

這似乎在做詭計!我們不一定會使用浮游物,只有我們的講師建議它可能是一個好主意,雖然它在uni個人電腦上工作,但在其他地方無法使用。不知道那是什麼原因!無論哪種方式 - 你的代碼看起來很好,非常感謝。 –

1

我認爲,這是沿着線的東西越多,你在找什麼:

https://jsfiddle.net/hzk2yxpv

<div class="wrapper"> 
    <div class="container"> 
    <div class="left"></div> 
    <div class="middle"></div> 
    <div class="right"></div> 
    </div> 
    <div class="container"> 
    <div class="left"></div> 
    <div class="middle"></div> 
    <div class="right"></div> 
    </div> 
    <div class="container"> 
    <div class="left"></div> 
    <div class="middle"></div> 
    <div class="right"></div> 
    </div> 
</div> 

和CSS

.container { 
    width: 100%; 
    border: 1px solid black; 
    height: 50vh; 
    margin: 0; 
} 

.left { 
    width: 25%; 
    border: 1px solid black; 
    height: 100%; 
    float: left; 
} 

.middle { 
    width: auto; 
    height: 100%; 
    border: 1px solid black; 
    float: left; 
} 

.right { 
    width: 25%; 
    border: 1px solid black; 
    height: 100%; 
    float: right; 
} 

如果您打算使用花車,我建議您考慮一下float clearing,這樣您就不會遇到未來的問題,或者如果您覺得真的冒險,flex boxes

此外,請始終記住元素的高度總是相對於父容器。如果元素上有height: auto,並且沒有指定父元素高度鏈上的任何父元素,則高度將顯示爲零。

+0

謝謝!在這個例子中,當我在IE中調試它時,高度似乎等於零,但是在Chrome中工作得很好。我仍然是一個完整的初學者,但我注意到,代碼通常在一個瀏覽器中可以正常工作,而在另一個瀏覽器中則是錯誤的。 不幸的是,我們的講師在IE中進行調試,所以它也能在那裏工作。 但是,垃圾食品垃圾箱所帶來的答案似乎在兩種情況下都有效果! –

1

我有沒有浮動的解決方案。使用彈性盒更直接。我希望你覺得很容易遵循。我沒有太多改變你的代碼,以便你可以看到。

/*an example of doing it with flexbox, I have not changed your syntax too much, so that you can figure out how it works */ 
 

 
body { 
 
    height: 800px; 
 
    width: 1200px; 
 
} 
 
#form1 { 
 
    display: flex; 
 
    flex-direction: column; 
 
    /*let the rows flex in column */ 
 
    height: 800px; 
 
    width: 1200px; 
 
} 
 
#page { 
 
    height: 800px; 
 
    width: 1200px; 
 
} 
 
#row1, 
 
#row2, 
 
#row3 { 
 
    display: flex; 
 
    height: 33%; 
 
    width: 100%; 
 
} 
 
#left_top, 
 
#right_top { 
 
    flex-grow: 1; 
 
    /*specifies how much the item will grow relative to the rest of the flexible items inside the same container. */ 
 
    height: 100%; 
 
} 
 
#mid_top, 
 
#left_mid, 
 
#mid_bot, 
 
#right_mid { 
 
    flex-grow: 1; 
 
    height: 100%; 
 
    border: dashed; 
 
    border-width: 1px; 
 
} 
 
#mid_mid, 
 
#left_bot, 
 
#right_bot { 
 
    flex-grow: 1; 
 
    height: 100%; 
 
}
<meta http-equiv="X-UA-Compatible" content="IE=8"> 
 
<!DOCTYPE html> 
 

 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 

 
<head runat="server"> 
 
    <title></title> 
 
    <link href="StyleSheet1.css" rel="stylesheet" type="text/css" /> 
 
</head> 
 

 
<body> 
 
    <form id="form1" runat="server"> 
 
    <div id="page"> 
 
     <div id="row1"> 
 
     <div id="left_top">left-top</div> 
 
     <div id="mid_top">mid-top</div> 
 
     <div id="right_top">right-top</div> 
 
     </div> 
 
     <div id="row2"> 
 
     <div id="left_mid">left-mid</div> 
 
     <div id="mid_mid">mid-mid</div> 
 
     <div id="right_mid">right-mid</div> 
 
     </div> 
 
     <div id="row3"> 
 
     <div id="left_bot">left-bot</div> 
 
     <div id="mid_bot">mid-bot</div> 
 
     <div id="right_bot">right-bot</div> 
 
     </div> 
 
    </div> 
 
    </form> 
 
</body> 
 

 
</html>

+0

感謝您的回覆!令人驚訝的是 - 這隻適用於Chrome瀏覽器,當我在IE中進行調試時,這些框位於一列之內。 –

+0

很高興工作。在IE11及更高版本中,Css3在較​​新的瀏覽器中實現。 –

+0

很高興工作。在IE11及更高版本中,Css3在較​​新的瀏覽器中實現。嘗試在flex之前添加前綴-ms。防爆。 「-ms-flex-direction」和「-ms-flex」 –