zoukankan      html  css  js  c++  java
  • 菜单展开效果

    html

    原理:

    子菜单定位到父元素圆的中心点,利用transform的translate来实现位移,子菜单的位置利用三角函数获取,父元素加上透明度opacity和缩放scale效果

    <div class="menu">
                <div class="btn">
                    展开
                </div>
                <div class="items">
                    <div class="item"></div>
                    <div class="item"></div>
                    <div class="item"></div>
                    <div class="item"></div>
                    <div class="item"></div>
                    <div class="item"></div>
                    <div class="item"></div>
                    <div class="item"></div>
                    <div class="item"></div>
                    <div class="item"></div>
                </div>
            </div>

    css

    .menu{
                    width: 300px;
                    height: 300px;
                    margin: 100px auto;
                    position: relative;
                    border:1px solid red;
                    box-sizing: border-box;
                    border-radius: 50%;
                }
                .btn{
                    position: absolute;
                    left: 50%;
                    top:50%;
                    background-color: red;
                    color: #fff;
                    padding: 10px;
                    transform: translate(-50%,-50%);
                    z-index: 2;
                }
                .items{
                    transform: scale(0);
                    opacity:0;
                    position: absolute;
                    width: 20px;
                    height: 20px;
                    left: 50%;
                    top: 50%;
                    margin-top: -10px;
                    margin-left: -10px;
                    transition: all 1s ease-in-out;
                }
                .items.active{
                    transform: scale(1);
                    opacity:1;
                }
                .items .item{
                    position: absolute;
                    width: 100%;
                    height: 100%;
                    background-color: blue;    
                }

    js

    var flag=false;
                $(".btn").on('click',function(){
                        var items=$(".items .item");
                        $(".items").toggleClass('active');
                        if(!flag&&$(".items").hasClass('active')){
                            var len=items.length;
                            var angle=360/len;
                            var R=150;
                            items.each(function(index,item){
                                var x=Math.cos(2*Math.PI/360*angle*index)*R;
                                var y=Math.sin(2*Math.PI/360*angle*index)*R;
                                $(item).css({
                                    'transform':'translate('+x+'px,'+y+'px)'
                                    
                                })
                            });
                            flag=true;
                        }    
                });

     

  • 相关阅读:
    Jessica's Reading Problem POJ
    FatMouse and Cheese HDU
    How many ways HDU
    Humble Numbers HDU
    Doing Homework again
    Stacks of Flapjacks UVA
    Party Games UVA
    24. 两两交换链表中的节点
    面试题 03.04. 化栈为队
    999. 可以被一步捕获的棋子数
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/10621512.html
Copyright © 2011-2022 走看看