选择 select 选项时延迟滚动到 Div ID
Delayed scroll to Div ID when select option is chosen
我希望能够在从下拉列表中选择 select 选项时滚动到特定 ID。看起来它应该非常简单,但是我在这里找不到执行我想要的方式的示例。
基本上,我在页面顶部附近有一个 div
<div id="mainimage">CONTENT</div>
然后在页面下方,一个select框:
<select id="variant">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
我想做的是 - 一旦创建了 selection - 让页面向上滚动到 ID "mainimage".
如果可能的话,理想情况下这会在延迟大约半秒后发生,并且滚动流畅。
看起来应该相当简单,因为无论 selection 是什么,页面只需要滚动到相同的 ID。
这可以用 javascript 实现吗?
提前致谢。
试试这个
$('#variant').on('change',function(){
setTimeout(function(){
$('html, body').animate({
scrollTop: $("#mainimage").offset().top
}, 2000);
},500);
})
你可以试试这个。
我加了CSS滚动流畅,也可以改JS只是看动态
document.getElementById("select").onchange = function(){
if(this.selectedIndex == 0){
window.location.hash = '#section1';
} else {
window.location.hash = '#section2';
}
}
html {
scroll-behavior: smooth;
}
* {
margin-bottom: 300px;
}
#section1 {
height: 500px;
background-color: red;
color: white;
}
#section2 {
height: 500px;
background-color: blue;
color: white;
}
<select id="select" name="sections">
<option>Section 1</option>
<option>Section 2</option>
</select>
<div id="section1">
Section 1
</div>
<div id="section2">
Section 2
</div>
这样试试。我在 javascript 函数中使用了 jquery。希望对你有帮助
function myFunction() {
var x = document.getElementById("test").value;
document.getElementById("mainimage").innerHTML = "You selected: " + x;
setTimeout(function(){
$('html, body').animate({
scrollTop: $("#mainimage").offset().top
}, 2000);
},500);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id="mainimage">welcm to mainimage </p>
<p>Select a new car from the list.</p>
<!-- M using br tags since i dont have content to be placed here .. since to see scrolling we need some content to be here to fill up the page -->
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<select id="test" onchange="myFunction()">
<option value="Audi">Audi</option>
<option value="BMW">BMW</option>
<option value="Mercedes">Mercedes</option>
<option value="Volvo">Volvo</option>
</select>
<p>When you select a new car, a function is triggered which outputs the value of the selected car.</p>
我希望能够在从下拉列表中选择 select 选项时滚动到特定 ID。看起来它应该非常简单,但是我在这里找不到执行我想要的方式的示例。
基本上,我在页面顶部附近有一个 div
<div id="mainimage">CONTENT</div>
然后在页面下方,一个select框:
<select id="variant">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
我想做的是 - 一旦创建了 selection - 让页面向上滚动到 ID "mainimage".
如果可能的话,理想情况下这会在延迟大约半秒后发生,并且滚动流畅。
看起来应该相当简单,因为无论 selection 是什么,页面只需要滚动到相同的 ID。
这可以用 javascript 实现吗?
提前致谢。
试试这个
$('#variant').on('change',function(){
setTimeout(function(){
$('html, body').animate({
scrollTop: $("#mainimage").offset().top
}, 2000);
},500);
})
你可以试试这个。
我加了CSS滚动流畅,也可以改JS只是看动态
document.getElementById("select").onchange = function(){
if(this.selectedIndex == 0){
window.location.hash = '#section1';
} else {
window.location.hash = '#section2';
}
}
html {
scroll-behavior: smooth;
}
* {
margin-bottom: 300px;
}
#section1 {
height: 500px;
background-color: red;
color: white;
}
#section2 {
height: 500px;
background-color: blue;
color: white;
}
<select id="select" name="sections">
<option>Section 1</option>
<option>Section 2</option>
</select>
<div id="section1">
Section 1
</div>
<div id="section2">
Section 2
</div>
这样试试。我在 javascript 函数中使用了 jquery。希望对你有帮助
function myFunction() {
var x = document.getElementById("test").value;
document.getElementById("mainimage").innerHTML = "You selected: " + x;
setTimeout(function(){
$('html, body').animate({
scrollTop: $("#mainimage").offset().top
}, 2000);
},500);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p id="mainimage">welcm to mainimage </p>
<p>Select a new car from the list.</p>
<!-- M using br tags since i dont have content to be placed here .. since to see scrolling we need some content to be here to fill up the page -->
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<select id="test" onchange="myFunction()">
<option value="Audi">Audi</option>
<option value="BMW">BMW</option>
<option value="Mercedes">Mercedes</option>
<option value="Volvo">Volvo</option>
</select>
<p>When you select a new car, a function is triggered which outputs the value of the selected car.</p>