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

2013-02-27 23:04:56 +08:00
 iEverX
是这个意思,如下

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

...
...
...

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

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

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

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

自己做也不复杂,只要框架解决好浏览器兼容问题就行了
iEverX
2013-02-28 16:18:54 +08:00
@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-03-01 09:37:53 +08:00
@iEverX "here这个div处于可以看见的屏幕的中间",首先要用js是必须的,获得浏览窗口的高度(已经margin:0 auto;就不需要获取宽度了),div的高度,算算就搞定要scroll的值啦,然后scroll搞定!
adieu
2013-03-01 10:07:57 +08:00
可以试试看用这个项目 https://github.com/flesler/jquery.scrollTo

可以实现scroll到指定div再加上一个offset的效果
fen
2013-03-01 12:37:17 +08:00
之前遇到过类似的问题,纯CSS实现:
a:target{
padding-top: 100px;
}
当然还可以用楼上诸位的 js 方法实现
http://sfau.lt/bNGtw
yqyq1020
2013-03-01 21:01:51 +08:00
我觉得用padding-top可以,用不用js看具体情况吧
ihuguowei
2013-03-02 12:33:30 +08:00
@fen 用到CSS3了,哈哈。
CSGO
2018-10-09 16:19:00 +08:00
@fen 赞!
carynux
2018-11-07 09:26:54 +08:00
@fen Thanks♪(・ω・)ノ

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

https://www.v2ex.com/t/61516

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

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

© 2021 V2EX