网页锚点,跳到特定位置,比如距离屏幕顶端100px

2013 年 2 月 27 日
 iEverX
是这个意思,如下

<div id="here">...</div>

...
...
...

<a href="#here">Go</a>

现在想做的是,点击链接的时候,跳到了here这个div,但是希望这个div不是处于屏幕的最顶段,而是处于某个特定位置,比如距离屏幕顶端100px或者处于屏幕的中间

有可能做到吗?
不用js能做到吗?
如果用js应该怎么写?

多谢
18090 次点击
所在节点    程序员
12 条回复
leofml
2013 年 2 月 27 日
window.scrollTo(0,100)
window.scrollTo(0,document.body.scrollHeight/2)
iEverX
2013 年 2 月 28 日
@leofml
不是这个意思,我是想让 here这个div处于可以看见的屏幕的中间,而不是把整个网页
ant_sz
2013 年 2 月 28 日
把这个锚点放到你想处于屏幕中间位置的地方向上100px的地方…
NemoAlex
2013 年 2 月 28 日
单纯的 HTML 无法做到
可以用 JS 通过获取元素高度和页面可见区域高度来算出来
例如 Mootools 有库可以实现
http://mootools.net/docs/more/Fx/Fx.Scroll#Fx-Scroll:toElementCenter

自己做也不复杂,只要框架解决好浏览器兼容问题就行了
iEverX
2013 年 2 月 28 日
@leofml
@ant_sz
@NemoAlex
3ks.
我的解决方法是,计算除这个div的绝对位置top,是从 http://www.ruanyifeng.com/blog/2009/09/find_element_s_position_using_javascript.html 这个链接上看到的
然后window.scroll(0, top - 100);

@ant_sz 所说的也是一种解决方案,但是会引入没有多余的节点,个人不是很喜欢
Part
2013 年 3 月 1 日
@iEverX "here这个div处于可以看见的屏幕的中间",首先要用js是必须的,获得浏览窗口的高度(已经margin:0 auto;就不需要获取宽度了),div的高度,算算就搞定要scroll的值啦,然后scroll搞定!
adieu
2013 年 3 月 1 日
可以试试看用这个项目 https://github.com/flesler/jquery.scrollTo

可以实现scroll到指定div再加上一个offset的效果
fen
2013 年 3 月 1 日
之前遇到过类似的问题,纯CSS实现:
a:target{
padding-top: 100px;
}
当然还可以用楼上诸位的 js 方法实现
http://sfau.lt/bNGtw
yqyq1020
2013 年 3 月 1 日
我觉得用padding-top可以,用不用js看具体情况吧
ihuguowei
2013 年 3 月 2 日
@fen 用到CSS3了,哈哈。
CSGO
2018 年 10 月 9 日
@fen 赞!
carynux
2018 年 11 月 7 日
@fen Thanks♪(・ω・)ノ

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/61516

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX