最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to scale a background image without losing proportions - Stack Overflow

programmeradmin3浏览0评论

I want to create a web page background image that fills the entire background, without distorting the image and changing it's proportions.

You can see a great implementation of this on LaunchRock's pages, and on their homepage, for example.

I saw this question on StackOverflow however if you play around with what that produces you'll see that the background image is 100% height and 100% width which means that the original proportions of the photo are not maintained and the image is stretched.

Notice in the LaunchRock example that if you resize your browser window the image grows proportionally and always fills the entire window (no matter what size window or background image they use).

If the browser window is not wide enough it crops the sides of the background image (keeping the image centered and cropping the left and right sides) and if the window is not high enough it crops the bottom part of the background image.

No matter what size the browser window is, the image height/width ratio is maintained and the entire background is filled.

I'm guess this can't be done with pure CSS, some JavaScript may be needed. Any ideas?

Thanks

I want to create a web page background image that fills the entire background, without distorting the image and changing it's proportions.

You can see a great implementation of this on LaunchRock's pages, and on their homepage, for example.

I saw this question on StackOverflow however if you play around with what that produces you'll see that the background image is 100% height and 100% width which means that the original proportions of the photo are not maintained and the image is stretched.

Notice in the LaunchRock example that if you resize your browser window the image grows proportionally and always fills the entire window (no matter what size window or background image they use).

If the browser window is not wide enough it crops the sides of the background image (keeping the image centered and cropping the left and right sides) and if the window is not high enough it crops the bottom part of the background image.

No matter what size the browser window is, the image height/width ratio is maintained and the entire background is filled.

I'm guess this can't be done with pure CSS, some JavaScript may be needed. Any ideas?

Thanks

Share edited May 23, 2017 at 12:12 CommunityBot 11 silver badge asked Jun 26, 2012 at 10:40 GuyGuy 3173 silver badges16 bronze badges 1
  • Please search before posting stackoverflow./questions/7259084/… – SVS Commented Jun 26, 2012 at 10:46
Add a ment  | 

4 Answers 4

Reset to default 2

It is done with CSS only, like this:

body {    
    background: black url(/images/back.jpg) no-repeat top center fixed;
    -webkit-background-size: cover;
    background-size: cover;
}

Things that make it possible:

  • CSS property background-size set to cover and its vendor prefixed versions
  • using a background-image that fades to black on the sides
  • position set to top center
  • using the fixed property

If you don't mind using jQuery, you might give http://srobbin./jquery-plugins/backstretch/ a try.

Example: http://jsfiddle/rPhLa/

You have to set:

 html,body{ height:100%; width:100%; }

So they occupy the whole screen, then for the background:

body { background-image: url(http://launchrock./images/back.jpg); background-repeat: no-repeat; background-position:center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; }​

the LaunchRock's page, that you spent as example, uses a CCS3 property: background-size. This is the property that do the 'magic' of scale.

More about background-size: http://www.css3.info/preview/background-size/

  • Don't forget to see the browser support for this property.

It is quite likely that this can be done with javascript and even just using CSS2. Sorry, I don't have an example in the hands now.

发布评论

评论列表(0)

  1. 暂无评论