3

私は自分のサイトのテーブルを CSS ポジショニングに置き換えるつもりで、チュートリアルなどを通じて自分自身を学ぼうとしてきました。初期の段階では成功しましたが、サイドバーを作成しようとしたときにすべてがクラッシュしました。問題に何らかの簡単な解決策があることを願っています。要素の相対的/絶対的な配置は、私がやりたかったことの近くには行きません。私の目標は、画像が上から下にスタック (フロート?) され、中央の要素が順序付けられていないリストの一部であるサイドバーを作成することです。一度は動作するようになりましたが、今ではそれが重なり合っています。フロートと絶対/相対位置を設定する方法でなければなりません。ここでいくつかの記事を読んだ後、それらを内部に配置するために div ラッパーを追加しようとしましたが、さらに混乱したと思います。誰かが私を正しい方向に微調整できる可能性はありますか? コードは次のとおりです。

CSS

body   
{
    background: #b6b7bc;
    font-size: .80em;
    font-family: "Helvetica Neue", "Lucida Grande", "Segoe UI", Arial, Helvetica, Verdana, sans-serif;
    margin: 50px;
    padding: 0px;
    color: #696969;
    height: 160px;
}

a:link, a:visited
{
    color: #034af3;
}

a:hover
{
    color: #1d60ff;
    text-decoration: none;
}

a:active
{
    color: #034af3;
}

p
{
    margin-bottom: 10px;
    line-height: 1.6em;
}


/* HEADINGS   ----------------------------------------------------------*/

h1, h2, h3, h4, h5, h6
{
    font-size: 1.5em;
    color: #666666;
    font-variant: small-caps;
    text-transform: none;
    font-weight: 200;
    margin-bottom: 0px;
}

h1
{
    font-size: 1.6em;
    padding-bottom: 0px;
    margin-bottom: 0px;
}

h2
{
    font-size: 1.5em;
    font-weight: 600;
}

h3
{
    font-size: 1.2em;
}

h4
{
    font-size: 1.1em;
}

h5, h6
{
    font-size: 1em;
}



/* PRIMARY LAYOUT ELEMENTS  ---------------------------------------------------------*/

.page
{
    width: 960px;
    background-color: #fff;
    margin: 20px auto 0px auto;
    border: 1px solid #496077;
}

.header
{
    position: relative;
    margin: 0px;
    padding: 0px;
    background: #4b6c9e;
    width: 100%;
    top: 0px;
    left: 0px;
}

.header h1
{
    font-weight: 700;
    margin: 0px;
    padding: 0px 0px 0px 20px;
    color: #f9f9f9;
    border: none;
    line-height: 2em;
    font-size: 2em;
}

.main
{
    padding: 0px 12px;
    margin: 0px 4px 4px 4px;
    min-height: 420px;
    width: 500px;
    float: left;
}

.leftCol
{
    padding: 6px 0px;
    margin: 12px 8px 8px 8px;
    width: 200px;
    min-height: 200px;
}

.footer
{
    color: #4e5766;
    padding: 8px 0px 0px 0px;
    margin: 0px auto;
    text-align: center;
    line-height: normal;
}




/* MISC ----------------------------------------------------------*/

.clear
{
    clear: both;
    width: 936px;
    height: 35px;
}

.title
{
    display: block;
    float: left;
    text-align: justify;
}


.bold
{
    font-weight: bold;
}


p.clear
{
    clear: both;
    height: 0;
    margin: 0;
    padding: 0; 
}

#wrapper
{
    position:relative;
    height: 500px;
    width: 900px;
}

#insidemain
{
    position:absolute;
    float: left;    
    width: 500px;
    height 180px;
}


/* ---------------- Sidebar Items ---------------------*/


#sidebar   /* Sidebar container */
{
    position:absolute;
    border-top: 1px solid #99CC33;
    border-left: 1px solid #99CC33;
    height: 300px;
    width: 180px;
    margin-right: 5px;
    padding: 5px 0 0 5px;
}

#sidebarHeader
{
    position:absolute;
    height: 37px;
    width: 172px;
    float: left;
    background-image: url(../img/TopMenu.jpg);
    background-repeat:no-repeat;
}

#sidebarItems ul
{
    position:absolute;
    height: 27px;
    width: 172px;
    float:left;
    background-image: url(../img/MenuItems.jpg);
    background-repeat:no-repeat;
    /*left: 6px;
    top: 45px;*/
    background-position: 0px -27px;
}

#sidebarFooter
{
    position:absolute;
    height: 46px;
    width: 172px;
    float:left;
    background-image: url(../img/BottomMenu.jpg);
    background-repeat:no-repeat;
}

そしてHTML

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
    <head>
        <title></title>
        <link href="Styles/Simple.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <div class="page">
            <div class="header">header
                <div class="title">
                    <h1>
                        Test Page
                    </h1>
                </div>
            </div>
            <p class = "clear">clear</p>
            <div id="wrapper">
                <div id="sidebar">
                    <div id="sidebarHeader">
                    </div>
                    <div id="sidebarItems">
                        <ul>
                            <li>test item</li>
                        </ul>
                    </div>
                    <div id="sidebarFooter">
                    </div>
                </div>
            </div>
            <div id="insidemain">
                main
            </div>
        </div>
        <div class="clear">clear</div>
        <div class="footer">
            <a href="http://www.google.com/">
                Blah blah test to see how far this will go across the page blah blha lorem ipsum and various other stuff that is meaningless etc
            </a>
        </div>
    </body>
</html>
4

3 に答える 3

2

.wrapper通常(特にレスポンシブサイトの場合)、コンテンツ全体(ヘッダー、コンテンツ、サイドバー、フッターなど)の周りにdivがあります。次に、.wrapper幅を設定します。あなた.sidebarはセットを持っているでしょう、そしてそれはあなたがそれを望む側のwidthどちらかfloat: left;またはそれに応じてそうするでしょう。あなたの-あなたの以下になるあなたのdivをfloat: right;設定します。次に、以下を追加して、すべての下に収まるようにします。ほとんどの場合(少なくとも大きなページチャンクの場合)、回避することができます。これは、物事をより簡単に配置するのに役立ちます。.contentwidth.wrapper width.sidebar width.clearfix.footerposition:absolute;

于 2012-09-12T19:25:13.493 に答える
1

floatと の両方で同じ要素をターゲットにしないでくださいposition:absolute。あまり意味がありません。あなたが持っているところはどこでも、あなたはfloat取り除くべきですposition:absolute

class="clear"次に、それらのばかげた要素を取り除きます。代わりに、とでターゲット.footerを絞るclear:both.pageoverflow-y:hidden;

于 2012-09-12T23:01:18.973 に答える
1

div やリストをフロートする必要はありません。これらはデフォルトでブロック要素であり、関係なく垂直にスタックされます。

また、Scrimothy が述べたように、要素をページ フローから除外するため、要素を絶対に配置する必要はありません。言い換えれば、それらはページ内の「実際の」スペースを占有しなくなり、代わりに配置する座標にレンダリングされます。

同様に、float も、他の float 要素を除いてスペースを占有しません。そのため、一部の UI 開発者は、ページ上のほぼすべての要素をフロートさせ、フッターまたはページ内のキー ブレークを使用してそれらを「クリア」します。私は個人的にそのようなポジショニングをお勧めしませんが、それぞれ独自のものです。

この簡単なチュートリアルがいくつかの主要なポジショニングの概念に役立つかどうかを確認してください:こちら

于 2012-09-12T22:41:55.970 に答える