javascript - 高 Angular 圆圈周围的元素

标签 javascript jquery geometry

我正在用选定的项目创建圆形导航。当用户单击任何项​​目时,它将移动到定义的特定点。一切都很好,除了当你继续点击项目时,当动画表现不同并且项目在 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/

相关文章:

javascript - 如何访问 node.js 解析器代码?

javascript - 谁知道我的ajax出了什么问题?

php - 使用 Javascript 编辑和保存用户 HTML - 它有多安全?

javascript - Jquery数组循环中的多个Ajax请求

javascript - 谷歌地图 JS API v3 : get markers in circle with containsLocation() doesn't work - why?

划分区域以使距离总和最小化的算法

math - 如何在矩形的周长中找到与给定点最近的点?

Javascript从字符串的开头和结尾删除特殊字符

javascript - Webpack + Typescript - 如何将导入的非 UMD 模块隔离到一个文件中?

javascript - 单击另一个组件即可更改 react 组件的状态