实现搜索框跟随鼠标悬停菜单功能

先上效果图:

关键点只有一个:获取鼠标悬停点位置.

event.clientX 设置或获取鼠标指针位置相对于当前窗口的 x 坐标,其中客户区域不包括窗口自身的控件和滚动条。
event.clientY 设置或获取鼠标指针位置相对于当前窗口的 y 坐标,其中客户区域不包括窗口自身的控件和滚动条。
event.offsetX 设置或获取鼠标指针位置相对于触发事件的对象的 x 坐标。
event.offsetY 设置或获取鼠标指针位置相对于触发事件的对象的 y 坐标。
event.screenX 设置或获取获取鼠标指针位置相对于用户屏幕的 x 坐标
event.screenY 设置或获取鼠标指针位置相对于用户屏幕的 y 坐标。
event.x 设置或获取鼠标指针位置相对于父文档的 x 像素坐标
event.y 设置或获取鼠标指针位置相对于父文档的 y 像素坐标

所以只需要搜索框的margin-top设置 event.pageY-event.offsetY(鼠标悬停li标签距离顶部的高度)

以下是源码直接运行即可

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>test</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        ul {
            list-style-type: none;
        }

        .title {
            display: block;
            background-color: #007ACC;
            color: #ffffff;
            height: 50px;
            line-height: 50px;
            width: 200px;
            padding-left: 20px;
            border-bottom: rgb(34, 69, 88) solid 1px;
        }
        .menu{
            float: left;
        }
        .menu ul {
            display: block;
        }

        .menu ul li {
            background-color: #399AD1;
            border-bottom: rgb(34, 69, 88) solid 1px;
            color: #ffffff;
            height: 40px;
            line-height: 40px;
            width: 200px;
            padding-left: 20px;
        }

        .search {
            /* display: none; */
            float: left;
            margin-left: 1px;
            width: 300px;
            height: 100px;
            background-color: #399AD1;
            border: #007ACC solid 2px;
        }
    </style>
</head>

<body>
    <div class="menu">
        <div>
            <span class="title">标题1</span>
            <ul style="display: none;">
                <li>标题1-小标题1</li>
                <li>标题1-小标题2</li>
                <li>标题1-小标题3</li>
            </ul>
        </div>
        <div>
            <span class="title">标题2</span>
            <ul style="display: none">
                <li>标题2-小标题1</li>
                <li>标题2-小标题2</li>
                <li>标题2-小标题3</li>
            </ul>
        </div>
    </div>
    <div class="search">
        <label for="time">日期:</label>
        <input type="text" id="time">
        <br>
        <label for="type">类型:</label>
        <input type="text" id="type">
        <br>
        <button>搜索</button>
    </div>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $(".title").on("click", function () {
                $(this).next().slideDown();
                $(this).parent().siblings().children("ul").slideUp();
            })
            $("li").mouseover(function (e) {
                var self = $(this);
                $("li").css("background-color", "#399AD1");
                $(this).css("background-color", "red");
                console.log(e.pageY+"::"+e.offsetY);
                $(".search").css("margin-top", e.pageY-e.offsetY+20);
            });
        })
    </script>
</body>

</html>

原文地址:https://www.cnblogs.com/madlife/p/9127527.html

时间: 2024-10-14 14:27:46

实现搜索框跟随鼠标悬停菜单功能的相关文章

MFC DLEdit 设计属于自己的编辑框_鼠标悬停

MFC DLEdit 设计属于自己的编辑框 2012-02-04 13:00 by 捣乱小子, 3543 阅读, 5 评论, 收藏, 编辑 起因 无意间看到了大牛们写的自定义编辑框控件,于是找了个时间自己写了一个,加深了对MFC消息机制和一些功能的了解. 分析 先来看一张QQ2011的登录窗口,发现当鼠标悬停在编辑框上的时候,会有悬停边框高亮,这样给用户一种很绚丽的视觉享受,但我相信大家每天都上q,从而都忽略了这些美丽,细心分析一下,QQ的每一个器官甚至一根毛都是经过精心设计的.当编辑框失去输入

Android中的搜索框(SearchView)的功能和用法

1.SearchView是搜索框组件,它可以让用户在文本框里输入文字,通过监听器取得用户的输入,当用户点击搜索时,监听器执行实际的搜索. 2.SearchView组件的常用方法如下: ①setIconifiedByDefault(boolean iconified) ===> 设置搜索框默认是否自动缩小为图标. ②setOnQueryTextListener(SearchView,OnQueryTextListener listener) ===> 为搜索框设置监听器 ③setSubmitBu

提示框跟随鼠标移动

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ padding: 0; margin: 0; } .box{width:500px;margin: 300px auto;border: solid 1px black;position: rel

常用的css3鼠标悬停按钮动画特效

css3 按钮制作A标签属性hover css3带冒泡动画按钮 css3动画transform属性鼠标悬停图文列表动画效果 div CSS3动画带有的按钮_css3样式表属性动画按钮 创意CSS3属性鼠标悬停动画菜单 css3按钮动画特效大全鼠标滑过按钮动画特效 div css3 transition属性制作鼠标悬停图标导航菜单动画展示 21种css3 transition属性鼠标悬停导航条动画效果 纯div css3鼠标触碰图标背景渐变动画效果代码 css3动画鼠标滑过栏目图片滑动切换效果 c

iOS开发——UI篇OC篇&amp;TextField作为搜索框的使用

TextField作为搜索框的使用 在iOS开发中我们经常会使用到搜索框,但是有的时候系统自带的搜索框不足以满足我吗想要的功能,这个时候我们就可以使用自定义的搜索框实现想要的功能. 今天就简单的介绍一下怎么去使用UITextField实现一个搜索框,当然如果你有更好的方法也可以分享出来,大家相互学习. 一:直接使用 1 UITextField *text = [[UITextField alloc] init]; 2 text.frame = CGRectMake(0, 0, 320, 30);

OpenLayers 3 之 添加地图鼠标右键菜单

添加右键菜单,首先我们要监听鼠标右键点击的操作,我们知道鼠标右键事件名是 contextmenu,当鼠标在 html 元素之上,点击鼠标右键,便会触发 contextmenu 事件,在 contextmenu 事件的回调函数中实现相应的显示菜单功能即可. 那么在 openlayers 中,在地图中添加这个事件,我们从哪里下手呢?首先我们得了解 openlayers 的初始化页面的过程. openlayers 初始化页面过程 openlayers 也是一个前端库,那么它肯定离不开 html 的运用

实现DataTables搜索框查询结果高亮显示

DataTables是封装好的HTML表格插件,丰富了HTML表格的样式,提供了即时搜索.分页等多种表格高级功能.用户可以编写很少的代码(甚至只是使用官方的示例代码),做出一个漂亮的表格以展示数据.关于DataTables的更多信息,请查看:http://www.datatables.club/.https://datatables.net/.下图将要展示的南京景点游记的相关数据,在DataTables表格中展示出来. 上面DataTable表格中的即时搜索.分页等功能是创建好DataTable

bootstrap怎么设置下拉菜单不点击,改成鼠标悬停直接显示下拉菜单

方法一: 实际上比较简单,只需要加一个css设置下hover的状态,把下拉菜单设置成block,具体css:.nav > li:hover .dropdown-menu {display: block;} 但是主导航失去链接的效果! 方法二: 不仅可以解决Bootstrap鼠标悬停的问题,还可以让一个菜单恢复链接实现点击下拉菜单效果是JS实现的,分析bootstrap.js文件发现,Bootstrap把下拉菜单写成了一个JQuery插件,在dropdown代码段中找到了关键的几句:$(docum

使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码和在线测试地址】

项目中常常用到搜索,特别是导航类的网站.自己做关键字搜索不太现实,直接调用百度的是最好的选择.使用jQuery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript也可以实现跨域调用js. jsonp快速入门: [原创]说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 关于jquery.ajax的jsonp方法是用以及其error回调函数不能正确执行,请参考园长dudu的文章: jquery ajax中使用jsonp的限制 jQuery插件jQu