Full-screen responsive background image

I am very new to Front-end development and Foundation.

I am trying to get <div> to be a full screen image that scales down responsively.

Can anyone tell me what I am doing wrong? It is scaling properly, but is not showing the full image. I also wanted the <div> to sit above it on a mobile device – is that possible?

The HTML:

<!-- MAIN HEADER --> <div> <div> <div> <h1>BleepBleeps</h1> <h3>A family of little friends<br>that make parenting easier</h3> </div> <!-- END large-6 large-offset-6 columns --> </div><!-- END ROW --> </div><!-- END MAIN-HEADER --> 

The CSS:

.main-header { background-image: url(../img/bb-background2.png); background-repeat: no-repeat; background-position: center; background-size: cover; width: 100%; height: 100%; } h1.logo { text-indent: -9999px; height:115px; margin-top: 10%; } 
3

15 Answers

//HTML <img src="images/bg.jpg" alt=""> //CSS #bg { position: fixed; top: 0; left: 0; /* Preserve aspet ratio */ min-width: 100%; min-height: 100%; } 

OR

img.bg { /* Set rules to fill background */ min-height: 100%; min-width: 1024px; /* Set up proportionate scaling */ width: 100%; height: auto; /* Set up positioning */ position: fixed; top: 0; left: 0; } @media screen and (max-width: 1024px) { /* Specific to this particular image */ img.bg { left: 50%; margin-left: -512px; /* 50% */ } } 

OR

//HTML <img src="images/bg.jpg" alt=""> //CSS #bg { position: fixed; top: 0; left: 0; } .bgwidth { width: 100%; } .bgheight { height: 100%; } //jQuery $(window).load(function() { var theWindow = $(window), $bg = $("#bg"), aspectRatio = $bg.width() / $bg.height(); function resizeBg() { if ( (theWindow.width() / theWindow.height()) < aspectRatio ) { $bg .removeClass() .addClass('bgheight'); } else { $bg .removeClass() .addClass('bgwidth'); } } theWindow.resize(resizeBg).trigger("resize"); }); 
5
<style type="text/css"> html { background: url(images/bg.jpg) no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; } </style> 
5

for Full-screen responsive background image

set css height ( height:100vh )

example :

.main-header { background-image: url(../img/bb-background2.png); background-repeat: no-repeat; background-position: center; background-size: cover; width: 100%; height:100vh; /* responsive height */ } 
1

One hint about the "background-size: cover" solution, you have to put it after "background" definition, otherwise it won't work, for example this won't work:

html, body { height: 100%; background-size: cover; background:url("") no-repeat center center fixed; } 

I personally dont recommend to apply style on HTML tag, it might have after effects somewhere later part of the development.

so i personally suggest to apply background-image property to the body tag.

body{ width:100%; height: 100%; background-image: url("./images/bg.jpg"); background-position: center; background-size: 100% 100%; background-repeat: no-repeat; } 

This simple trick solved my problem. this works for most of the screens larger/smaller ones.

there are so many ways to do it, i found this the simpler with minimum after effects

I had this same problem with my pre-launch site EnGrip. I went live with this issue. But after a few trials finally this has worked for me:

background-size: cover; background-repeat: no-repeat; position: fixed; background-attachment: scroll; background-position: 50% 50%; top: 0; right: 0; bottom: 0; left: 0; content: ""; z-index: 0; 

pure CSS solution. I don't have any JS/JQuery fix over here. Even am new to this UI development. Just thought I would share a working solution since I read this thread yesterday.

1

Try this:

<img src="images/background.jpg"> 

Backstretch

Check out this one-liner plugin that scales a background image responsively.

All you need to do is:

1. Include the library:

<script type="text/javascript" src=""></script> 

2. Call the method:

$.backstretch(""); 

I used it for a simple "under construction website" site I had and it worked perfectly.

2

You can also make full screen banner section without use of JavaScript, pure css based responsive full screen banner section , using height: 100vh; in banner main div, here have live example for this

#bannersection { position: relative; display: table; width: 100%; background: rgba(99,214,250,1); height: 100vh; } 

I have done this javascript function: it fix your background image to your screen size in base at the most significative dimension (width od height) without change the image aspect ratio.

<script language="Javascript"> function FixBackgroundToScreen() { bgImg = new Image(); bgImg.src = document.body.background; if ((bgImg.height / window.innerHeight) < (bgImg.width / window.innerWidth)) document.body.style.backgroundSize = "auto 100%"; else document.body.style.backgroundSize = "100% auto"; }; </script> 

This function is the only think you need. It must be called with the window.onresize event and from the body.onload event. The image must be background-repeat: no-repeat; background-attachment: fixed;

<script language="Javascript"> window.onresize=function(){FixBackgroundToScreen();}; </script> <body onload="FixBackgroundToScreen();"> 

You can see the function in my site

Sorry for my english... Andrea ;-)

Simple fullscreen and centered image

jQuery(function($) { function resizeImage() { $('.img-fullscreen').each(function () { var $imgWrp = $(this); $('img', this).each(function () { var imgW = $(this)[0].width, imgH = $(this)[0].height; $(this).removeClass(); $imgWrp.css({ width: $(window).width(), height: $(window).height() }); imgW / imgH < $(window).width() / $(window).height() ? $(this).addClass('full-width') : $(this).addClass('full-height'); }); }); } window.onload = function () { resizeImage(); }; window.onresize = function () { setTimeout(resizeImage, 300); }; resizeImage(); });
/* * Hide scrollbars */ #wrapper { overflow: hidden; } /* * Basic styles */ .img-fullscreen { position: relative; overflow: hidden; } .img-fullscreen img { vertical-align: middle; position: absolute; display: table; margin: auto; height: auto; width: auto; bottom: -100%; right: -100%; left: -100%; top: -100%; } .img-fullscreen .full-width { width: 100%; } .img-fullscreen .full-height { height: 100%; }
<script src=""></script> <div> <div> <img src="" alt=""/> </div> </div>
For the full-screen responsive background image cover <div> </div> CSS .full-screen{ background-image: url("img_girl.jpg"); height: 100%; background-position: center; background-repeat: no-repeat; background-size: cover; } 

I would say, in your layout file give a

<div></div> 

and then in your css do

#background { position: fixed; top: 50%; left: 50%; min-width: 100%; min-height: 100%; width: auto; height: auto; z-index: -100; -webkit-transform: translateX(-50%) translateY(-50%); transform: translateX(-50%) translateY(-50%); background: image-url('background.png') no-repeat; background-size: cover; } 

And be sure to have the background image in your app/assets/images and also change the

background: image-url('background.png') no-repeat; 

'background.png' to your own background pic.

This worked for me, so posting this.

.my-container { position: relative; background: #696969; overflow: hidden; } .my-container:before { content: ' '; display: block; position: absolute; left: 0; top: 0; width: 100%; height: 100%; z-index: 1; opacity: 0.6; background-image: url('); background-repeat: no-repeat; background-position: 50% 0; -ms-background-size: cover; -o-background-size: cover; -moz-background-size: cover; -webkit-background-size: cover; background-size: cover; } 

By useing this code below :

.classname{ background-image: url(images/paper.jpg); background-position: center; background-size: cover; background-repeat: no-repeat; } 

Hope it works. Thanks

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like