这篇文章主要介绍了html滑动仿悬浮球菜单效果的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

css样式:

html,body{

width: 100%;

height: 100%;

margin: 0;padding: 0;

}

/*导航图标*/

.NMH-g-navicon{

position: fixed;

top: 40%;

right: 020px;

width: 100px;

height: 100px;

}

.NMH-g-navicon.Jnmh-onleft{

right: auto;

left: 020px;

}

/*导航图标logo按钮*/

.NMH-g-navicon .Jnmh-btnlogo{

position: absolute;

display: block;

width: 100px;

height: 100px;

top: 50%;

right: 0;

margin-top: -50px;

border: 0;

background: url(img/icon_128.png) no-repeat center center;

background-size: 95% 95%;

border: 1px solid rgba(0, 0, 0, 0.1);

box-shadow: rgba(0, 0, 0, 0.12) 0px 6px 10px 0px;

outline: none;

border-radius: 50%;

z-index: 1;

}

.NMH-g-navicon .Jnmh-btnlogohover{

position: absolute;

display: block;

width: 100px;

height: 100px;

top: 50%;

right: 0;

margin: 0;padding: 0;

margin-top: -50px;

border: 0;

overflow: hidden;

/*background-color: red;*/

}

/*导航图标logo按钮-鼠标经过*/

.NMH-g-navicon.Jnmh-open .Jnmh-btnlogohover{

margin-top: -150px;

width: 200px;

height: 300px;

border-radius: 150px 0 0 150px;

}

.NMH-g-navicon.Jnmh-onleft .Jnmh-btnlogohover{

left: 0;

right: auto;

border-radius: 0 150px 150px 0;

}

/*导航图标菜单子容器*/

.NMH-g-navicon .Jnmh-m-submenu{

position: absolute;

background-color: transparent;

list-style: none;

top: -020px;

bottom: -020px;

left: -020px;

right: -020px;

margin: 0;

padding: 0;

}

.NMH-g-navicon .Jnmh-m-submenu .Jnmh-subli{

position: absolute;

width: 100%;height: 100%;

transform: rotate(0deg);

-webkit-transform: rotate(0deg);

transition: all 0.8s ease-in-out;

}

.Jnmh-m-submenu .Jnmh-subdl{

position: absolute;

left: 50%;

bottom: 100%;

width: 0;

height: 0;

line-height: 1px;

margin-left: 0;

background: #fff;

border-radius: 50%;

text-align: center;

font-size: 1px;

overflow: hidden;

cursor: pointer;

box-shadow: none;

transition: all 0.8s ease-in-out, color 0.1s, background 0.1s;

}

/*导航图标-展开菜单时*/

.NMH-g-navicon.Jnmh-open .Jnmh-m-submenu .Jnmh-subdl{

width: 80px;

height: 80px;

line-height: 80px;

margin-left: -40px;

box-shadow: 0 3px 3px rgba(0, 0, 0, 0.1);

font-size: 14px;

}

/*导航图标-三级菜单容器*/

.NMH-g-navicon.Jnmh-open .Jnmh-m-submenu .Jnmh-subdd{

position: absolute;

line-height: normal;

}

html代码:

  • 电商平台
  • 选品平台
  • 会员升级
  • 产品操作
  • 个人中心

javascript代码:

// 监听鼠标移入logo事件

$(document).on('mouseenter','.Jnmh-btnlogo',function(){

$('#nmh-navicon').addClass('Jnmh-open');

GtoggleNavlogo();

});

// 监听鼠标移除导航球移除事件(展开收缩悬浮球为什么不直接监听#nmh-navicon而多了一步监听logo是为了减少边缘触发)

$(document).on('mouseleave','#nmh-navicon',function(){

$('#nmh-navicon').removeClass('Jnmh-open');

GtoggleNavlogo();

});

var GtoggleNavlogo = function(){

var li = $('#nmh-navicon').find('.Jnmh-subli');

var lilen = li.length;

var avgDeg =  180/(lilen-1);// 平均角度

var initDeg = 0;// 起始方向角度

if($('#nmh-navicon').hasClass('Jnmh-onleft')){

// 如果悬浮球被拖拽到左边,则二级菜单则显示右侧

li.css({transform: 'rotate(0deg)'});

initDeg =  180;

}else{

// 默认悬浮球在右边,二级菜单显示在左侧

li.css({transform: 'rotate(-360deg)'});

}

for(var i=0,j=lilen-1; i

var d =  initDeg - (i*avgDeg);

var z = initDeg?j:i;

// console.log(d);

$('#nmh-navicon').hasClass('Jnmh-open') ? GrotateNavlogo(li[z],d) : GrotateNavlogo(li[z],0);

}

};

var GrotateNavlogo = function(dom,deg){

$({a:0}).animate({a:deg}, {

step: function(now,fx) {

$(dom).css({ transform: 'rotate('+now+'deg)' });

$(dom).children().css({ transform: 'rotate('+(-now)+'deg)' });

}, duration: 0

});

}

// 鼠标拖动logo移动

$(document).on('mousedown','.Jnmh-btnlogo',function(e_down){

var wrap = $('#nmh-navicon');

wrap.removeClass('Jnmh-open');

$('.Jnmh-m-submenu').hide();

GtoggleNavlogo();

var positionDiv = wrap.offset();

var distenceX = e_down.pageX - positionDiv.left;

var distenceY = e_down.pageY - positionDiv.top + $(document).scrollTop();

$(document).mousemove(diy_move);

function diy_move(e_move){

var x = e_move.pageX - distenceX;

var y = e_move.pageY - distenceY;

if (x < 0) {

x = 0;

} else if (x > $(document).width() - wrap.outerWidth(true)) {

x = $(document).width() - wrap.outerWidth(true);

}

if (y < 0) {

y = 0;

} else if (y > $(window).height() - wrap.outerHeight(true)) {

y = $(window).height() - wrap.outerHeight(true);

}

$(wrap).css({

'left': x + 'px',

'top': y + 'px'

});

}

$(document).mouseup(function() {

var x = $(wrap).offset().left;

var rm = '',ad = 'Jnmh-open';

if(x > $(document).width()/2){

x = $(document).width() - wrap.outerWidth(true) -10 ;

rm = 'Jnmh-onleft';

}else{

x = 10;

ad += ' Jnmh-onleft';

}

$(wrap).css({left: x + 'px'}).addClass(ad).removeClass(rm);

$('.Jnmh-m-submenu').show();

GtoggleNavlogo();

$(document).unbind('mousemove',diy_move);

});

});

HTML页面悬浮球,html滑动仿悬浮球菜单效果的实现相关推荐

  1. HTML页面悬浮球,html滑动仿悬浮球菜单

    //声明属性赋值 var flag=0; var motion = document.getElementById('xuanfu'); var disX,disY; //元素左/上 '半径' var ...

  2. html滑动仿悬浮球菜单

    html滑动仿悬浮球菜单 css样式 html代码 javascript代码 css样式 html,body{width: 100%;height: 100%;margin: 0;padding: 0 ...

  3. html设置悬浮效果,html滑动仿悬浮球菜单效果的实现-电脑自学网

    css样式 html,body{ width: 100%; height: 100%; margin: 0;padding: 0; } /*导航图标*/ .NMH-g-navicon{ positio ...

  4. 自定义线性菜单 LinearMenu 仿触手tv菜单效果

    本自定义需求来自一个朋友的需求.它的效果在触手TV上的视频播放页面的聊天界面可以看到. 本自定义视图我给它命名为线性菜单(LinearMenu). LinearMenu 是继承与ViewGroup的一 ...

  5. android qq弹出菜单,Android开发实现qqminihd 左右滑动菜单效果

    类型:编程工具大小:13.8M语言:英文 评分:5.5 标签: 立即下载 观察qqminihd界面,发现其界面能够左右滑动来实现两侧菜单效果. 自定义Layout:ScrollLayout.java ...

  6. android悬浮球代码,Android 仿360悬浮球与加速球

    先来看一张动态图 昨天跟着视频学了如何自定义View并做成仿360悬浮球与加速球的样式 可以看出来,做成的效果有: 点击按钮后退出Activity,呈现一个圆形的悬浮球,可以随意拖动并会自动依靠到屏幕 ...

  7. android 悬浮球动画,Android 仿360悬浮球与加速球

    先来看一张动态图 昨天跟着视频学了如何自定义View并做成仿360悬浮球与加速球的样式 可以看出来,做成的效果有: 点击按钮后退出Activity,呈现一个圆形的悬浮球,可以随意拖动并会自动依靠到屏幕 ...

  8. android 魅族悬浮球,轻松自制flyme悬浮球

    前言 去年用了一整年的MX4Pro,魅族留给我最大的印象就是悬浮球了(质量问题我就不说了),左右滑动切换应用.上拉返回桌面.下拉打开通知栏.轻触返回...,一切都那么丝滑.然而自从上半年换成了s7de ...

  9. Tumblr炫酷的可滑动的悬浮按钮SpringFloatingActionBar

    有幸了解到Tumblr这个应用,他的发布信息按钮是一个可以滑动的悬浮按钮,tumblr效果及demo实现效果如下: 按钮拖动到一个地方后,它会自动的返回右下角 tumblr点击按钮后是一种动画效果 d ...

最新文章

  1. 中文版NCCN指南PPT分享(36本)
  2. poj3050【dfs】
  3. 解决Win10不能访问共享文件夹的问题
  4. 为@RequestMapping标注的方法扩展其传入参数
  5. FPGA学习之路—Vivado与Modelsim联合仿真
  6. caffe/common.cu error: function atomicadd has already been defined
  7. spring-boot使用教程之三:如何使用sts中的热部署来降低代码开发量
  8. python 爬取全量百度POI
  9. 查看从库mysql同步错误日志_常见MySQL同步错误恢复方法
  10. 四元数运动学笔记(1)旋转的表示
  11. redis分布式锁简单总结
  12. Ae:Roto 笔刷工具和调整边缘工具
  13. greenplum提供的jdbc驱动下载
  14. Steam流式传输后插耳机没有声音
  15. c语言查看cpu温度代码_C语言获取CPU核心温度
  16. win10环境下基于OpenVINO部署yolov5模型
  17. 终极 Shell——ZSH
  18. 从一个运维人员的角度看微盟的这次删库跑路的节奏
  19. android root 模拟点击,免ROOT实现模拟点击任意位置
  20. JAVA对接海康威视开发文档

热门文章

  1. Css实现...省略号的效果
  2. 机器学习学习笔记(二)---PR曲线
  3. [转贴] 网络硬盘“G宝盘”使用体验
  4. 收藏篇-【仓库规划与布局设计】
  5. python 安装包、基础学习资料、代码应用示例
  6. 2019,成立个人独资企业还能节税吗?具体怎样操作?
  7. 业绩预告不及预期,妙可蓝多的奶酪还好“吃”吗?
  8. 制作和添加测试点与MARK点、元件重新编号与反标、丝印信息处理和BMP文件导入
  9. 软件产品设计的学习总结
  10. JSTL核心标签超详细详解(学习笔记,一文看懂)