2017-04-21 6 views
0

私はサイトの幅のおよそ80%の正方形にあるメインコンテンツと、ヘッダー、フッター、および2つのサイドバーがラインを介して送信されるようなサイトのための少しの設計に取り組んでいます。ヘッダー、フッター、ライン、コンテンツはすべて動作しており、サイズ変更されたときにはすべて(ほとんど)正しい場所にとどまります。しかし、私は私の人生のために中央の四角形を画面の中央にセクションを塗りつぶし続ける(重ならないで、またはスクロールバーを持つ)方法を工夫することはできません。レスポンシブな形状ベースのレイアウトですか?

私は、私の正方形のコードと、私がやろうとしていること、そして現在以下に起こっていることのスクリーンショットが添付されています。私のinnercontent div以外に、サイドにはdivがなく、上下にヘッダーとフッターのdivがあります。

*アップデート:要求通りにコードを追加しました。私はこれが、いくつかのJSを通して生成されるライン以外のスクリーンショットで提供した例で使用されているものだと思います。私はので、私はそれをすべてと私のJSフィドルにリンクできるようにするために、ここでも重要なCSSを含めました:あなたの.innercontent

/* =================== 
 
    Inital Styles 
 
    =================== */ 
 

 
html { 
 
    color: #fff; 
 
    font-size: 1em; 
 
    background: #3f51b5; 
 
    line-height: 1.4; 
 
    animation: fade 5s 
 
} 
 

 
::-moz-selection { 
 
    background: #6534ff; 
 
    text-shadow: none; 
 
} 
 

 
::selection { 
 
    background: #3f51b5; 
 
    text-shadow: none; 
 
} 
 

 
hr { 
 
    display: block; 
 
    height: 1px; 
 
    border: 0; 
 
    border-top: 1px solid #ccc; 
 
    margin: 1em 0; 
 
    padding: 0; 
 
} 
 

 
audio, 
 
canvas, 
 
iframe, 
 
img, 
 
svg, 
 
video { 
 
    vertical-align: middle; 
 
} 
 

 
fieldset { 
 
    border: 0; 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 
textarea { 
 
    resize: vertical; 
 
} 
 

 
.browserupgrade { 
 
    margin: 0.2em 0; 
 
    background: #ccc; 
 
    color: #000; 
 
    padding: 0.2em 0; 
 
} 
 

 
body { 
 
    font: 16px/26px Helvetica, Helvetica Neue, Arial; 
 
} 
 

 
h1, 
 
h2, 
 
h3, 
 
h4 { 
 
    color: #fff; 
 
    font-family: 'Montserrat', sans-serif; 
 
    line-height: normal; 
 
} 
 

 
h1 { 
 
    font-size: 25px; 
 
    letter-spacing: 3.1; 
 
} 
 

 
h2 { 
 
    font-size: 14px; 
 
    font-weight: 500; 
 
    text-align: justify; 
 
} 
 

 
h3 { 
 
    font-family: 'Space Mono', monospace; 
 
    font-weight: 400; 
 
} 
 

 
h4 { 
 
    font-size: 19px; 
 
} 
 

 
.inline { 
 
    display: inline; 
 
} 
 

 
.clear { 
 
    clear: both; 
 
    display: block; 
 
    content: ""; 
 
} 
 

 
.center { 
 
    margin: auto; 
 
    width: 50%; 
 
    padding: 10px; 
 
} 
 

 
.header-container { 
 
    height: 145px; 
 
    position: relative; 
 
} 
 

 
.header-center { 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, -50%); 
 
} 
 

 
.title { 
 
    color: white; 
 
    text-align: center; 
 
    font-size: 40px; 
 
    font-family: 'Space Mono', monospace; 
 
    font-weight: 400; 
 
    line-height: 0px; 
 
    margin-top: 35px; 
 
} 
 

 
.subTitle { 
 
    color: white; 
 
    text-align: center; 
 
    font-size: 14px; 
 
    font-family: 'Space Mono', monospace; 
 
    font-weight: 400; 
 
    font-style: italic; 
 
} 
 

 
.innercontent { 
 
    position: relative; 
 
    height: 3vw; 
 
    width: 80%; 
 
    margin: auto; 
 
    padding-top: 32.5vw; 
 
    margin-top: -28px; 
 
    margin-left: 10.0%; 
 
} 
 

 
.green { 
 
    background: #42ab9e; 
 
} 
 

 

 
/* =================== 
 
    Name Collection 
 
    =================== */ 
 

 
#nameCollection { 
 
    text-align: center; 
 
} 
 

 
#nameText { 
 
    margin-top: -28%; 
 
    margin-left: 15%; 
 
    position: absolute; 
 
    margin-left: auto; 
 
    margin-right: auto; 
 
    left: 0; 
 
    right: 0; 
 
} 
 

 
.nameSkipButton { 
 
    margin-top: 25px; 
 
    background-size: 210% 100%; 
 
    background-image: linear-gradient(to right, #963019 50%, #16174f 50%); 
 
    -webkit-transition: background-position 0.3s; 
 
    -moz-transition: background-position 0.3s; 
 
    transition: background-position 0.3s; 
 
    border: none; 
 
    font-family: 'Space Mono', monospace; 
 
    color: #fff; 
 
    padding: 10px; 
 
    font-size: 12px; 
 
} 
 

 
.nameSkipButton:hover { 
 
    background-position: 99%, 0; 
 
}
<body> 
 
    <div class="delay"> 
 
    <div class="fade-in delay"> 
 
     <div class="header-container"> 
 
     <header class="header-center"> 
 
      <h1 class="title" onclick="location.reload();" style="cursor: pointer;">COMPUTERIFY.IO</h1> 
 
      <p class="subTitle" onclick="location.reload();" style="cursor: pointer;">Alpha is just a fancy word for unfinished.</p> 
 
      <p class="subTitle"> 
 
      </h1> 
 
     </header> 
 
     </div> 
 
     <div class="main-container"> 
 
     <div id="content" class="innercontent green"> 
 
      <div id="nameCollection"> 
 
      <div id="nameText"> 
 
       <h3>Hello. I'm the PC Generator, or PCG for short. Before we get started, can I just ask...</h3> 
 
       <h1>What's your first name?</h1> 
 
       <div> 
 
       <input type="button" style="display:none" id="btnSearch" value="Search" onclick="getUserName()" /> 
 
       <span class="input input--nameCollection"> 
 
         <input class="input__field input__field--nameCollection" maxlength="19" onkeydown = "if (event.keyCode == 13) document.getElementById('btnSearch').click()" type="text" id="input-25" /> 
 
         <label class="input__label input__label--nameCollection" for="input-25"> 
 
         <span class="input__label-content input__label-content--nameCollection">First Name</span> 
 
       </label> 
 
       </span> 
 
       </div> 
 
       <input class="nameSkipButton" id="skipName" type="button" value="I don't value my name, pick one for me" onclick="confirmSkip();" /> 
 
      </div> 
 
      </div> 
 
     </div> 
 
     </div> 
 
    </div>

https://jsfiddle.net/nxyg4a9x/2/

Attached screenshots demonstrating the design when it works (on a 1920x1080 display, and how it looks on resize and on mobile.

+0

StackOverflowへようこそ、あなたの質問には[**最小限の完全で検証可能な例**](http://stackoverflow.com/help/mcve)が含まれている必要があります。 FWIWでは、ページのレイアウトに絶対配置を使用することは、サイトの応答性を向上させる場合にはお勧めできません。ビューポートのサイズが変更されたとき、要素は互いに適切に反応できません。 – hungerstar

+0

申し訳ありません、あなたが好きなら、今私はjsfiddleを作ることができますか?代わりに私のdivを配置して、より反応性にするために使用することをお勧めしたいと思いますか? –

+0

できる場合は、スニペットを作成します。推奨事項が続きます。 – hungerstar

答えて

0

することができます場合、私はflexboxを使用します。

以下はデモであり、必要に応じて調整する必要があります。

* { 
 
    box-sizing: border-box; 
 
} 
 

 
body { 
 
    display: flex; 
 
    flex-direction: column; 
 
    margin: 0; 
 
    min-height: 100vh; 
 
    overflow: hidden; 
 
    background-color: #3f51b5; 
 
} 
 

 
header, 
 
main, 
 
footer { 
 
    margin: 0 10%; // Indirect way of making element width: 80%; 
 
    border-left: 2px solid lightgray; 
 
    border-right: 2px solid lightgray; 
 
} 
 

 
header, 
 
footer { 
 
    flex-basis: 100px; 
 
} 
 

 
main { 
 
    position: relative; 
 
    flex-grow: 1; 
 
    background-color: #42ab9e; 
 
} 
 

 
main:before { 
 
    content: ''; 
 
    z-index: -1; 
 
    position: absolute; 
 
    top: -2px; 
 
    right: -100%; 
 
    bottom: -2px; 
 
    left: -100%; 
 
    display: block; 
 
    border-top: 2px solid lightgray; 
 
    border-bottom: 2px solid lightgray; 
 
}
<header></header> 
 
<main></main> 
 
<footer></footer>

  • 私たちがやった最も重要なことは、適切なスペースを埋めるためにあなたのコンテンツ領域を延伸するあなたの主な懸念事項に対処しているmainflex-grow: 1を使用しています。 flex-grow: 1は、要素に親要素の残りの領域を占有するように指示します。だから、どんなスペースがheaderfooterの高さから残されていてもファイルは上がります。 mainは(私たちは代わりにheightを使用した場合に起こったであろうものである)固定サイズをアップし終わっていないとレイアウトがたくさん存在しない場合でも、最初にビューポートを埋めるように、私たちは出発点としてbodymin-heightを使用
  • コンテンツの
  • JSを使用して回線を作成すると言われましたが、それは私にとって過酷なようですが、CSSで実現できます。線はちょうど境界線であり、唯一の明らかでない線の集合は、mainの外側に延びる水平線である。私はそれを親要素の外側に伸ばした擬似要素でこれを行いました。擬似要素の上部と下部は、境界線の太さに等しい要素を含むその外側に引っ張られます。擬似要素の左右は、常にビューポートウィンドウを少し越えて伸びるだけの幅で引き出されます(私は相対的な単位を使用してビューポートとともに拡大します)。この要素が最初に作成する水平スクロールバーを防ぐためにoverflow: hidden;bodyに使用しました。

質問がありましたらお気軽にお聞かせください。

+0

こんにちは。応答の遅れに対する謝罪。私はあなたが私に提供した上記のコードを実装するために私のサイトを書き直すのに数時間を費やしました。私は、あなたがCSSでうまくいくと言ったことに感謝します。そうですね。しかし、私はラインをアニメーション化するためにJSプラグインを使用しています。これは、コンテンツがない場合でも、行が正確な位置にとどまることを意味します。これをソートする方法はありますか、アニメーションを失う必要がありますか? 自分のコードをgitにアップロードしました。そこにはライブ版へのリンクがあります。 [Github](https://github.com/joshcawthorne/pcify.io) –

0

div、あなたはvw測定値を使用しています。これは「ビューポート幅」を表します。基本的には、これは、ボックスiの高さ

vw以外の別の単位で高さや幅のマージンなどを設定する必要があります。見て。私はあなたのフィドルをフォークして実演しました。

https://jsfiddle.net/550n5wgn/1/

+0

"height:80%;"を使用するようにコードを編集しましたが、サイズ変更時にも同じ問題が発生し、画面の80%を塗りつぶしませんか? –

+0

"computerify.io"は緑色であるのか、それとも外にあるのでしょうか?内部にある場合は、これらのヘッダーを緑色のボックスであるdivに配置する必要があります。 – kawnah

+0

外にいるはずです。 imgurリンクを見ると、私はjsfiddleから抜け出した行を見ることができますが、基本的にメニュー/ヘッダです。 –

関連する問題