导航栏滚动渐变效果 html+css+js

导航栏滚动渐变效果 html+css+js先看效果:实现:1.定义导航栏的文字标签:<divclass=”tou”><sapnclass=”logo”>北极光。</sapn><ulclass=”biao”><li><ahref=”#”><ahref=”#”>主页</a></li><li><ahref=”#”>个人简介</

大家好,又见面了,我是你们的朋友全栈君。

先看效果:

在这里插入图片描述

实现:

1.定义导航栏的文字标签:

<div class="tou">
        <sapn class="logo"> 北极光。</sapn>
        <ul class="biao">
        <li><a href="#"><a href="#">主页</a></li>
        <li><a href="#">个人简介</a></li>
        <li><a href="#">文章</a></li>
        <li><a href="#">留言版</a></li>
        <li><a href="#">友链</a></li>
        </ul>
    </div>

2.导航栏整体的样式:

 .tou{ 
   
             position: fixed;
             top: 0;
             left: 0;
             padding: 25px 100px;
             width: 100%;
             display: flex;
             justify-content: space-between;
             align-items: center;
            transition:  0.5s;
         }

transition 过渡效果
3.北极光这个logo的样式:

 .logo{ 
   
             position: relative;
             font-size: 22px;
             font-weight: 900;
             letter-spacing: 1px;
             color: rgb(28, 36, 148);
         }

letter-spacing:文字(字母)间距

4.给北极光logo定位一个图片在文字左边:

 .logo::before{ 
   
            content: '';
            position: absolute;
            left: -50px;
            top: -15px;
            width: 50px;
            height: 50px;
            background-image: url(logo.png);
            background-size: 100%;
         }

5.右边导航标签的一些样式,样式等都不做详细说明了,毕竟每个人的都不一样~:

.biao{ 
   
             position: relative;
             display: flex;
             justify-content: center;
             align-content: center;
            list-style: none;
            
         }
        .biao li{ 
   
             position: relative;
         }
        .biao a{ 
   
             position: relative;
             margin: 0 10px;
             font-size: 18px;
             font-family: 'fangsong';
             font-weight: bold;
             color: rgb(28, 36, 148);
             text-decoration: none;

         }

6.当页面有滚动后导航栏的样式,padding上下变小,字体颜色变,有了蓝背景色:

 .bian{ 
   
            padding: 15px 100px;
            background-color: rgb(71, 105, 219);
        }
        .bian .logo,.tou.bian a{ 
   
            color: rgb(252, 247, 247);
        }

7.简单js,实现部分:
第一种:

window.addEventListener('scroll',function(){ 
   
            let tou = document.querySelector('.tou');
           if(window.scrollY>0)
            { 
   
                tou.classList.add("bian");
            }else{ 
   
                tou.classList.remove("bian");
            }
        })

第二种:直接这样:

 window.addEventListener('scroll',function(){ 
   
            let tou = document.querySelector('.tou');    
            tou.classList.toggle("bian",window.scrollY>0);

        })

解释:
scrollY属性:
Window接口的只读scrollY属性返回文档当前垂直滚动的像素数。

classList属性:
add(class1, class2, …) 在元素中添加一个或多个类名。如果指定的类名已存在,则不会添加
remove(class1, class2, …) 移除元素中一个或多个类名。
toggle(class, true|false) 第一个参数为如果已存在类名则中移除的类名,并返回 false。如果该类名不存在则会在元素中添加类名,并返回 true。第二个是可选参数,是个布尔值用于设置元素是否强制添加或移除类,不管该类名是否存在。

所以:
第一种js写法就是有滚动>0时就添加类.biao而实现渐变效果,当滚动<=0时就移除.biao类回到原来;
第二种就是布尔值判断,当滚动>0就强制添加.biao类,当滚动<=0就移除.biao类;

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style> *{ 
     margin: 0; padding: 0; box-sizing: border-box; } body{ 
     height: 200vh; } .tou{ 
     position: fixed; top: 0; left: 0; padding: 25px 100px; width: 100%; display: flex; justify-content: space-between; align-items: center; transition: 0.5s; } .logo{ 
     position: relative; font-size: 22px; font-weight: 900; letter-spacing: 1px; color: rgb(28, 36, 148); } .logo::before{ 
     content: ''; position: absolute; left: -50px; top: -15px; width: 50px; height: 50px; background-image: url(logo.png); background-size: 100%; } .biao{ 
     position: relative; display: flex; justify-content: center; align-content: center; list-style: none; } .biao li{ 
     position: relative; } .biao a{ 
     position: relative; margin: 0 10px; font-size: 18px; font-family: 'fangsong'; font-weight: bold; color: rgb(28, 36, 148); text-decoration: none; } .bian{ 
     padding: 15px 100px; background-color: rgb(71, 105, 219); } .bian .logo,.tou.bian a{ 
     color: rgb(252, 247, 247); } /* 背景图样式 */ .bjimg { 
     position: fixed; top: 0; left: 0; width: 100%; height: 100%; min-width: 1000px; z-index: -10; zoom: 1; background-color: #fff; background-image: url(11.jpg) ; background-repeat: no-repeat; background-size: cover; -webkit-background-size: cover; -o-background-size: cover; background-position: center 0; } </style>
</head>
<body>
    <!-- 背景图 -->
    <div class="bjimg"></div>

   <!-- 导航栏 -->
    <div class="tou">
        <sapn class="logo"> 北极光。</sapn>
        <ul class="biao">
        <li><a href="#"><a href="#">主页</a></li>
        <li><a href="#">个人简介</a></li>
        <li><a href="#">文章</a></li>
        <li><a href="#">留言版</a></li>
        <li><a href="#">友链</a></li>
        </ul>
    </div>
    <script> window.addEventListener('scroll',function(){ 
     let tou = document.querySelector('.tou'); /* tou.classList.toggle("bian",window.scrollY>0); */ if(window.scrollY>0) { 
     tou.classList.add("bian"); }else{ 
     tou.classList.remove("bian"); } }) </script>
</body>
</html>

总结:

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140325.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何在docker容器中运行docker命令

    如何在docker容器中运行docker命令欢迎关注个人微信公众号:devopscube前言​Docker作为目前炙手可热的容器运行环境,越来越多的应用到应用的部署当中。这种一次打包,随处运行的模式备受好评,也节约了很多环境配置的麻烦。很多软件运行时都提供了docker的镜像部署方式,我们可以看到常用的组件,开源的项目,都会提供docker镜像,或者用于打包镜像的dockerfile。所以Docker已然成为了软件…

    2022年5月17日
    156
  • 推荐一款博客备份工具!

    推荐一款博客备份工具!网友老紫竹开发了一个csdn博客备份工具,现在推荐给大家,有需要备份博客的可以点击下面的链接使用该工具。在此,我们感谢老紫竹为博客所作出的贡献!同时我们也欢迎其他网友来开发各种实用的博客工具,然后分享给大家使用!备份工具地址:http://www.java2000.net/csdn/blogbackup.jsp…

    2022年7月25日
    6
  • 安卓app十大开发框架_web应用开发学什么

    安卓app十大开发框架_web应用开发学什么国内第一本基于Android2.0的经典著作,5大专业社区联袂推荐,权威性毋庸置疑!·Android开发与传统的J2ME开发有何相似与不同?·如何通过SharedPreferences、Files、Network和SQLite等方式高效实现Android数据的存储?又如何通过ContentProviders轻松地实现Android数据的共享?·如何使用OpenCore、MediaPlayer、MediaRecorder方便快速地开发出包含音频和视频等流媒体的丰富多媒体应用?·如何

    2022年5月3日
    44
  • SpringBoot——定时任务@Scheduled

    SpringBoot——定时任务@ScheduledSpringBoot——定时任务@Scheduled

    2022年4月23日
    67
  • 基于matlab的机械臂仿真_移动机器人matlab运动学仿真

    基于matlab的机械臂仿真_移动机器人matlab运动学仿真目的  本文手把手教你如何在Mathematica软件中搭建机械臂的三维仿真环境,包括以下几部分:  1. 如何导入机械臂的三维模型;  2. 如何进行(正/逆)运动学仿真;  3. 如何进行(正/逆)动力学仿真;  4. 如何进行碰撞检测;  5. 如何进行控制方法的验证;  先看一下效果(先尝后买):  对于机器人研发设计人员,一款好用的仿真软件能对他的

    2022年10月20日
    3
  • pycharm 全局搜索没反应

    pycharm 全局搜索没反应修改快捷键占用右键–工具箱–属性设置–高级–系统功能快捷键

    2022年5月31日
    105

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号