2014-08-30 59 views
1

我正在與this layout一起工作。將float div添加到此靈活佈局

我想添加一個div旁邊contentdiv。 我想:

HTML:

<div class="container"> 
    <header>here is the header </header> 
    <div class="sidebar">my sidebar content</div> 
<div class="content"> 
/my text 
</div> 
<footer> 
     and the footer 
</footer> 
</div> 

CSS:

.sidebar{ 
width: 100px; 
float: left; 
} 

{ 
    margin:0;padding:0; 
} 
html,body 
{ 
    height: 100%; 
} 
.container 
{ 
    -ms-box-orient: vertical; 
    display: -ms-flex; 
    height: 100%; 
    display: -webkit-box; /* OLD: Safari, iOS, Android browser, older WebKit browsers. */ 
    display: -moz-flex; 
    display: -ms-flexbox; /* MID: IE 10 */ 
    display: -webkit-flex; /* NEW, Chrome 21+ */ 
    display: flex;   /* NEW: Opera 12.1, Firefox 22+ */  

    -ms-flex-direction: column; 
    -webkit-flex-direction: column; 
    flex-direction: column; 
} 
header, footer 
{ 
    width: 300px; 
} 
.content{ 
width: 200px; 

} 
    header 
    { 
     background: yellow; 
    } 
    .content 
    { 
     background: pink; 

    -ms-flex: 1 1 auto; 
    -webkit-flex: 1 1 auto; 
    flex: 1 1 auto; 
    overflow: auto; 
    height:0; 
    min-height: 0; 
} 
footer 
{ 
    background: gray; 
    height: 80px; 
} 

,並改變了width,但什麼都沒有發生。新的div站在contentdiv的底部。 我該如何解決這個問題?

+1

你在哪裏把'要上浮div'that?你能舉一個例子,你包含標記和CSS不起作用嗎? – Emil 2014-08-30 09:22:56

回答

1

我認爲你需要這樣的: DEMO

包裝你content div的文本在另一個DIV lftfloat:left CSS然後包lftsidebar divs到content div

HTML

<div class="container"> 
    <header>Your header</header> 
    <div class="content"> 
     <div class="lft">Your text</div> 
     <div class="sidebar">Your Sidebar content</div> 
    </div> 
    <footer>Your footer</footer> 
</div> 

CSS

header, .content, footer { 
    width: 300px; 
} 

.lft { 
    width: 200px; 
    float: left; 
} 
.sidebar { 
    width: 100px; 
    float: right; 
} 
0

Flex項目上的浮動屬性被忽略。因此,在.sidebar.content上設置的任何浮動將不起作用。這是在flexbox規範中設計的:http://www.w3.org/TR/css3-flexbox/#flex-containers

您可以通過在另一個元素中包裝.content.sidebar元素來解決此問題,然後使用其中的浮動元素,或將包裝元素設置爲列方向上的彈性容器。例如:

<header></header> 
<div class="content"><!-- set this to be the flex item, eg. flex: 1 1 auto; --> 
    <div class="content-inner"></div> 
    <div class="sidebar"></div><!-- float this, for example. --> 
</div> 
<footer></footer> 

重要的一點是,實現Flexbox將只允許您排隊(和分發&尺寸)在1個方向(行或列)的元件。它可以允許打包,但不能一次將列項目和行項目中的彈性項目分開。如果你需要像你描述的佈局,你需要嵌套的東西。

+0

謝謝,我將內容包裝到另一個div中併爲其設置浮動樣式。但它毀了一切。我認爲由另一個div包裝flex項目可以刪除flexbox。 – Miller 2014-08-30 10:00:36

+0

當然,您需要設置新包裝的彈性屬性,而不是舊包裝的彈性屬性。那個容器的孩子可以正常漂浮。 – Emil 2014-08-30 10:01:29

+0

我喜歡它,但像以前一樣忽略浮動屬性。你能用HTML和CSS標記顯示我嗎? – Miller 2014-08-30 10:08:41

0

jsfiddle

你特林做

* 
{ 
    margin:0;padding:0; 
} 
html,body 
{ 
    height: 100%; 
} 
.container 
{ 
    -ms-box-orient: vertical; 
    display: -ms-flex; 
    width:400px; 
    height: 100%; 
    display: -webkit-box; /* OLD: Safari, iOS, Android browser, older WebKit browsers. */ 
    display: -moz-flex; 
    display: -ms-flexbox; /* MID: IE 10 */ 
    display: -webkit-flex; /* NEW, Chrome 21+ */ 
    display: flex;   /* NEW: Opera 12.1, Firefox 22+ */  

    -ms-flex-direction: column; 
    -webkit-flex-direction: column; 
    flex-direction: column; 
} 
header, .content, footer 
{ 
    width: 200px; 
} 
header 
{ 
    background: yellow; 
} 
.row{ 
    -ms-box-orient: vertical; 
    display: -ms-flex; 
    width:400px; 
    height: 200px; 
    display: -webkit-box; /* OLD: Safari, iOS, Android browser, older WebKit browsers. */ 
    display: -moz-flex; 
    display: -ms-flexbox; /* MID: IE 10 */ 
    display: -webkit-flex; /* NEW, Chrome 21+ */ 
    display: flex;   /* NEW: Opera 12.1, Firefox 22+ */  

    -ms-flex-direction: row; 
    -webkit-flex-direction: row; 
    flex-direction: row; 

} 
.row,.content,.sidebar 
{ 
    background: pink; 

    -ms-flex: 1 1 auto; 
    -webkit-flex: 1 1 auto; 
    flex: 1 1 auto; 
    overflow: auto; 

} 
footer 
{ 
    background: gray; 
    height: 80px; 
} 
+0

我改變了它。但側邊欄樣式在哪裏? – Miller 2014-08-30 09:50:11

+0

我編輯我的答案請查看鏈接http://jsfiddle.net/DVAcV/30/ – himanshu 2014-08-30 10:05:03

+0

和盒裝容器使用此鏈接http://jsfiddle.net/DVAcV/31/ – himanshu 2014-08-30 10:08:20