gpt4 book ai didi

javascript - 两个圆圈应该跟随光标——一大一小(有延迟)

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:05 24 4
gpt4 key购买 nike

我现在在一些网站上看到了这种趋势,默认光标被新光标取代——在许多情况下是圆圈

这些光标是交互式的——交互式是指当悬停在 a-tag 上时它会改变大小和颜色。

在此网站上:https://en.leviev-group.com/你可以看到我想要的光标效果。

我曾尝试制作一支笔,但它无法正常工作:https://codepen.io/anon/pen/VQwdBv?q=cursor&limit=all&type=type-pens

<div id="cursor">
<div id="circle-big"></div>
<div id="circle"></div>
</div>

我希望中间的圆圈是光标,周围的大圆圈延迟跟随光标。当悬停 a-tags 时,它应该环绕 a-tag,类似于网站上的示例。如果可能,使用 javascript 和 css 制作

这怎么可能?

最佳答案

你已经差不多了,只需让两个元素的行为相同,然后通过在小元素上添加过渡,你将使其变慢并产生跟随效果。

$('body').mouseover(function() {
$(this).css({
cursor: 'none'
});
});

$(document).on('mousemove', function(e) {
$('#circle-big').css({
left: e.pageX,
top: e.pageY
});
$('#circle').css({
left: e.pageX,
top: e.pageY
});

});
#circle-big {
display: block;
position: absolute;
margin-top: -30px;
margin-left: -30px;
width: 60px;
height: 60px;
z-index: -1;
text-align: center;
border: 2px solid red;
border-radius: 50%;
}

#circle {
display: block;
position: absolute;
margin: auto;
transition: all 1s linear;
width: 15px;
height: 15px;
margin-top: -7.5px;
margin-left: -7.5px;
z-index: -1;
background-color: rgba(255, 0, 0, 0.5);
border-radius: 50%;
box-shadow: 0px 0px 10px 4px rgba(255, 255, 255, 1);
}

a {
font-size: 26px;
text-align: center;
margin: 100px auto;
display: block;
}

a:hover {
font-size: 30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="cursor">
<div id="circle-big"></div>
<div id="circle"></div>
</div>

<a>link</a>

或者如果你想让大的跟在小的之后改变过渡:

$('body').mouseover(function() {
$(this).css({
cursor: 'none'
});
});

$(document).on('mousemove', function(e) {
$('#circle-big').css({
left: e.pageX,
top: e.pageY
});
$('#circle').css({
left: e.pageX,
top: e.pageY
});

});
#circle-big {
display: block;
position: absolute;
margin-top: -30px;
margin-left: -30px;
transition: all 1s linear;
width: 60px;
height: 60px;
z-index: -1;
text-align: center;
border: 2px solid red;
border-radius: 50%;
}

#circle {
display: block;
position: absolute;
margin: auto;
width: 15px;
height: 15px;
margin-top: -7.5px;
margin-left: -7.5px;
z-index: -1;
background-color: rgba(255, 0, 0, 0.5);
border-radius: 50%;
box-shadow: 0px 0px 10px 4px rgba(255, 255, 255, 1);
}

a {
font-size: 26px;
text-align: center;
margin: 100px auto;
display: block;
}

a:hover {
font-size: 30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="cursor">
<div id="circle-big"></div>
<div id="circle"></div>
</div>

<a>link</a>

更新

如果你想在悬停链接时改变光标,你可以考虑链接标签上的事件。

这是一个简单的例子:

$('body').mouseover(function() {
$(this).css({
cursor: 'none'
});
});

$(document).on('mousemove', function(e) {
$('#circle-big').css({
left: e.pageX,
top: e.pageY
});
$('#circle').css({
left: e.pageX,
top: e.pageY
});
});
$('a').mouseover(function() {
$('#cursor').addClass('on-link');
})
$('a').mouseout(function() {
$('#cursor').removeClass('on-link');
})
#circle-big {
display: block;
position: absolute;
margin-top: -30px;
margin-left: -30px;
transition: all 1s linear;
width: 60px;
height: 60px;
z-index: -1;
text-align: center;
border: 2px solid red;
border-radius: 50%;
}

#circle {
display: block;
position: absolute;
margin: auto;
width: 15px;
height: 15px;
margin-top: -7.5px;
margin-left: -7.5px;
background-color: rgba(255, 0, 0, 0.5);
border-radius: 50%;
z-index: -1;
box-shadow: 0px 0px 10px 4px rgba(255, 255, 255, 1);
}

#cursor.on-link #circle-big {
border: 2px solid blue;
}

a {
font-size: 26px;
text-align: center;
margin: 100px auto;
display: block;
}

a:hover {
font-size: 30px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="cursor">
<div id="circle-big"></div>
<div id="circle"></div>
</div>

<a>link</a>

关于javascript - 两个圆圈应该跟随光标——一大一小(有延迟),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48509800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com