html 圆形选择,html弹出圆形菜单

本文介绍如何使用HTML、CSS和JavaScript创建一个可动态调整布局的菜单,以适应不断增长的图片链接。通过JavaScript计算按钮位置并支持扩展,只需简单添加HTML,轻松应对菜单扩展需求。
摘要由CSDN通过智能技术生成

首页功能越来越多,放了好几个图片链接,然后链接还在不断增加,这时需要一个可扩展,又漂亮的菜单

网上找了个小插件吧,但是它的按钮位置什么的都是固定写死的,不好做扩展(源码找不到引用网址了),现在我把按钮做成自动计算位置

先来个效果图(调试中,可能有点丑)

b8dc16466aba24d937388d5ceee4efa7.png

默认只显示1号按钮,点击1号,会弹出2/3/4/5/6

这几个按钮的图片都可以更换,其中6号为没有添加图片的按钮,2/3/4/5/6的位置都是使用js计算得到的,他们的偏转角度,与1号的距离,都可以修改,每次增加新的按钮或链接时,只需要按照规则,加一行html代码就可以了

html代码

ext_menu.png

orderdinner.png

artworks.png

cx.png

ext_menu.png

1290277515469856768.htm

css代码

.wrap{

width:52px;

height:57px;

position:fixed;

right:0;

bottom:0;

}

#icon_menu{

position:absolute;

bottom:100px;

right:0px;

z-index:10;

cursor:pointer;

}

#icon_menu img{

width:60px;

height:60px;

}

#icon_menu span{

display:none;

}

.ex_btn{

width:52px;

height:57px;

background:url(../image/ext_bac.png) no-repeat -78px -6px;

z-index:1;

position:absolute;

bottom:100px;

right:0;

margin:0 5px 2px 0;

cursor:pointer;

}

.ex_btn img{

display:block;

width:43px;

height:43px;

font-size:0;

position:absolute;

top:50%;

left:50%;

margin-top:-21px;

margin-left:-20px;

overflow:hidden;

}

.ex_btn{-webkit-transition:bottom .2s,right .2s;-moz-transition:bottom .2s,right .2s;-o-transition:bottom .2s,right .2s;-ms-transition:bottom .2s,right .2s;transition:bottom .2s,right .2s;}

js代码

/// 扩展菜单点击

function ExtendMenuClick() {

let span = $("#wrap").find("img");

let cl = document.getElementById("icon_menu").getElementsByClassName("open_menu");

if (cl.length > 0) {

CloseExtendMenu(span);

} else {

OpenExtendMenu(span);

}

}

/// 打开

function OpenExtendMenu(span) {

let l = document.getElementById("extend_menu").getElementsByTagName("span").length;

for (let i = 1; i < l ; i++) {

let ar = GetNewPosition(i);

EditSpanPosition(document.getElementById("ex_btn" + i), ar[0], ar[1]);

}

$("#mspan").addClass("open_menu");

}

/// 关闭

function CloseExtendMenu(span) {

let l = document.getElementById("extend_menu").getElementsByTagName("span").length;

for (let i = 1; i < l ; i++) {

EditSpanPosition(document.getElementById("ex_btn" + i), 100, 0);

}

$("#mspan").removeClass("open_menu");

}

/// 修改弹出按钮位置

function EditSpanPosition(dom,bottom, right) {

dom.style.bottom = bottom + "px";

dom.style.right = right + "px";

}

// 获取要移动到的位置

function GetNewPosition(i) {

let obottom = $(window).height() - $("#icon_menu").offset().top - 40; // 按钮距底部距离

let oright = $(window).width() - $("#icon_menu").offset().left - 20; // 按钮距右侧距离

let oLength = 100; // 弹出长度

// let angle = 45; // 弹出角度

let radian = 0.8 * i - 1; // 弹出弧度

let nbottom = obottom + Math.cos(radian) * oLength;

let nright = oright + Math.sin(radian) * oLength;

return [nbottom, nright];

}

如果需要修改按钮距离,偏转角度,就改一下js的GetNewPosition方法,改按钮大小就该css

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值