2016-06-25 31 views
0

CSSのフレックスを使用してdivを整列させるのに少し問題があります。下の図は、私はそれをすべてをCSS:3つのdivを持つフレックスコンテナ

Layout Template

ここではすべての私のCSSだを設定し、HTMLがas a fiddleをアップロードし、さしたい方法を示してスニペットとして:

@font-face { 
 
\t \t \t font-family: Comfortaa; 
 
\t \t \t src: url("Comfortaa-Light.ttf") format("truetype"); 
 
\t \t } 
 

 
\t \t @font-face { 
 
\t \t \t font-family: Neue; 
 
\t \t \t src: url("HelveticaNeue-Thin.otf") format("opentype"); 
 
\t \t } 
 

 
\t \t body { 
 
\t \t \t position: absolute; 
 
\t \t \t margin: 0px; 
 
\t \t \t top: 0px; 
 
\t \t \t left: 0px; 
 
\t \t \t bottom: 0px; 
 
\t \t \t right: 0px; 
 
\t \t \t overflow-y: scroll; 
 
\t \t \t overflow-x: hidden; 
 

 
\t \t \t background-color: white; 
 
\t \t } 
 

 
\t \t #topSegment { 
 
\t \t \t position: relative; 
 
\t \t \t display: flex; 
 
\t \t \t flex-flow: row wrap; 
 
\t \t \t width: 100%; 
 
\t \t \t height: 600px; 
 
\t \t \t top: 0px; 
 
\t \t \t left: 0px; 
 
\t \t \t bottom: 0px; 
 
\t \t \t right: 0px; 
 
\t \t \t background: purple; /* For browsers that do not support gradients */ 
 
\t \t \t background: -webkit-linear-gradient(left top, rgba(181,91,184,1), rgba(62,71,130,1)); /* For Safari 5.1 to 6.0 */ 
 
\t \t \t background: -o-linear-gradient(bottom right, rgba(181,91,184,1), rgba(62,71,130,1)); /* For Opera 11.1 to 12.0 */ 
 
\t \t \t background: -moz-linear-gradient(bottom right, rgba(181,91,184,1), rgba(62,71,130,1)); /* For Firefox 3.6 to 15 */ 
 
\t \t \t background: linear-gradient(to bottom right, rgba(181,91,184,1), rgba(62,71,130,1)); /* Standard syntax */ 
 
\t \t } 
 

 
\t \t #frontLogo { 
 
\t \t \t width: 369.9px; 
 
\t \t \t height: 350px; 
 
\t \t \t margin: 125px; \t \t 
 
\t \t } 
 

 
\t \t #searchBar { 
 
\t \t \t flex: 1; 
 
\t \t \t margin-right: 125px; 
 
\t \t \t margin-left: 0px; 
 
\t \t \t margin-top: 75px; 
 
\t \t \t margin-bottom: 75px; 
 
\t \t \t background-color: rgb(74,74,74); 
 
\t \t \t height: 50px; 
 
\t \t \t border-radius: 25px; 
 
\t \t } 
 

 
\t \t #weatherInformation { 
 
\t \t \t flex: 1; 
 
\t \t \t margin: 125px; 
 
\t \t \t margin-left: 0px; \t \t 
 
\t \t } 
 

 
\t \t #weatherInformation p{ 
 
\t \t \t margin: 0px; 
 
\t \t \t font-family: 'Open Sans', sans-serif; 
 
\t \t \t font-weight: 300; 
 
\t \t \t color: white; 
 
\t \t \t font-size: 2em; 
 
\t \t } 
 

 
\t \t #underline { 
 
\t \t \t margin: 0px; 
 
\t \t \t padding: 0px; 
 
\t \t \t width: 0%; 
 
\t \t \t visibility: hidden; 
 
\t \t \t animation-name: expand; 
 
\t \t \t animation-delay: 0.75s; 
 
\t \t \t animation-duration: 0.8s; 
 
\t \t \t animation-timing-function: ease-in-out; 
 
\t \t \t -webkit-animation-fill-mode: forwards; /* Chrome, Safari, Opera */ 
 
\t \t \t animation-fill-mode: forwards; 
 
\t \t } 
 

 
\t \t @keyframes expand { 
 
\t \t \t from { 
 
\t \t \t \t width: 0%; 
 
\t \t \t } 
 
\t \t \t to { 
 
\t \t \t \t width: 100%; 
 
\t \t \t \t visibility: visible; 
 
\t \t \t } 
 
\t \t } 
 

 
\t \t #gradient { 
 
\t \t \t position: absolute; 
 
\t \t \t width: 100%; 
 
\t \t \t height: 10px; 
 
\t \t \t bottom: 0px; 
 
\t \t \t left: 0px; 
 

 
\t \t \t background: white; /* For browsers that don't support gradients */ 
 
\t \t \t background: -webkit-linear-gradient(top,rgba(0,0,0,0.4),rgba(0,0,0,0)); /*Safari 5.1-6*/ 
 
\t \t \t background: -o-linear-gradient(top,rgba(0,0,0,0.4),rgba(0,0,0,0)); /*Opera 11.1-12*/ 
 
\t \t \t background: -moz-linear-gradient(top,rgba(0,0,0,0.4),rgba(0,0,0,0)); /*Fx 3.6-15*/ 
 
\t \t \t background: linear-gradient(to top, rgba(0,0,0,0.4), rgba(0,0,0,0)); /*Standard*/ 
 
\t \t } 
 

 
\t \t #content { 
 
\t \t \t display: flex; 
 
\t \t \t width: 100%; 
 
\t \t \t height: 900px; 
 

 
\t \t \t background-color: white; 
 
\t \t } 
 

 

 
\t \t /* Custom Scrollbar CSS */ 
 

 
\t \t ::-webkit-scrollbar { 
 
\t \t \t width: 10px; 
 
\t \t } 
 
\t \t ::-webkit-scrollbar-track { 
 
\t \t \t background: rgba(255,255,255,1); 
 
\t \t \t -webkit-box-shadow: inset 0 0 3px rgba(0,0,0,0.3); 
 
\t \t \t -webkit-border-radius: 50px; 
 
\t \t \t border-radius: 50px; 
 
\t \t } 
 
\t \t ::-webkit-scrollbar-thumb { 
 
\t \t \t -webkit-border-radius: 10px; 
 
\t \t \t border-radius: 10px; 
 
\t \t \t background: rgba(150,150,150,1); 
 
\t \t } 
 
\t \t ::-webkit-scrollbar-thumb:window-inactive { 
 
\t \t \t background: rgba(150,150,150,0.6); 
 
\t \t }
<body> 
 
\t <div id="topSegment"> 
 
\t \t <a href="index.html"> 
 
\t \t \t <img src="Weather%20Icon.svg" alt="CGS Weather Icon" id="frontLogo" > 
 
\t \t </a> 
 
\t \t <div id="searchBar"> 
 
\t \t \t <div id="outer"> 
 
\t \t \t \t 
 
\t \t \t </div> 
 
\t \t </div> 
 
\t \t <div id="weatherInformation"> 
 
\t \t \t <p>CAMBERWELL, MELBOURNE</p> 
 
\t \t \t <hr id="underline"> 
 
\t \t \t <p>28&deg;</p> 
 
\t \t </div> 
 
\t \t <div id="gradient"></div> 
 
\t </div> 
 
\t <div id="content"></div> 
 
</body>

flexといくつかの行を使用して実際には簡単な解決策があると確信していますが、私はそれらが何であるか分かりません。

+0

Welcome to StackOverflow。あなたが見たいと思うものと見えないものを明記してください。あなたのテンプレートと実際のスニペットはかなり異なって見えます。また、特定の質問をしてみてください。宜しくお願いします。 – YakovL

+0

私はあなたがこれに全くフレックスを使用すべきではないと思います。 – poepje

+0

マークアップの変更はいくつかありますが、検索バー/水情報がページ幅に合わない場合のレイアウトはどれですか? – LGSon

答えて

0

peopje、私は同意しない!このためにFlexは完璧です! (免責事項:私はフレックスエバンジェリストなので、Flexはすべてに完璧です);-)

私はあなたのダイアグラムを使ってソリューションを構成しました。あなたは左のペインで何を求めているのですか?固定高さのマージンと固定高さのロゴがありますが、その領域を画面の高さに合わせる必要があります。問題を参照してください?何かがそこで変わる必要があります。

私は2つのフレックス塗りつぶしパネルを使用しました.1つは上端、もう1つは下のロゴコンテナで、ロゴを垂直にセンタリングし、同時に垂直に塗りつぶします。私はかなりあなたが意図したように視覚効果があると確信しています。

他のすべてのものは、あなたがリクエストしたとおり正確です。

注:CSSシートの一番下にCSSのチャンクを付けて、CSSのフレックス管理を行うためにすべてのプロジェクトでコピーペーストを再利用できます。 Flexは非常に強力で、CSSクラスの数が少ないため、作業が簡単になります。

注意:それは醜いです!私は何が起こっているのかを正確に見ることができるようにすべてを囲んでいるので、ひどいです。もちろん、実際の使用のためにボーダーを削除/コメントアウトすることもできます。境界線は開発中に非常に役立ちます。

ここに行ってください! https://jsfiddle.net/brebey/ya8rea0f/2/

ここでは、より一般的なフレックスボックスのデモもあります。可変幅のペインを任意の位置(上/中央/下)に配置し、次にそこに配置して、あまりにも一般的な3ペインのレイアウト(ヘッダー/コンテンツ/フッターレイアウト)を行う方法を示します可変高さのコンテンツペインで)、それは同じく、あまりにも一般的な左から右のレイアウト(メニュー/コンテンツ/広告など)で行われた同じことを示しています。あなたが興味を持っているなら、それがあります。 https://jsfiddle.net/brebey/sm4amanj/

フレックスボックスのマジックは、パッディング、枠線、および/または余白を任意のFlex DIVに自由に追加できる唯一のメカニズムであり、予想通りに動作します。 。上記のデモでは、装飾をオン/オフに切り替えるためのチェックボックスを使用しています。

**この回答がお役に立てば、回答を受け入れてください。 **

注:私はあなたのためにフレックス/ジオメトリの部分のみを行いました。あなたは、方程式の背景/境界線/色の部分に良いハンドルを持っているように見えました。あなたが探している効果のために適切なバックグラウンド/透明/不透明シーケンスを設定するのに役立つ必要があれば、ホラーバックと私はあなたに手を差し上げます。

/* */ 
+0

すごいね。それは私が探していたものとほとんど同じです。左ペインとその中のすべてのディメンションは固定されているので、ダイアグラムでは周囲のdivはページ全体ではありません。それは私が固定された高さで持っていた別のコンテナでした。いずれにしても、おかげさまで助けてくれてありがとうございます。これは私が必要としていたものです。 –

+0

@MatthewHarrison - 私は助けてくれると嬉しく思いました。長いフレックスボックスで暮らす!正しい答えを受け入れるようにしばらく時間をかけてください。 – BRebey

関連する問題