11

2つの固定幅のサイドバー(左と右)と流動的な中心を持つ3列のレイアウトに取り組んでいます。私はAListApartのHolyGrailの記事に従いました。これはほとんどのブラウザーで正常に機能しますが、InternetExplorer7以降でいくつか問題が発生しています。

IE 7+の問題は、実際にはこの手法に起因するのではなく、ページがクァークモードでレンダリングされているという事実に起因しています。ただし、標準準拠モードでレンダリングすると、多くの古い要素が置き換えられ、完全に書き直す必要があります。

この記事の日付が数年であることを考えると、これはこの主題に関する最新の参考資料ですか?または、別の手法を適用する必要がありますか?

これを行うための最良の方法に関する洞察は大歓迎です。

4

3 に答える 3

20

列をフローティングする意味はありません。

HTML:

<div id="wrapper">
    <div id="left"></div>
    <div id="center"> Center content</div>
    <div id="right"></div>
</div>

CSS:

#left {
    position:absolute;
    left:0;
    width:50px;
    height:100%;
    background-color:pink;
}

#center {
    height:100%;
    margin: 0 50px;
    background-color:green;
}

#right {
    position:absolute;
    right:0;
    top:0;
    width:50px;
    height:100%;
    background-color:red;
}

body, html, #wrapper {
    width:100%;
    height:100%;
    padding:0;
    margin:0;
}

デモ: http: //jsfiddle.net/AlienWebguy/ykAPM/

于 2011-07-26T03:21:36.560 に答える
4

絶対位置は全幅のページで機能しますが、中央に固定幅がある場合はどうでしょうか。IE8+で動作するフレックスボックスに基づくソリューションを思いついた。フレキシポリフィルは古いブラウザに使用されます

http://jsfiddle.net/lorantd/9GFwT/10/を参照してください

<div id="header"></div>
<div id="main">    
    <div id="menu"></div>
    <div id="content"></div>
    <div id="summary"></div>
</div>
<div id="footer"></div>

#header {
    background-color: #9B9EA7;
    height: 70px;
}

body {
    min-width: 500px;
    max-width: 630px;
    margin-right: auto;
    margin-left: auto;
    display: block;
}

#main {
    display: -moz-box;         /* OLD - Firefox 19- (buggy but mostly works) */
    display: -ms-flexbox;      /* TWEENER - IE 10 */
    display: -webkit-flex;     /* NEW - Chrome */
    display: flex;             /* NEW, Spec - Opera 12.1, Firefox 20+ */
    display:-webkit-box; /* Safari and Chrome */
    display:box;
    width: 100%;
}

#menu {
    background-color: #D42108;
    width: 120px;
    margin-top: 10px;
    margin-right: 10px;
}

#content {
    background-color: #FFD700;
    height: 500px;
    margin-top: 10px;
    margin-right: 10px;
    -webkit-box-flex: 2;      /* OLD - iOS 6-, Safari 3.1-6 */
    -moz-box-flex: 2;         /* OLD - Firefox 19- */
    width: 60%;               /* For old syntax, otherwise collapses. */
    -webkit-flex: 2;          /* Chrome */
    -ms-flex: 2;              /* IE 10 */
    flex: 2;   
}

#summary {
    width: 30px;
    margin-top: 10px;
    background-color: #9B9EA7;
}

#footer {
    background-color: #353535;
    width: 100%;
    height: 50px;
    margin-top: 10px;
    clear: both;
}
于 2013-03-28T14:20:20.643 に答える
0

これはほとんどの場合に役立つはずだと思います。

以下のリンクをご覧ください。

http://jsfiddle.net/ykAPM/278/

#left {
position:fixed;
left:0;
width:50px;
height:100%;
background-color:pink;
}

#center {
margin: 0 50px;
background-color:green;
overflow:auto
}

#right {
position:fixed;
right:0;
top:0;
width:50px;
height:100%;
background-color:red;
}

body, html, #wrapper {
width:100%;
height:100%;
padding:0;
margin:0;
}

#test{
height:1000px;
}
于 2013-04-12T13:48:01.340 に答える