2014-09-11 66 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/ 
相关问题