如何使用CSS3+JQuery实现悬浮墙式菜单

首先,让我们来了解什么是悬浮墙式菜单。悬浮墙式菜单一般出现在页面一侧或角落的固定位置,当页面滚动时,菜单会跟随滚动而移动,保持在视野范围内,以方便用户随时能够使用。

为了实现这个效果,我们可以使用CSS3中的position属性和Jquery中的scroll()方法。下面是具体的实现步骤:

  1. CSS部分:

首先,在HTML页面中,创建一个DIV元素,这个DIV元素就是悬浮的菜单。然后,为这个DIV元素添加样式,使其具有固定的位置,并且宽高、背景等样式可以自行设置。CSS代码如下所示:

#menu {
    position: fixed;
    top: 50px;  // 距离顶部50px
    left: 0;
    width: 200px;
    height: 300px;
    background: #fff;
    border: 1px solid #ccc;
    z-index: 999;  // 显示优先级最高
}
  1. JQuery部分:

在页面加载时,通过JQuery获取到menu元素,并获取到页面中与menu元素距离顶部的距离(offset.top)。然后,在滚动页面时,判断滚动距离和menu元素到顶部的距离的大小关系,动态设置menu元素的top值,使其保持固定位置。代码如下所示:

$(document).ready(function() {
    var menuOffset = $("#menu").offset().top;  // 距离顶部的距离
    $(window).scroll(function() {
        if ($(this).scrollTop() > menuOffset ) {
            $("#menu").css("top",$(this).scrollTop()-menuOffset);  // 设置top值,使其保持固定位置
        } else {
            $("#menu").css("top","0");  // 还原top值
        }   
    });
});

至此,一个简单的悬浮墙式菜单就完成了。下面,我们来看一下具体的应用案例。

示例一:带有浮动效果的悬浮菜单

这个实例是在之前的基础上进行了扩展,让菜单呈现出类似海浪浮动的效果。我们可以使用JQuery的animate()方法,让菜单在上下滑动时,带有缓动效果,使其看起来更加生动。

HTML代码:

<div id="menu">
    <ul>
        <li><a href="#section1">Section 1</a></li>
        <li><a href="#section2">Section 2</a></li>
        <li><a href="#section3">Section 3</a></li>
        <li><a href="#section4">Section 4</a></li>
        <li><a href="#section5">Section 5</a></li>
    </ul>
</div>
<div id="section1">
    <h2>Section 1</h2>
    <p>Content Section 1</p>
</div>
<div id="section2">
    <h2>Section 2</h2>
    <p>Content Section 2</p>
</div>
<div id="section3">
    <h2>Section 3</h2>
    <p>Content Section 3</p>
</div>
<div id="section4">
    <h2>Section 4</h2>
    <p>Content Section 4</p>
</div>
<div id="section5">
    <h2>Section 5</h2>
    <p>Content Section 5</p>
</div>

CSS代码:

#menu {
    position: fixed;
    top: 50px;
    left: 0;
    width: 200px;
    height: 300px;
    background: #fff;
    border: 1px solid #ccc;
    z-index: 999;
    overflow: hidden;  // 隐藏菜单内容的滚动条
}

#menu ul {
    padding: 0;
    margin: 0;
    list-style: none;
}

#menu li {
    padding: 10px;
    border-bottom: 1px solid #ccc;
}

#menu li a {
    text-decoration: none;
}

#section1,#section2,#section3,#section4,#section5 {
    margin-top: 400px;
    height: 500px;
}

#section1 { background: #FDEDEC; }
#section2 { background: #EAF2F8; }
#section3 { background: #FEF9E7; }
#section4 { background: #E8F8F5; }
#section5 { background: #FAE5D3; }

JQuery代码:

$(document).ready(function() {
    var menuOffset = $("#menu").offset().top;
    $(window).scroll(function() {
        if ($(this).scrollTop() > menuOffset ) {
            $("#menu").animate({top:$(this).scrollTop()-menuOffset}, 200, 'swing');  // 使用animate()方法,添加缓动效果
        } else {
            $("#menu").animate({top:0}, 200, 'swing');
        }   
    });
});

示例二:带有搜索框的悬浮菜单

这个实例在之前的基础上加入了搜索框,让菜单功能更加完善。我们可以先将悬浮菜单绝对定位,然后在菜单中添加搜索框元素,并使用CSS设置其样式。在滚动页面时,可以动态改变菜单的top和left值,使搜索框变成固定位置。代码如下所示:

HTML代码:

<div id="menu">
    <ul>
        <li><a href="#section1">Section 1</a></li>
        <li><a href="#section2">Section 2</a></li>
        <li><a href="#section3">Section 3</a></li>
        <li><a href="#section4">Section 4</a></li>
        <li><a href="#section5">Section 5</a></li>
    </ul>
    <div id="search-box">
        <input type="text" placeholder="Search...">
        <button type="submit">Search</button>
    </div>
</div>
<div id="section1">
    <h2>Section 1</h2>
    <p>Content Section 1</p>
</div>
<div id="section2">
    <h2>Section 2</h2>
    <p>Content Section 2</p>
</div>
<div id="section3">
    <h2>Section 3</h2>
    <p>Content Section 3</p>
</div>
<div id="section4">
    <h2>Section 4</h2>
    <p>Content Section 4</p>
</div>
<div id="section5">
    <h2>Section 5</h2>
    <p>Content Section 5</p>
</div>

CSS代码:

#menu {
    position: absolute;  // 使用绝对定位
    top: 100px;
    left: 0;
    width: 200px;
    background: #fff;
    border: 1px solid #ccc;
    z-index: 999;
    overflow: hidden;
}

#menu ul {
    padding: 0;
    margin: 0;
    list-style: none;
}

#menu li {
    padding: 10px;
    border-bottom: 1px solid #ccc;
}

#menu li a {
    text-decoration: none;
}

#search-box {
    padding: 10px;
}

#search-box input {
    width: 100%;
    padding: 5px;
    border: 1px solid #ccc;
    border-radius: 5px;
    outline: none;
}

#search-box button {
    margin-top: 10px;
    width: 100%;
    padding: 5px 10px;
    background-color: #ccc;
    border: none;
    border-radius: 5px;
    color: #fff;
    cursor: pointer;
}

#section1,#section2,#section3,#section4,#section5 {
    margin-top: 400px;
    height: 500px;
}

#section1 { background: #FDEDEC; }
#section2 { background: #EAF2F8; }
#section3 { background: #FEF9E7; }
#section4 { background: #E8F8F5; }
#section5 { background: #FAE5D3; }

JQuery代码:

$(document).ready(function() {
    var menuOffset = $("#menu").offset().top;
    var searchBoxOffset = $("#search-box").offset().top - menuOffset;  // 计算距离顶部的距离
    $(window).scroll(function() {
        if ($(this).scrollTop() > menuOffset ) {
            $("#menu").css({"top":$(this).scrollTop()-menuOffset, "left":$(this).scrollLeft()+10});  // 修改top和left值
            $("#search-box").css({"position":"fixed", "top":searchBoxOffset, "left":"10px"});  // 修改搜索框的top和left值
        } else {
            $("#menu").css({"top":"0px", "left":"0px"});
            $("#search-box").css({"position":"static"});
        }   
    });
});

通过以上两个示例,我们可以看到如何使用CSS3+JQuery来实现悬浮墙式菜单,并进行一些扩展,让菜单更加丰富和实用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用CSS3+JQuery实现悬浮墙式菜单 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • jQuery过滤选择器用法分析

    jQuery过滤选择器用法分析 jQuery是一款优秀的JavaScript框架,它提供了许多强大而又方便的功能来操作文档。其中,过滤选择器作为一种常用的功能,可以帮助我们根据特定的条件来选取元素,以达到更加方便的操作。 基本用法 使用jQuery选择器的基本语法是: $(selector).filter(expression) 其中,selector是需要…

    css 2023年6月10日
    00
  • jquery弹出关闭遮罩层实例

    下面是jquery弹出关闭遮罩层实例的完整攻略。 1. 确定需求 在开始开发之前,我们需要确定这个功能的需求,明确要做什么。 在本次案例中,我们需要实现一个弹出层,当用户点击按钮时,弹出一个层覆盖在页面上,并显示相关内容。同时,我们还需要一个关闭按钮,当用户点击关闭按钮时,弹出层消失。 2. 准备html代码 在确定好需求后,我们需要写出html代码,为弹出…

    css 2023年6月10日
    00
  • js编写一个简单的产品放大效果代码

    让我们来详细讲解如何编写一个简单的产品放大效果代码。 1. 准备工作 在编写代码前,需要先准备好以下两项: 目标元素的图片。 一个容器元素,用来包裹目标元素。 2. 容器与目标元素的搭建 首先,我们需要使用HTML和CSS来搭建容器元素和目标元素。代码如下: <div class="container"> <img sr…

    css 2023年6月10日
    00
  • JavaScript位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性

    JavaScript 位置与大小(1)之正确理解和运用与尺寸大小相关的DOM属性 什么是DOM属性? DOM是JavaScript操作网页的接口,它提供了一系列属性和方法来获取和修改网页元素的内容、样式、位置和大小等信息。在JavaScript中,通过访问DOM属性可以获取网页元素的位置和大小,进而进行布局和交互的操作。 元素的位置属性 元素的位置属性包括o…

    css 2023年6月10日
    00
  • CSS margin全面了解

    CSS Margin全面了解 什么是Margin Margin指的是元素的外边距,用于控制元素与其它元素之间的距离。Margin可以是单个方向的,也可以是多个方向的,包括上、右、下、左四个方向。通过Margin,我们可以控制元素的外部距离、位置和布局。 Margin的相关CSS属性 以下是Margin的相关CSS属性:- margin:用来设置元素的外边距,…

    css 2023年6月10日
    00
  • HTML+Sass实现HambergurMenu(汉堡包式菜单)

    HTML和Sass的结合可以实现汉堡包式菜单,下面是实现的步骤: 步骤1: HTML 结构 <div class="hm-container"> <button class="hm-btn"> <span></span> <span></span>…

    css 2023年6月10日
    00
  • JS实现常用导航鼠标下经过下方横线自动跟随效果

    下面我将详细讲解“JS实现常用导航鼠标下经过下方横线自动跟随效果”的完整攻略。本攻略将分以下几步实现: 搜集导航标签及下方横线元素; 获取每个导航标签的位置信息,计算出下方横线的初始位置信息; 监听鼠标移入导航标签事件,将下方横线移动到当前导航标签下方; 监听鼠标移出导航标签事件,将下方横线移回初始位置。 在说明的过程中将涉及两个示例以更好的展示效果。 1.…

    css 2023年6月10日
    00
  • javascript+css3开发打气球小游戏完整代码

    下面我来详细讲解“Javascript+CSS3开发打气球小游戏完整代码”的完整攻略。 准备工作 在开始前,我们需要准备以下工具和技术: HTML、CSS、Javascript基础知识 编辑器:推荐使用Visual Studio Code等代码编辑器 Firefox或Chrome浏览器 开始开发 第一步:构建游戏场景 我们首先需要构建游戏场景,包括背景、气球…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部