2017-08-01 17 views
0

ページがフルスクリーンの場合はすべて問題ありませんが、ウィンドウのサイズを変更すると、メインビジュアルが水平スクロールバーを形成するか、左側のナビゲーションバーの下に移動します。私はこれを防止し、それを反応させたい。要素を正しく配置する方法

body { 
 
    height: 100%; 
 
    /* \t max-width: 100%; 
 
     overflow-x: hidden;*/ 
 
} 
 

 
a, 
 
a:hover { 
 
    color: black; 
 
    text-decoration: none; 
 
} 
 

 

 
/*Header */ 
 

 

 
/*============================*/ 
 

 
section .header { 
 
    height: 62px; 
 
    width: 100%; 
 
    background-color: #a5a0a0; 
 
    position: relative; 
 
    overflow: hidden; 
 
} 
 

 
.header h1 { 
 
    margin-top: 0px; 
 
    padding: .3em; 
 
    font-family: 'Lobster'; 
 
} 
 

 

 
/* \t Navigation Bar 
 
    ================================*/ 
 

 
section .nav-bar { 
 
    position: absolute; 
 
    width: 175px; 
 
    min-height: 100vw; 
 
    min-height: 900px; 
 
    background-color: #d4cccc; 
 
    float: left; 
 
} 
 

 
.nav-bar ul { 
 
    margin: 0; 
 
    padding: 0; 
 
    left: 0; 
 
    list-style: none; 
 
    width: 100% 
 
} 
 

 
.nav-bar ul li { 
 
    font-size: 20px; 
 
    padding: 10px; 
 
    padding-left: 25px; 
 
    width: 100%; 
 
} 
 

 
.nav-bar ul li:hover { 
 
    background-color: #8c8983; 
 
} 
 

 

 
/* \t Main Visual 
 
    ===================================*/ 
 

 
.main-visual { 
 
    margin-top: 10px; 
 
    margin-left: 195px; 
 
    width: 1100px; 
 
    padding: 10px; 
 
    display: inline; 
 
    position: absolute; 
 
    right: 25px; 
 
} 
 

 
.main-visual img { 
 
    width: 500px; 
 
}
<!-- Link bootstrap --> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 

 

 

 
<!-- Lobster font --> 
 
<link href="https://fonts.googleapis.com/css?family=Lobster" rel="stylesheet"> 
 

 

 
<section> 
 
    <header class="header container-fluid"> 
 
    <h1>Planes</h1> 
 
    </header> 
 
</section> 
 

 
<section> 
 
    <nav class="nav-bar"> 
 
    <ul> 
 
     <li><a href="#">Home</a></li> 
 
     <li><a href="#">Facts</a></li> 
 
     <li><a href="#">Category</a></li> 
 
    </ul> 
 
    </nav> 
 
</section> 
 

 
<div class="main-visual container-fluid panel panel-default"> 
 

 
    <img src="http://via.placeholder.com/500x200" class="img-responsive"> 
 

 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin venenatis venenatis odio, vitae efficitur risus. Nunc ornare tristique est sit amet aliquet. Vestibulum id erat nec enim fermentum dignissim. Suspendisse suscipit eu mi sit amet pulvinar. 
 
    Quisque porttitor arcu quis hendrerit hendrerit. Quisque ac tincidunt neque. Vestibulum consectetur eros id finibus porta. Pellentesque convallis sagittis tortor, ac gravida erat aliquam nec. Pellentesque quis elit id ipsum tempus sagittis. Quisque 
 
    venenatis, velit eget blandit ornare, eros justo tincidunt tellus, at eleifend nibh dui et ante. Aenean pharetra feugiat libero, et laoreet lacus feugiat quis. Vestibulum ac imperdiet mi. Nunc consectetur diam erat, vel tempus eros eleifend ut. Nam 
 
    elementum libero at sapien dignissim, sed bibendum enim commodo. Morbi vulputate, odio in semper maximus, mi lorem consectetur nisl, vitae fringilla magna lorem tristique est. Nulla nec rhoncus nibh, at laoreet magna.</p> 
 

 
</div>

Codepen:https://codepen.io/etasbasi/pen/rzLVeJ

もナビゲーションバーを常に完全にメインビジュアルの高さに応じて、左側のペインをカバーします。

ありがとうございました:)

答えて

0

をあなたは(月のカップルの母校)マスターそれまではあなたがレイアウトを構築するために、絶対positionningを使用しないでください。

  • 表示(インラインブロック、テーブル、テーブルセル、フレックス、最終的にグリッド、...)
  • フロートレイアウト。

あなたは(奇数すぎ、see this tutorialすることができます)フロートでスタートを与えることができます...それだけでposition:absolute;を使用するために最初は非常に単純なようだが、その目的は、全体のレイアウトを構築することではないことあなたの要素をフローに保持します。

この列を描画するには、faux-column method(ここでは古いものですが、ここではソリッド)を使用できます。

body { 
 
    height: 100%; 
 
    /* \t max-width: 100%; 
 
     overflow-x: hidden;*/ 
 
     /* background about : https://alistapart.com/article/fauxcolumns */ 
 
    background: linear-gradient(to right, #d4cccc 175px, transparent 170px) 
 
} 
 

 
a, 
 
a:hover { 
 
    color: black; 
 
    text-decoration: none; 
 
} 
 

 

 
/*Header */ 
 

 

 
/*============================*/ 
 

 
section .header { 
 
    height: 62px; 
 
    width: 100%; 
 
    background-color: #a5a0a0; 
 
    position: relative; 
 
    overflow: hidden; 
 
} 
 

 
.header h1 { 
 
    margin-top: 0px; 
 
    padding: .3em; 
 
    font-family: 'Lobster'; 
 
} 
 

 

 
/* \t Navigation Bar 
 
    ================================*/ 
 

 
section .nav-bar { 
 
    float: left; 
 
    width: 175px; 
 
    margin-right: 10px; 
 
} 
 

 
.nav-bar ul { 
 
    margin: 0; 
 
    padding: 0; 
 
    left: 0; 
 
    list-style: none; 
 
    width: 100% 
 
} 
 

 
.nav-bar ul li { 
 
    font-size: 20px; 
 
    padding: 10px; 
 
    padding-left: 25px; 
 
} 
 

 
.nav-bar ul li:hover { 
 
    background-color: #8c8983; 
 
} 
 

 

 
/* \t Main Visual 
 
    ===================================*/ 
 

 
.main-visual { 
 
    margin: 10px; 
 
    overflow: hidden; 
 
    padding: 10px; 
 
} 
 

 
.main-visual img { 
 
    width: 500px; 
 
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 
<section> 
 
    <header class="header container-fluid"> 
 
    <h1>Planes</h1> 
 
    </header> 
 
</section> 
 

 
<section> 
 
    <nav class="nav-bar"> 
 
    <ul> 
 
     <li><a href="#">Home</a></li> 
 
     <li><a href="#">Facts</a></li> 
 
     <li><a href="#">Category</a></li> 
 
    </ul> 
 
    </nav> 
 
</section> 
 

 
<div class="main-visual container-fluid panel panel-default"> 
 

 
    <img src="http://via.placeholder.com/500x200" class="img-responsive"> 
 

 
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin venenatis venenatis odio, vitae efficitur risus. Nunc ornare tristique est sit amet aliquet. Vestibulum id erat nec enim fermentum dignissim. Suspendisse suscipit eu mi sit amet pulvinar. 
 
    Quisque porttitor arcu quis hendrerit hendrerit. Quisque ac tincidunt neque. Vestibulum consectetur eros id finibus porta. Pellentesque convallis sagittis tortor, ac gravida erat aliquam nec. Pellentesque quis elit id ipsum tempus sagittis. Quisque 
 
    venenatis, velit eget blandit ornare, eros justo tincidunt tellus, at eleifend nibh dui et ante. Aenean pharetra feugiat libero, et laoreet lacus feugiat quis. Vestibulum ac imperdiet mi. Nunc consectetur diam erat, vel tempus eros eleifend ut. Nam 
 
    elementum libero at sapien dignissim, sed bibendum enim commodo. Morbi vulputate, odio in semper maximus, mi lorem consectetur nisl, vitae fringilla magna lorem tristique est. Nulla nec rhoncus nibh, at laoreet magna.</p> 
 
</div>

ブロックさておきフロートは幅も、あなたが持っている場合(オーバーフローがsnipppet

+0

ありがとう、これは完全に動作します。私は2つの質問があります:このコードでは、nav-barはWebページの全長をどのようにしますか?そして、どのコードがメインビジュアルを反応的にするのか、それともそのデフォルトの振る舞いですか? –

0

に、ここで使用されているblock formating contextを気にしている場合に設定されるマージンを必要としません。ページのサイズを変更するときに固定されたままになるため、以前にメモしたように画面の左側にオーバーフローするように定義された幅(メインビジュアルの場合は1100ピクセル)が設定されます。

  1. ブラウザの幅に基づいて要素を変更するパーセンテージの幅を設定します。 width:80%は、この場合、本体である親要素の幅の80%を要素が占めるようにします。

  2. 幅を設定する代わりにmax-widthプロパティを使用します。つまり、ブラウザのページが大きくなると、要素が最大幅に達するまで要素が拡大します。私はまたいくつかのパディングを追加することをお勧めします:0 10px;このメソッドを使用してテキストが画面の端に流れないようにします。

関連する問題