`
lovnet
  • 浏览: 6768902 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

css锚点定位偏移原理兼容浏览器

阅读更多

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

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

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

function runCode(obj) { var code = obj.value; var newwin = window.open("", "", ""); newwin.opener = null; newwin.document.write(code); newwin.document.close(); }


[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; }

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

分享到:
评论

相关推荐

    JS 锚点

    4. **动态计算偏移量**:由于页面可能存在顶部导航栏、侧边栏等元素,锚点定位时需要考虑到这些元素的高度,确保目标内容显示在可见区域。 5. **兼容性处理**:对于不支持JavaScript的环境或者浏览器,我们需要提供...

    jquery锚点带动画跳转

    2. 支持平滑滚动:对于现代浏览器,可以利用`window.scrollTo()`方法的平滑滚动特性,但需注意兼容性问题。 3. 添加回调函数:`animate()`方法支持回调函数,可以在动画完成时执行特定操作,如设置高亮或者显示加载...

    jquery锚点

    确保你的代码对各种浏览器具有良好的兼容性。某些老版本的IE可能不支持`offset().top`,这时可以使用`getBoundingClientRect()`代替。另外,为提高性能,避免在大型DOM树上频繁触发事件,可以考虑使用事件委托,或者...

    css入门笔记

    1.css的概述 1.问题 HTML属性修饰有一定局限,是不太便捷 2.css的语法规范 1.使用css样式方式 1.内联样式 行内样式 特点:将css样式定义在HTML标记中 语法: 样式声明:用样式属性和值组成(属性:值;) ...

    jquery.singlePageNav.min.js

    4. **兼容性**:基于jQuery构建,因此在大部分现代浏览器中都能良好运行,同时也为老版本的浏览器提供了支持,确保广泛的应用场景。 5. **易于集成**:只需引入jQuery库和此插件,配合简单的初始化代码,即可轻松...

    jElevator jQuery导航插件.zip

    jElevator插件应该对现代浏览器有良好的兼容性,但可能在旧版IE中存在问题。为了确保广泛的设备和浏览器支持,建议进行充分的测试,并考虑使用polyfills来弥补旧浏览器对某些HTML5特性的不支持。 总的来说,...

    singlePageNav导航js文件

    5. **兼容性**:基于 jQuery 的 `singlePageNav` 插件有较好的浏览器兼容性,支持现代浏览器以及一些旧版浏览器,使得它在各种环境下都能稳定工作。 **使用步骤:** 1. **引入 jQuery**:首先,你需要在HTML文件中...

    js,jquery滚动/跳转页面到指定位置的实现思路

    【JavaScript与jQuery实现页面滚动与跳转】 在Web开发中,有时我们需要实现用户从一个页面跳转到另一个页面,并且...需要注意的是,不同的浏览器可能对某些方法有不同的支持,因此在实际应用中需要进行兼容性测试。

    jquery.singlePageNav.min.zip

    - **updateHash**: 如果设为`true`,则在滚动时会更新浏览器的URL哈希,方便用户使用浏览器历史记录。 - **beforeStart**和**afterFinish**: 回调函数,分别在滚动开始前和结束后执行。 **4. 自定义扩展** jQuery....

    jsPlumb开发入门教程(实现html5拖拽连线)借鉴.pdf

    在开始使用jsPlumb之前,需要关注浏览器的兼容性。jsPlumb支持IE6及以上的所有主流浏览器,但存在一些已知问题:例如,在IE9中,由于jQuery 1.6.x和1.7.x的SVG实现bug,可能导致鼠标停留事件无法响应;Safari 5.1上...

    使用JavaScript的菜单和子菜单

    在这个过程中,`x`和`y`表示菜单相对于锚点(anchorElement)的位置,`width`和`height`是菜单的尺寸,`offsetX`和`offsetY`是相对于鼠标指针的偏移量。 在JavaScript中,我们需要遍历`<li>`元素,检测鼠标悬停事件...

    学习Bootstrap滚动监听 附调用方法

    滚动监听可能在某些低版本的浏览器中表现不佳,因此建议使用现代浏览器。同时,对于移动设备,可能需要调整`data-offset`值以适应不同的屏幕尺寸和触摸滚动。 7. **实际应用**: Bootstrap滚动监听常用于创建响应...

    Drag:javascript拖动组件

    2. `anchor`:可能是一个DOM元素或CSS选择器,定义了拖动的锚点或起始位置。拖动组件通常会相对于这个锚点移动。 3. `{lockX : false, lockY : false}`:这是一个配置对象,控制拖动行为的限制。`lockX`和`lockY`...

Global site tag (gtag.js) - Google Analytics