サイトの背景にあるスケーラブルな画像

チャレンジ:

デザイナーは、背景に画像を含むページレイアウトを描きました。 最初は、これがモニターの解像度に応じて幅が広がる背景であると判断しました。

しかし、そこにはありませんでした。 デザイナーは、これはアプリケーションウィンドウの幅と高さの両方を変更すると縮小/拡大するスケーラブルな画像であると主張しました。

事前に顧客に警告しました-写真が読み込まれ1、最大解像度である-それは1600と識別され、動作し始めました。





理論:

この機能を実装するには、絶対位置mをいじる必要があります。 背景を拡大縮小できないので、比例して拡大縮小する画像を下のレイヤーに配置する必要があり、その上に既にサイトグリッドに依存します。



概略図を図に示します。





練習する



HTML:

< div id ="page" > <br> < div id ="left" > <br> <br> <br> </ div > <br> < div id ="right" > <br> <br> </ div > <br> </ div > <br><br> < div id ="main" > <br> < div class ="foot" > <br> < ul > <br> < li >< a href ="#" title =" " > </ a ></ li > <br> < li >< a href ="#" title ="" > </ a ></ li > <br> </ ul > <br> < div class ="contacts" > <br> < span class ="copy" > Copyright; © 2009 </ span > <br> </ div > <br> </ div > <br> <!-- --> <br> < div class ="img" >< img src ="img/back_001.jpg" width ="100%" alt ="" title ="" /></ div > <br> </ div > <br> <br> * This source code was highlighted with Source Code Highlighter .





CSS:

  1. html {
  2. 高さ 100 ;
  3. }
  4. body {
  5. マージン 0; パディング 0;
  6. 高さ 100 ;
  7. }
  8. {
  9. アウトライン なし ;
  10. }
  11. / *ラッパー画像* /
  12. #main {
  13. 位置 相対 ;
  14. z-index 1 ;
  15. 高さ 100 ;
  16. }
  17. / *画像のあるレイヤー自体* /
  18. #main div .img {
  19. 表示 ブロック ;
  20. 位置 絶対 ;
  21. 0; / *画像は常にページの下部にあります* /
  22. z-index 10 ;
  23. 最小幅 1000px ;
  24. 100 ;
  25. _width expression documentElement.clientWidth || document .body .clientWidth < 1004'1004px' '100%' ;
  26. }


  1. / *著作権と下のメニューのあるレイヤー* /
  2. #main div .foot {
  3. 位置 絶対 ;
  4. 80px ;
  5. z-index 20 ;
  6. 100 ;
  7. 高さ 30px
  8. 最小幅 1000px ;
  9. _width expression documentElement.clientWidth || document .body .clientWidth < 1004'1004px' '100%' ;
  10. }
  11. #main div .foot ul {
  12. リストスタイル なし
  13. フォント 通常の 12px Verdana;
  14. マージン 14px 0 0 75px ;
  15. パディング 0;
  16. }
  17. #main div .foot ul li {
  18. 表示 インライン ;
  19. マージン 0 120px 0 0;
  20. }
  21. #main div .foot ul li a #main div .foot ul li a ビジット { color #faffcd ; }
  22. #main div .foot ul li a hover { color #163133 ; }
  23. #main div .contacts {
  24. 位置 絶対 ;
  25. 44pxtop 14px ;
  26. 360px ;
  27. フォント 通常の 11px Verdana;
  28. #faffcf ;
  29. }
  30. / * CAMサイト* /
  31. #page {
  32. 位置 絶対 ;
  33. top 0; 0;
  34. z-index 30 ;
  35. 100 ;
  36. オーバーフロー 非表示 ;
  37. マージン 0 0 300px 0;
  38. 最小幅 1000px ;
  39. _width expression documentElement.clientWidth || document .body .clientWidth < 1004'1004px' '100%' ;
  40. }
  41. #left {
  42. 290px ;
  43. フロート ;
  44. }
  45. #right {
  46. マージン 0 48px 0 370px ;
  47. 位置 相対 ;
  48. #4c4f51 ;
  49. フォント 通常の 12px / 18px Verdana;
  50. }


ie6 "_"にxackを使用するか、条件付きコメントを使用するかは好みの問題です。<br />ホリバーを配置しないでください:)



すべて問題ないようですが、画像ラッパーブロックの高さ(div id = "main")をデータdiv id = "page" + 400pxのレイヤーの高さに設定する必要があります-それ以外の場合は、サイトコンテンツと画像別の人生を生きる。 この目的のために、オンロード時にハングするJSを使用します

Js

  1. <スクリプト言語= "javascript" >
  2. 機能テスト {
  3. var h = 400 +ドキュメント。 getElementById 'page' offsetHeight ;
  4. if h > 600 {
  5. ドキュメント。 getElementById 'main' スタイル高さ = h + 'px' ;
  6. }
  7. }
  8. </スクリプト>






FFのホスティングバナーのため、IEの白いバー:)



バグ修正

私はこれのために大きなモニターを忘れていました、我々は窓の高さを計算します

function test(){<br> var client = document .compatMode== 'CSS1Compat' && !window.opera? document .documentElement.clientHeight: document .body.clientHeight; ;<br> var h = 270 + document .getElementById( 'page' ).offsetHeight;<br> if (h > client) { <br> document .getElementById( 'main' ).style.height = h + 'px' ;<br> }<br> } <br><br> * This source code was highlighted with Source Code Highlighter .







CSSの変更

<br>#main {<br> position: absolute;<br> top:0; left:0; right:0; bottom:0;<br> z-index: 1;<br> height:100%;<br>} <br><br> * This source code was highlighted with Source Code Highlighter .







誰かが私にふさわしいなら嬉しいです



All Articles