vueスクロールテスト
by dxokoya
HTML
<script src="https://cdn.jsdelivr.net/npm/vue-scrollto"></script>
<div id="app">
<div class="button-wrap">
<a class="button" @click="foo()">safari対応</a>
<a class="button" @click="bar()">safari非対応</a>
</div>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<p id="message">message</p>
</div>
SCSS
.button-wrap {
display: flex;
gap: 10px;
}
.button {
display: flex;
justify-content: center;
align-items: center;
padding: 10px;
width: 100px;
height: 30px;
background: #ccc;
}
ul {
padding: 0;
li {
height: 200px;
width: 100%;
list-style: none;
&:nth-of-type(even) {
background: #ccc;
}
}
}
Vue
new Vue({
el: '#app',
data: {
},
methods: {
foo() {
alert("safariでも滑らかに動きます");
this.$nextTick(() => this.safariWork());
},
bar() {
alert("safariでは滑らかに動きません");
this.$nextTick(() => this.safariNotWork());
},
safariWork() {
this.$scrollTo('#message', 700, { easing: 'ease-out' });
},
safariNotWork() {
const element = document.getElementById('message');
element.scrollIntoView({
behavior: "smooth"
});
}
}
})