rs19
rs19

Reputation: 667

positioning divs with header image

on this page, i'm trying to set a header image and then have the products sit below it, even as you re size the screen.

i have the image positioned how i want it but right now I'm using a margin to have the products sit below it. how would it make it more flexible and dynamic?

#collection-alternate #main {
    margin-top: 580px;
}

#collection-alternate #home_hero {
    width: 100%;
    position: absolute;
    margin-left: 0px;
    padding-left: 0px;
    padding-bottom: 500px;
    height: 100%;
    top: 0;
    left: 0;
    margin-top: -100px;
    z-index: -1000000;

the goal is to get the positioning like this at all window sizes enter image description here

Upvotes: 1

Views: 42

Answers (3)

art-fan-vikram
art-fan-vikram

Reputation: 315

I am bit skeptical about your approach, because this can be achieved with simple layout design, but still there is a way to achieve this, what comes to my mind first is to use vh(viewport height) unit for the margin you are using, this will adapt as per viewport height.

ex:

#collection-alternate #main {
      margin-top: 60vh;
}

This is like 60% of viewport height. Along with that you need to take care of header image adjustment, with css properties like background-size to cover or contain, or better use media queries.

Upvotes: 0

Syrion
Syrion

Reputation: 199

You can use the @media rule for every device's size, for example:

@media only screen and (min-device-width:768px) and (max-device-width : 1024px) and (orientation : portrait) {
#collection-alternate #home_hero {
    width: 100%;
    position: absolute;
    margin-left: 0px;
    padding-left: 0px;
    padding-bottom: 500px;
    height: 100%;
    top: 0;
    left: 0;
    margin-top: -100px;
    z-index: -1000000;
}
}

@media screen and (max-width:1050px), screen and (max-device-width:1050px) {
#collection-alternate #home_hero {
    width: 100%;
    position: absolute;
    margin-left: 0px;
    padding-left: 0px;
    padding-bottom: 400px;
    height: 100%;
    top: 0;
    left: 0;
    margin-top: -80px;
    z-index: -2000000;
}

}

With this you can handle all the devices !

Upvotes: 1

Praveen Kumar Purushothaman
Praveen Kumar Purushothaman

Reputation: 167162

For doing something like this, you must never use position: absolute. So, make sure you use some kind of responsive grid system too. For now, you can have this starting level code, coded using Bootstrap.

Snippet

/* activate sidebar */
$('#sidebar').affix({
  offset: {
    top: 235
  }
});

/* activate scrollspy menu */
var $body   = $(document.body);
var navHeight = $('.navbar').outerHeight(true) + 10;

$body.scrollspy({
  target: '#leftCol',
  offset: navHeight
});

/* smooth scrolling sections */
$('a[href*=#]:not([href=#])').click(function() {
  if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
    var target = $(this.hash);
    target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
    if (target.length) {
      $('html,body').animate({
        scrollTop: target.offset().top - 50
      }, 1000);
      return false;
    }
  }
});
/*
A Bootstrap 3.1 affix sidebar template
from http://bootply.com

This CSS code should follow the 'bootstrap.css'
in your HTML file.

license: MIT
author: bootply.com
*/

body {
  padding-top:50px;
}

#masthead { 
  min-height:250px;
}

#masthead h1 {
  font-size: 30px;
  line-height: 1;
  padding-top:20px;
}

#masthead .well {
  margin-top:8%;
}

@media screen and (min-width: 768px) {
  #masthead h1 {
    font-size: 50px;
  }
}

.navbar-bright {
  background-color:#111155;
  color:#fff;
}

.affix-top,.affix{
  position: static;
}

@media (min-width: 979px) {
  #sidebar.affix-top {
    position: static;
    margin-top:30px;
    width:228px;
  }

  #sidebar.affix {
    position: fixed;
    top:70px;
    width:228px;
  }
}

#sidebar li.active {
  border:0 #eee solid;
  border-right-width:5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
<nav class="navbar navbar-default navbar-fixed-top" role="banner">
  <div class="container">
    <div class="navbar-header">
      <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a href="/" class="navbar-brand">Bootply</a>
    </div>
    <nav class="collapse navbar-collapse" role="navigation">
      <ul class="nav navbar-nav">
        <li>
          <a href="#sec">Get Started</a>
        </li>
        <li>
          <a href="#sec">Edit</a>
        </li>
        <li>
          <a href="#sec">Visualize</a>
        </li>
        <li>
          <a href="#sec">Prototype</a>
        </li>
      </ul>
    </nav>
  </div>
</nav>

<div id="masthead">  
  <div class="container">
    <div class="row">
      <div class="col-md-7">
        <h1>Bootstrap Sidebar
          <p class="lead">With Affix and Scrollspy</p>
        </h1>
      </div>
      <div class="col-md-5">
        <div class="well well-lg"> 
          <div class="row">
            <div class="col-sm-6">
              <img src="//placehold.it/180x100" class="img-responsive">
            </div>
            <div class="col-sm-6">
              Some text here
            </div>
          </div>
        </div>
      </div>
    </div> 
  </div><!--/container-->
</div><!--/masthead-->

<!--main-->
<div class="container">
  <div class="row">
    <!--left-->
    <div class="col-md-3" id="leftCol">
      <ul class="nav nav-stacked" id="sidebar">
        <li><a href="#sec0">Section 0</a></li>
        <li><a href="#sec1">Section 1</a></li>
        <li><a href="#sec2">Section 2</a></li>
        <li><a href="#sec3">Section 3</a></li>
        <li><a href="#sec4">Section 4</a></li>
      </ul>
    </div><!--/left-->

    <!--right-->
    <div class="col-md-9">
      <h2 id="sec0">Content</h2>
      <p>
        At Bootply we like to build simple Bootstrap templates that utilize the code Bootstap CSS without a lot of customization. Sure you can 
        find a lot of Bootstrap themes and inspiration, but these templates tend to be heavy on customization.</p>

      <hr>
      <p>
        Rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae 
        dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia cor magni dolores 
        eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, 
        sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. 
        Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut.              
        Rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae 
        dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia cor magni dolores 
        eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, 
        sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. 
        Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut!</p>

      <h2 id="sec1">Content</h2>
      <p>
        Rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae 
        dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut.
      </p>
      <div class="row">
        <div class="col-md-6">
          <div class="panel panel-default">
            <div class="panel-heading"><h3>Hello.</h3></div>
            <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pharetra varius quam sit amet vulputate. 
              Quisque mauris augue, molestie tincidunt condimentum vitae, gravida a libero. Aenean sit amet felis 
              dolor, in sagittis nisi. Sed ac orci quis tortor imperdiet venenatis. Duis elementum auctor accumsan. 
              Aliquam in felis sit amet augue.
            </div>
          </div>
        </div>
        <div class="col-md-6">
          <div class="panel panel-default">
            <div class="panel-heading"><h3>Hello.</h3></div>
            <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pharetra varius quam sit amet vulputate. 
              Quisque mauris augue, molestie tincidunt condimentum vitae, gravida a libero. Aenean sit amet felis 
              dolor, in sagittis nisi. Sed ac orci quis tortor imperdiet venenatis. Duis elementum auctor accumsan. 
              Aliquam in felis sit amet augue.
            </div>
          </div>
        </div>  
      </div>

      <hr>

      <h2 id="sec2">Section 2</h2>
      <p>
        Rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae 
        dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia cor magni dolores 
        eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, 
        sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. 
        Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut!
      </p>
      <div class="row">
        <div class="col-md-4"><img src="//placehold.it/300x300" class="img-responsive"></div>
        <div class="col-md-4"><img src="//placehold.it/300x300" class="img-responsive"></div>
        <div class="col-md-4"><img src="//placehold.it/300x300" class="img-responsive"></div>
      </div>

      <hr>

      <h2 id="sec3">Section 3</h2>
      <p>
        Images are responsive sed @mdo but sum are more fun peratis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, 
        totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae 
        dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia cor magni dolores 
        eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, 
        sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. 
        Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut..</p>
      <p>
        Fos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, 
        sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. 
        Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut..</p>


      <h2 id="sec4">Section 4</h2>
      <p>
        Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, 
        totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae 
        dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia cor magni dolores 
        eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, 
        sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. 
        Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut.</p>

      <hr>
      <h4><a href="http://www.bootply.com/Gygh9swISB">Edit on Bootply</a></h4>
      <hr>

    </div><!--/right-->
  </div><!--/row-->
</div><!--/container-->

Try to use the above snippet both here and full screen and see how you can modify it.

Upvotes: 1

Related Questions