2014-09-11 72 views
1

我有一個固定寬度的div容器和裏面的一些元素,它們使用position:absolute來放置。我有四個圖層來創建具有斜面圖像和「開放」效果的效果。如何使幾個絕對定位元素響應

現在,這是工作,你可以看到我在下面的jsfiddle。 (jsfiddle - working Example)問題是,我怎麼能做出這個響應。我的意思是不是移動的,但是對於一個100%寬度的佈局,其中窗口可以調整大小和下列要求得到滿足:

  • 「測試」文本和開啓按鈕的三棱總是居中在中心
  • 圖像左側和右側可以從左側被板缺(對於左畫面)區域和右(右用畫面)

我試圖與背景尺寸的工作:蓋,但是當我調整瀏覽器窗口大小時,它不能按預期工作。

這裏是我的代碼(HTML):

<!doctype html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <title>Test</title> 
     <meta name="description" content=""> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 

     <link rel="stylesheet" href="test.css"> 
     <script src="jquery-1.11.1.js"></script> 
    </head> 
    <body> 
     <div id="slider"> 
      <div class="img left"></div> 
      <div class="img right"></div> 
      <div class="text"> 
       <h1>Test</h1> 
       <a href="#">open</a> 
      </div> 
      <div class="textLeft"> 
       Duis at tincidunt erat. Nullam tellus mi, aliquam ultricies nisi ac, porttitor aliquam nulla. Donec scelerisque magna euismod purus imperdiet sollicitudin. Etiam vel lacus ex. Duis tempus urna eu volutpat tristique. Aenean vel ante pulvinar, sodales magna id, mollis urna. Duis at tincidunt erat. Nullam tellus mi, aliquam ultricies nisi ac, porttitor aliquam nulla. Donec scelerisque magna euismod purus imperdiet sollicitudin. Etiam vel lacus ex. Duis tempus urna eu volutpat tristique. Aenean vel ante pulvinar, sodales magna id, mollis urna. 
      </div> 
      <div class="textRight"> 
       Duis at tincidunt erat. Nullam tellus mi, aliquam ultricies nisi ac, porttitor aliquam nulla. Donec scelerisque magna euismod purus imperdiet sollicitudin. Etiam vel lacus ex. Duis tempus urna eu volutpat tristique. Aenean vel ante pulvinar, sodales magna id, mollis urna. Duis at tincidunt erat. Nullam tellus mi, aliquam ultricies nisi ac, porttitor aliquam nulla. Donec scelerisque magna euismod purus imperdiet sollicitudin. Etiam vel lacus ex. Duis tempus urna eu volutpat tristique. Aenean vel ante pulvinar, sodales magna id, mollis urna. 
      </div> 
     </div> 
     <script> 
      $("a").click(function() { 
       $(".left").animate({ 
         right: "850px", 
         }, 1000); 
       $(".right").animate({ 
         left: "850px", 
         }, 1000); 
      }); 
     </script> 
    </body> 
</html> 

CSS:

#slider{ 
    background-color: black; 
    position: relative; 
    height: 500px; 
    width: 1000px; 
    overflow: hidden; 
} 

#slider .img.left, 
#slider .img.right{ 
    height: 500px; 
    position: absolute; 
    top: 0; 
} 

#slider .img.left{ 
    background-image: url(imgLeft.png); 
    right: 410px; 
    width: 590px; 
    z-index: 3; 
} 

#slider .img.right{ 
    background-image: url(imgRight.png); 
    left: 250px; 
    width: 750px; 
    z-index: 2; 
} 

#slider .img.left.open{ 
    right: 750px; 
} 

#slider .img.right.open{ 
    left: 750px; 
} 

#slider .text{ 
    color: white; 
    position: absolute; 
    bottom: 45px; 
    height: 100px; 
    width: 200px; 
    left: 45%; 
    z-index: 4; 
} 

#slider .textLeft, 
#slider .textRight{ 
    position: absolute; 
    color: white; 
    height: 300px; 
    width: 300px; 
    z-index: 1; 
} 

#slider .textLeft{ 
    right: 100px; 
    top: 100px; 
} 

#slider .textRight{ 
    left: 100px; 
    top: 100px; 
} 

a{ 
    color: white; 
} 

因爲它更易於編輯和提出建議,我創建了一個的jsfiddle:

jsfiddle - working Example

+2

只要不使用固定的像素值,使用百分比。一個簡單的例子 - http://codepen.io/Paulie-D/pen/dgcha – 2014-09-11 09:36:24

+1

與問題無關,但你可以使用':before'和':after'而不是'.img.left'和' img.right'。只是一個小優化,但清理你的標記。根據您的瀏覽器要求,您也可以使用CSS動畫(比js更平滑)。如果不支持css動畫,您總是可以使用Modernizr檢查支持並回退到當前的方法。這裏有一個CSS動畫和僞元素的小提琴:http://jsfiddle.net/2y17p1Lu/3/ – 2014-09-11 09:45:25

回答

-1

最簡單的方法是使用不同的css文件。

<link rel="stylesheet" type="text/css" href="style.css" media="screen and (max-width: 300px)" /> 

然後你就可以輕鬆設置你的屏幕寬度: enter link description here

這裏是一個很好的鏈接,屏幕分辨率。

0

我對JS小提琴刺傷,並得到您進一步的很多..

它不是完全完成,因爲你需要決定如何處理第二段做時,它包裹在中屏幕的寬度。

它通過百分比寬度和浮動的組合工作。

的主要問題與你的版本是兩件事情:

所有的絕對定位。

使用背景圖像。

來響應,圖像理想情況下應該是內嵌瀏覽器會根據屏幕的寬度,只要它們的寬度和高度屬性沒有宣佈調整它們的大小。

要完成這一關,你需要決定如何處理第二款做,並開始尋找在媒體查詢更改了一下週圍的東西,當你到小屏幕尺寸。

我添加了畫面的示例查詢小於480像素,並提出了一些CSS樣式所以它幾乎沒有。(但是文字是蠅頭!)

希望它能幫助,

吧祝你好運,享受!:

x 

http://jsfiddle.net/h0rhay/2y17p1Lu/6/ 
相關問題