网页锚点,跳到特定位置,比如距离屏幕顶端100px - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
iEverX
V2EX    程序员

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

  •  
  •   iEverX
    iEverX 2013-02-27 23:04:56 +08:00 17566 次点击
    这是一个创建于 4611 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是这个意思,如下

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

    ...
    ...
    ...

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

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

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

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

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

    可以实现scroll到指定div再加上一个offset的效果
    fen
        8
    fen  
       2013-03-01 12:37:17 +08:00
    之前遇到过类似的问题,纯CSS实现:
    a:target{
    padding-top: 100px;
    }
    当然还可以用楼上诸位的 js 方法实现
    http://sfau.lt/bNGtw
    yqyq1020
        9
    yqyq1020  
       2013-03-01 21:01:51 +08:00 via Android
    我觉得用padding-top可以,用不用js看具体情况吧
    ihuguowei
        10
    ihuguowei  
       2013-03-02 12:33:30 +08:00
    @fen 用到CSS3了,哈哈。
    CSGO
        11
    CSGO  
       2018-10-09 16:19:00 +08:00
    @fen 赞!
    carynux
        12
    carynux  
       2018-11-07 09:26:54 +08:00
    @fen Thanks(ω)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2979 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:19 PVG 22:19 LAX 07:19 JFK 10:19
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86