当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > CSS解决链接锚点定位偏移

CSS样式表
CSS网页设计 IE8和IE7共存
CSS2 打印属性让打印HTML文档不出问题
制作网页中设计段落缩进的方法
CSS border 属性使用说明
CSS border-style 属性使用方法
CSS border-color 属性使用方法
CSS border-width 属性使用教程
CSS padding属性定义边内补白
CSS margin 属性定义边外补白
网页布局教程 掌握CSS网页布局属性
css 背景样式属性说明
span margin 设置生效
html 滚动条在IE6和IE7中兼容性问题
IE6 两个div有间隙的问题(IE 3px bug)
CSS 数字和字母将容器撑大问题解决
换个角度看页面重构中的语义化
DIY属于个人开发使用的CSS Reset
CSS 空格引起网页布局间距问题
CSS 网页制作时遇到问题的快速参考技巧
css li 去掉点的样式写法

CSS样式表 中的 CSS解决链接锚点定位偏移


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-03   浏览: 165 ::
收藏到网摘: n/a

不知道有没有人研究过这个,当点击页面的锚点连接的时候一般就跳转到特定id的元素,而实际表现的是滚动条滚动使该特定id元素对齐滚动条所处元素的顶端。

那假如我现在要求这个位置不是在顶端,而是离顶端有一定距离。

先看看我实现的方法例子:


[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

这实际上是一种掩眼法,对齐的参考点还是在元素的顶端,只是我把元素的设置了特定的border-top(padding-top也可以,margin-top不可以),锚点就可以好像真的一样偏移到目标标题文字,但是这样会使下来元素之间产生一段距离,那么我们只要设置其margin-top为负值,而且刚好为padding-top的值即可。但是还会产生一个问题,margin-top为负数值时,会强行把元素的padding-top覆盖到上一元素上面(假如你没有设置背景色是很难看出来的),那怎么办呢?很自然我们就会想到z-index的方法,单纯设置z-index没有用,要先设置其positon为relative,这样就可以了。(注意:这里假如h2设置的padding-top值超过了p的高度[包括border和padding]值会引起层叠问题,解决方法是一样的。)

实例css代码:

/*初始化,使不影响判断*/
body,h2,p{margin:0;padding:0;}
/*因为要设置z-index需要先设置一下position*/
h2,p{width:500px;position:relative;}
p{height:400px;background:#CCC;z-index:2;}
p.extra{	margin:0 0 500px;/*最后一个p需要有一定的底端margin不然滚动条不够高度,会使达不到最后一个标题*/
}
h2{	margin:-200px 0 0;/*强行把元素位置拉回原位*/	border-top:200px solid #000;/*改变目标元素对于锚点的基点位置,这里可以用padding-top,但是有不一样的问题出现,都可以很简单解决,这里不详说了*/	z-index:1;	background:#06F;
}
#anchor1{	margin:0;/*第一个元素不应该被拉回原位*/
}
span{position:fixed !important; position:absolute;top:200px;left:510px;}
#menu{ background:#CCC; position:fixed !important; position:absolute;left:510px; top:2px; }

有人可能会问为什么要这么麻烦?在这些元素的外面加一个父元素,然后把父元素移位不就成了么?这个确实是一个办法,但是假如你考虑到滚动条,你就会发现一个很难解决的问题,这里我就不介绍了。