• 菜单展开效果


    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;
                        }    
                });

     

  • 相关阅读:
    mysql压缩版安装
    网站还没加载完成时,显示正在加载的画面
    LESS基础教程
    用CSS编写多种常见的图形
    JavaScript的this
    JavaScript的闭包
    立即执行函数表达式(自执行函数)
    JavaScript的全局变量
    关于async function(){ let res = await } 详解
    mysql数据库的系统操作基本操作
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/10621512.html
Copyright © 2020-2023  润新知