所以这是我创建的一个简单的小提琴(http://jsfiddle.net/t1xywroc/2/)来向您展示我试图复制的动画。
我对 Javascript/Jquery 还很陌生,并且只接触 HTML 和 CSS 几个月。
关于我的动画的问题是(据我所知)没有从绝对位置到固定位置的转换,我相信这会在触发动画(或转换,如果你愿意的话)后立即导致小跳跃。第二个问题是,::before 元素的内容也无法转换。我如何使用 jQuery 修复这些问题?
我试图通过主要使用 CSS 来让它工作,但我不断遇到新问题。我想使用 JavaScript 是不可避免的,这就是我需要帮助的地方。我真的很感激。
注意:不是母语人士。
超文本标记语言
<div class="section"> <div class="button"> </div></div>
CSS
CSS
.section {
height: 2000px;
width: auto;
}
.button {
position: absolute;
transform: translateX(50%);
right: 50%;
display: inline-block;
color: white;
line-height: 60px;
height: 60px;
width: auto;
padding-left: 25px;
padding-right: 25px;
background-color: blue;
border-radius: 25px;
vertical-align: middle;
top: 15rem;
}
.button::before{
content: 'Button Text';
}
.floating {
padding-left: 0px;
padding-right: 0px;
position: fixed;
right: 15px;
top: calc(100vh - 120px);
transform: none;
height: 80px;
width: 80px;
transition: all 1.5s ease-in-out;
background-color: red !important;
border: none;
border-radius: 50%;
justify-content: center;
text-align: center;
}
.floating::before{
content:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24px' height='24px' fill='white'><path d='M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z' /></svg>");
}
JS
$(document).ready(function() {
$(window).on('scroll', function() {
if ($(window).width() <= 768) {
var scrollTop = $(this).scrollTop();
$('.button').each(function() {
var topDistance = $(this).offset().top;
if ((topDistance - 30) < scrollTop) {
$(this).addClass('floating');
// Haven't put much thought into this part yet
} else if ((topDistance - 30) >= scrollTop){
}
});
}
});
});
慕森王
相关分类