gpt4 book ai didi

javascript - 高 Angular 圆圈周围的元素

转载 作者:行者123 更新时间:2023-11-30 20:13:31 30 4
gpt4 key购买 nike

我正在用选定的项目创建圆形导航。当用户单击任何项​​目时,它将移动到定义的特定点。一切都很好,除了当你继续点击项目时,当动画表现不同并且项目在 360 度圆中移动并且它被重置直到你重复场景时,我希望它像第一次一样平滑,就像有多少次用户一样点击它应该平滑移动的项目。

代码 JSFIDDLE LINK单击项目后,您将看到该行为

// rotate circle functions
var p = $(".cirlec-slider-bg");
$(".cirlec-slider-bg .f-courses").clone().appendTo(p);

var a = -($('.cirlec-slider-bg').width() / 2);
var b = $('.cirlec-slider-bg .f-courses').length;
var c = 360 / b;
rotateCircle(c, 'domReady');

$(".cirlec-slider-bg").on("click", ".f-courses", function(e) {
if ($(this).hasClass('active')) {} else {
$('.cirlec-slider-bg .f-courses').removeClass("active");
$(this).addClass('active');
var dataAngle = parseInt($(this).attr('data-angle'));
var maxangle = 90 - dataAngle;


rotateCircle(maxangle, 'onitemClick')
}

});

function rotateCircle(maxangle, type) {
$('.cirlec-slider-bg .f-courses').each(function(index) {

if (type == 'onitemClick') {
var maxAngle = maxangle;
var dataAngle2 = parseInt($(this).attr('data-angle'));
var maxangle2 = dataAngle2 + maxAngle;
var d = (index) * c;
}
if (type == 'domReady') {
var maxAngle = maxangle;
var maxangle2 = (index) * maxAngle;
}

var m = [
"translate(-50%, -50%) rotate(", -90, "deg) translateY(" + 100 + "px) rotate(", 90, "deg)"
];
m[1] = maxangle2;
m[3] = 0 - maxangle2;
$(this).css({
"transform": m.join("")
});

$(this).attr('data-angle', maxangle2);
})
}

最佳答案

在点击处理程序中打印 dataAngle 的值表明它有时会超出 [0, 180] 的允许范围 - 它可能变为负数或大于 360。

补救措施是在检索 dataAngle 后添加以下行:

dataAngle -= Math.floor(dataAngle / 360.0) * 360;

(请注意,这与 dataAngle % 360 不同)

Fixed JSFiddle

关于javascript - 高 Angular 圆圈周围的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52165159/

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