HTML 和 jQuery 锚定

发布于 2024-09-03 19:24:17 字数 337 浏览 2 评论 0原文

每当 url 包含 div id 时,当 URL 具有以下内容时,它显然会转到 div:

http://domain.com.faq.php#1

<div id="1">Bla bla bla</div>

但我喜欢的是与 Stackoverflow 相同的功能是,当您单击消息中的答案时,它将向下滚动到页面并对答案具有淡出效果。

我该怎么做?

Whenever the url contains the div id, it would obviously go down to the div when the URL has:

http://domain.com.faq.php#1

<div id="1">Bla bla bla</div>

But what I like is to have same feature of Stackoverflow, when you click on an answer in your messages, it will scroll down to the page and has that fadeOut effect on the answer.

How do I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

私藏温柔 2024-09-10 19:24:17

据我所知,到有效锚点目标的动画不能在页面加载时进行动画处理,因为浏览器默认将用户向下滚动页面到锚点。对于页内链接,您可以劫持锚链接并设置动画。

但是,在像 SO 这样的新页面加载时,您会注意到页面不会向下动画,而只是向下滚动,尽管该框确实会动画颜色。这就是您在 jQuery 中可以做到的方法。如果您想为背景设置动画,请务必包含 color 插件-颜色。

<script src="js/jquery.color.js"> </script>
<script type="text/javascript">
   $(window).load(function(){
        var hash = window.location.hash;
        if(hash){
          $(hash).css('backgroundColor', '#AA0000')
                 .animate({backgroundColor: '#FFFFFF'}, 200);
        }
   });
</script>   

您可以使用 DOMReady 代替 load,但它可能会过早尝试运行动画,而用户会错过它。

如果您只想使用特定类对 div 进行动画处理,则可以在查找中添加过滤器:

$(hash).filter('.my_div').css ...

Animation to a valid anchor destination cannot be animated on page load that I know of since the browsers will default to scrolling the user down the page to the anchor. For in-page links, you can hijack the anchor links and animate.

However, on new page loads like on SO, you will notice the page does not animate down, but just scrolls down, though the box does animate a color. This is how you could do it in jQuery. Be sure to include the color plugin if you want to animate background-colors.

<script src="js/jquery.color.js"> </script>
<script type="text/javascript">
   $(window).load(function(){
        var hash = window.location.hash;
        if(hash){
          $(hash).css('backgroundColor', '#AA0000')
                 .animate({backgroundColor: '#FFFFFF'}, 200);
        }
   });
</script>   

You can use DOMReady instead of load, but it might try to run your animation too soon, and the user will miss it.

If you only wanted to animate div's with a specific class, you can add a filter to your find:

$(hash).filter('.my_div').css ...
摘星┃星的人 2024-09-10 19:24:17

用途:

event.preventDefault(); 

例如:

$('li.share a').click(function(ev) {
        ev.preventDefault();
        var link = ev.target.href;
        var id = link.substring(link.indexOf("#") + 1);
        $('#' + id).fadeOut();
    });

Use:

event.preventDefault(); 

For example:

$('li.share a').click(function(ev) {
        ev.preventDefault();
        var link = ev.target.href;
        var id = link.substring(link.indexOf("#") + 1);
        $('#' + id).fadeOut();
    });
命比纸薄 2024-09-10 19:24:17

StackOverflow 也使用锚点。您当前正在阅读的帖子是:
HTML 和 jQuery 锚定

这只是


现在,要获得淡入淡出效果[在没有框架的纯 JS 中]

设置 div.style.opacity = 0;

var intervalId = setInterval( function(){
  if( (div.style.opacity+= 0.1) >= 1) clearInterval(intervalId);
}, millisecondInterval);

clearInterval 部分不是必需的,因为一旦不透明度超过 1,浏览器将不会以不同的方式呈现[尽管数字不断增加...]

StackOverflow uses anchors as well. The post you're currently reading is:
HTML and jQuery anchoring

It's simply <a name="anchorName"></a>
at the address bar: [urlToPage]#anchorName


Now, to get the fade effect [in pure JS w/o frameworks]

Set the div.style.opacity = 0;

var intervalId = setInterval( function(){
  if( (div.style.opacity+= 0.1) >= 1) clearInterval(intervalId);
}, millisecondInterval);

The clearInterval part isn't necessary, since once opacity goes above 1, browser won't render differently [although the number keeps adding...]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文