使用html滚动到特定元素

使用html滚动到特定元素,html,css,Html,Css,在html中是否有一种方法可以使用html使网页滚动到特定的元素 是的,你用这个 <a href="#google"></a> <div id="google"></div> 是的,您可以通过指定元素的id属性,然后使用哈希链接到它来使用 例如(摘自W3规范): 您可以在中阅读更多关于此的信息。 …在文件后面 第二节 …在文件后面 请参阅上文 更多细节。 通过在锚定标记中使用href属性,您可以使用元素id名称前面的#将页面滚动到特定元素 此

在html中是否有一种方法可以使用html使网页滚动到特定的元素

是的,你用这个

<a href="#google"></a>

<div id="google"></div>
是的,您可以通过指定元素的
id
属性,然后使用哈希链接到它来使用

例如(摘自W3规范):

您可以在中阅读更多关于此的信息。
…在文件后面
第二节
…在文件后面

请参阅上文 更多细节。


通过在锚定标记中使用href属性,您可以使用元素id名称前面的
#
将页面滚动到特定元素

此外,这里还有一些jQuery/JS,它们将完成将变量放入div中的任务

<html>
<body>

Click <a href="#myContent">here</a> to scroll to the myContent section.

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

<script>
    var myClassName = "foo";

    $(function() {
        $("#myContent").addClass(myClassName);
    });
</script>

</body>

单击以滚动到myContent部分。
...
var myClassName=“foo”;
$(函数(){
$(“#myContent”).addClass(myClassName);
});

您应该提到是希望它平滑滚动还是简单地跳转到某个元素。 跳转很简单&只需使用HTML或Javascript即可完成。最简单的方法是使用anchor。限制是您要滚动到的每个元素都必须具有
id
。一个副作用是
#theID
将附加到URL

<a href="#scroll">Go to Title</a>
<div>
  <h1 id="scroll">Title</h1>
</div>

最后,如果您需要平滑滚动,您应该查看jQuery的or。(注意:可能还有更多)。

如果使用,可以将以下内容添加到javascript中:

$('.smooth-goto').on('click', function() {  
    $('html, body').animate({scrollTop: $(this.hash).offset().top - 50}, 1000);
    return false;
});
另外,也不要忘记将此类添加到a标记中,如下所示:

<a href="#id-of-element" class="smooth-goto">Text</a>


/*CSS*/
html{滚动行为:平滑;}
此外,您可以将html{scroll behavior:smooth;}添加到CSS中以创建平滑滚动。


1.
2.
3.
*{填充:0;边距:0;}
导航{
背景:黑色;
位置:固定;
}
a{
颜色:#fff;
显示:内联块;
填充:0.1em;
高度:50px;
}
部分{
背景:红色;
高度:100vh;
文本对齐:居中;
字号:5em;
}
html{
滚动行为:平滑;
}
#第一节{
背景颜色:绿色;
}
#第三节{
背景颜色:黄色;
}
$(文档)。在('click','a[href^=“#”]”上,函数(事件){
event.preventDefault();
$('html,body')。设置动画({
scrollTop:$($.attr(此'href')).offset().top
}, 500);
});

2020年。现在我们有了
element.scrollIntoView()
方法来滚动到特定的元素

HTML


好的是,我们可以从任何onclick/event启动,而不必局限于tag。

以上答案都是正确的。但是,代码可能不会给出预期的结果。请允许我补充一点,解释为什么这一点非常重要

确实,将scroll behavior:smooth添加到html元素可以使整个页面平滑滚动。但是,并非所有的web浏览器都支持使用HTML平滑滚动

因此,如果您想创建一个所有用户都可以访问的网站,不管他们的web浏览器如何,强烈建议使用JavaScript或JavaScript库(如jQuery)来创建一个适用于所有浏览器的解决方案

否则,一些用户可能无法享受网站/平台的平滑滚动

我可以举一个更简单的例子说明它如何适用


$(文档).ready(函数(){
//添加平滑滚动到所有链接
$(“a”)。在('click',函数(事件){
//在覆盖默认行为之前,请确保this.hash具有值
如果(this.hash!==“”){
//防止默认锚点单击行为
event.preventDefault();
//存储散列
var hash=this.hash;
//使用jQuery的animate()方法添加平滑页面滚动
//可选数字(800)指定滚动到指定区域所需的毫秒数
$('html,body')。设置动画({
scrollTop:$(散列).offset().top
},800,函数(){
//完成滚动后,将哈希(#)添加到URL(默认单击行为)
window.location.hash=散列;
});
}//如果结束,则结束
});
});

#第一节{
高度:600px;
背景颜色:粉红色;
}
#第2节{
高度:600px;
背景颜色:黄色;
}

平滑滚动
第一节
点击链接查看“平滑”滚动效果

注意:删除滚动行为属性可删除平滑滚动

第二节
如果您想使用插件,您可以完成这项工作。它执行实际的滚动,而不仅仅是跳跃。您甚至可以指定滚动的速度/动量。它还允许您设置一个菜单(要滚动到的链接列表),根据要滚动到的锚是否在视口中以及其他有用的功能更改它们的CSS


有一个演示,让我们的公司站点也是一个.< /p> 我通过这样做来工作,认为首页是你想滚动到的元素:

document.getElementById("top-page").scrollTo({ behavior: "smooth", top: 0 });

谢谢,我很感激,但是我们可以在div标签中放一个变量吗?您可以使用js在div标签中放一个变量。您也可以使用PHP.A变量?你能解释一下吗?是的,如果这就是你想要的,尼古拉斯在回答你的问题时是怎么说的。不过如果你能访问PHP,我建议你使用它。如果你想创建一个搜索查询来跳转到页面中的某个元素,你只需要一些小的JSUpdated my post,其中有一个使用JS将变量放入div的示例。你是专门询问HTML从而排除Javascript吗?如果有id就可以了,一个div头或一个名字在发送到浏览器之前植入到页面中。但是,如果这里没有任何条目标记,而您只想直接引用特定的文本,您可以这样做吗?是否可以在没有用户干预的情况下从外部触发浏览器的搜索功能(Ctrl+F)?Check ref:仔细检查浏览器兼容性表
$('.smooth-goto').on('click', function() {  
    $('html, body').animate({scrollTop: $(this.hash).offset().top - 50}, 1000);
    return false;
});
<a href="#id-of-element" class="smooth-goto">Text</a>
<!-- HTML -->
<a href="#google"></a>
<div id="google"></div>

/*CSS*/
html { scroll-behavior: smooth; } 
<div id="my_element">
</div>
var my_element = document.getElementById("my_element");

my_element.scrollIntoView({
  behavior: "smooth",
  block: "start",
  inline: "nearest"
});
document.getElementById("top-page").scrollTo({ behavior: "smooth", top: 0 });