在保持父级固定的同时,是否可以使子div保持静态?

时间:2012-11-11 03:46:09

标签: javascript html css positioning fixed

我有一个在页面右侧对齐的列。该列必须跨越页面的整个高度,因此我的理由是将其修复。列中的项目不应该被修复。无论我玩什么项目继续滚动页面。

有没有人有办法让子div在固定的父级中保持静态,或者一种方法使列跨越页面的整个高度而不使用固定的定位?

这是CSS:

.rightCol{
   width: 28px; 
   position: fixed; 
   bottom: 0px; 
   top: 0px; 
   z-index: -1; 
   margin-left: 969px;
}
.rightColItem{
   margin-top: 95px;
   margin-left: 10px;
   position: absolute;
}​

HTML:

<div class="rightCol">
   <div class="rightColItem">
      I want this to be static and not fixed
   </div>
</div>

这是一个小提琴的链接 - &gt; http://jsfiddle.net/7hmKy/

非常感谢任何帮助!

编辑1:右对齐栏位于1000px的容器div中。

1 个答案:

答案 0 :(得分:0)

更简单的方法 - 使用更少的标记 - 是使用CSS3渐变作为页面的背景。您还可以轻松使用图像后备来支持旧版浏览器:

body {
  width: 100%;
  height: 100%;
  background: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(100%, #fa8072), color-stop(100%, transparent));
  background: -webkit-linear-gradient(right, #fa8072 200px, transparent 200px);
  background: -moz-linear-gradient(right, #fa8072 200px, transparent 200px);
  background: -o-linear-gradient(right, #fa8072 200px, transparent 200px);
  background: linear-gradient(right, #fa8072 200px, transparent 200px);
}

.sidebar {
  width: 200px;
  float: right;
}

Demo(我使用了Sass和Compass因为它们使CSS3渐变更容易保持更新。)

修改

根据你的评论,我创建了一个使用1000px宽的居中body创建的新示例(可以使用div进行一些渲染)并更改渐变以复制边框:

body {
  height: 100%;
  min-height: 2000px;
  width: 1000px;
  margin: 0 auto;
  background: -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(98.33333%, transparent), color-stop(98.33333%, #000000), color-stop(100%, transparent)), -webkit-gradient(linear, 100% 50%, 0% 50%, color-stop(0%, #000000), color-stop(83.33333%, #000000), color-stop(100%, transparent));
  background: -webkit-linear-gradient(right, transparent 295px, #000000 295px, transparent 300px), -webkit-linear-gradient(right, #000000, #000000 10px, transparent 12px);
  background: -moz-linear-gradient(right, transparent 295px, #000000 295px, transparent 300px), -moz-linear-gradient(right, #000000, #000000 10px, transparent 12px);
  background: -o-linear-gradient(right, transparent 295px, #000000 295px, transparent 300px), -o-linear-gradient(right, #000000, #000000 10px, transparent 12px);
  background: linear-gradient(right, transparent 295px, #000000 295px, transparent 300px), linear-gradient(right, #000000, #000000 10px, transparent 12px);
}

Demo