React实现顶部固定滑动式导航栏(导航条下拉一定像素时显示原导航栏样式)
摘要
基于react的框架开发一个顶部固定滑动式的酷炫导航栏,当导航栏置顶时,导航栏沉浸在背景图片里;当鼠标滑动滚轮时,导航栏固定滑动并展示下拉样式。
JS部分
相关技术栈:react、antd、react-router。详细的技术栈应用请参考官方文档的使用说明。
* 展示主页App.jsx组件代码
import React from 'react';
import './App.css';
import { Link, Route } from 'react-router-dom';
import { Layout } from 'antd';
//引入导航栏相对应的组件
import Home from './components/Home/Home';
import CoreTechnology from './components/Technology/Technology';
import Case from './components/Case/Case';
import About from './components/About/About';
import Join from './components/Join/Join'; const { Content } = Layout; class App extends React.Component {
//在componentDidMount生命周期中添加window的handleScroll滑动监听事件
componentDidMount() {
window.addEventListener('scroll', this.handleScroll);
}
//定义handleScroll事件函数
handleScroll =(e)=>{
var header = document.getElementById('header'); //定义一个dom节点为'header'的header变量
if(window.pageYOffset >= 80){ //if语句判断window页面Y方向的位移是否大于或者等于导航栏的height像素值
header.classList.add('header_bg'); //当Y方向位移大于80px时,定义的变量增加一个新的样式'header_bg'
} else {
header.classList.remove('header_bg'); //否则就移除'header_bg'样式
}
} render() {
return (
<div className="page" id="page">
<Layout>
<div className="header" id="header"> //导航栏div
<div className="brand">
<Link to="/">
<img src={require("./img/dkgw_logo@01.png")} alt="大可logo" width="" height="32"/>
</Link>
</div>
<div className="nav">
<ul>
<li>
<Link to="/technology">
<img src={require("./img/dkgw_hxjs.png")} alt="核心技术" width="32" height="32"/>
核心技术
</Link>
</li>
<li>
<Link to="/case">
<img src={require("./img/dkgw_hyal.png")} alt="行业案例" width="32" height="32"/>
行业案例
</Link>
</li>
<li>
<Link to="/about">
<img src={require("./img/dkgw_gywm.png")} alt="关于DUCK" width="32" height="32"/>
关于DUCK
</Link>
</li>
<li>
<Link to="/join">
<img src={require("./img/dkgw_jrwm.png")} alt="加入我们" width="32" height="32"/>
加入我们
</Link>
</li>
</ul>
</div>
</div> <Content className="content" id="content">
<Route path="/" exact component={ Home }/>
<Route path="/technology" component={ CoreTechnology }/>
<Route path="/case" component={ Case }/>
<Route path="/about" component={ About }/>
<Route path="/join" component={ Join }/>
</Content>
</Layout>
</div>
);
}
} export default App;
CSS部分
为了让导航栏置顶时悬浮在背景图上,需要给导航栏置特定的css样式。
position: fixed;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
transition: 0.5s;
z-index: 1000;
* 主页App.css样式代码
@import '~antd/dist/antd.css'; //引入antd样式
@import url('https://fonts.googleapis.com/css?family=Roboto'); //引入谷歌字体样式 /* {通用样式开始} */
* {
margin: 0;
padding: 0;
font-family: Arial, Helvetica, sans-serif;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/* {通用样式结束} */ /* {导航栏基础样式} */
.header
{
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 5rem;
padding: 0 10vw;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
transition: 0.5s;
z-index: 1000;
}
{/*{导航栏新样式}*/}
.header.header_bg
{
background: #607d8b;
} .nav ul
{
margin: 0;
padding: 0;
display: flex;
} .nav ul li
{
list-style: none;
} .nav ul li a
{
color: #fff;
padding: 0 20px;
font-size: 1.1em;
text-decoration: none;
font-weight: bold;
} .brand a
{
color: #fff;
font-size: 1.1em;
text-decoration: none;
font-weight: bold;
}
基本效果图
导航栏置顶时:

导航栏下滑一定像素时:

最后
以上就是小编在实战开发中的一个小分享,如有任何说的不对的地方,欢迎大家指指点点!
React实现顶部固定滑动式导航栏(导航条下拉一定像素时显示原导航栏样式)的更多相关文章
- Web前端开发实战6:CSS实现导航菜单结合二级下拉式菜单的简单变换
前面几篇博文都在讲导航菜单和二级下拉式菜单,事实上有非常多方法都能够实现的.详细的情况还要视情况而定. 在后面学习到jQuery框架之后,会有更丰富的动画效果.因为在学习Ajax和jQuery的初步阶 ...
- 织梦DedeCMS v5.7 实现导航条下拉菜单
首先将下面这段代码贴到templets\default\footer.htm文件里(只要在此文件里就行,位置无所谓) <</span>script type='text/javasc ...
- Bootstrap -- 下拉菜单、输入框组、导航菜单
Bootstrap -- 下拉菜单.输入框组.导航菜单 1. 下拉菜单 可以使用带有各种大小按钮的下拉菜单:.btn-lg..btn-sm 或 .btn-xs. 实现下拉菜单: <!DOCTYP ...
- Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏.
Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏. Delphi中,除了应用程序主窗口会显示在任务栏上,其它窗口默认都不会显示在任务栏.没有MS开发环境中的ShowI ...
- Bootstrap历练实例:带有下拉菜单的标签和胶囊导航
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- DEDECMS v5.7 完美实现导航条下拉二级菜单
一.引言 好多人都问,织梦的下拉导航怎么做呢?其实很简单!即使你对代码一点也不熟悉,没关系! 按照我的步骤走!记住一步也不能错哦! 二.实现过程 1.首先: 将下面这段代码贴到templets\def ...
- 鼠标移上显示的下拉菜单,和鼠标移上时显示的导航,html,JavaScript代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Bootstrap框架(基础篇)之按钮,网格,导航栏,下拉菜单
一,按钮 注意:虽然在Bootstrap框架中使用任何标签元素都可以实现按钮风格,但个人并不建议这样使用,为了避免浏览器兼容性问题,个人强烈建议使用button或a标签来制作按钮. 框架中提供了基础按 ...
- 20款jquery下拉导航菜单特效代码分享
20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...
随机推荐
- 亲历谷歌 Chrome 浏览器弹窗境外广告的解决方法(图) | 技术乐园
亲历谷歌 Chrome 浏览器弹窗境外广告的解决方法(图) | 技术乐园 转 https://www.hack520.com/338.html 谷歌的 Chrome 浏览器是我非常喜欢的一款的浏览器, ...
- PCA与LDA
- hue集成mysql找不到 libmysqlclient.so.16问题解决
首先我的配置文件如下,这个是没有问题的 但是在重启hue连接mysql时,却发生了如下问题: 这个错误的意思就是没有找到libmysqlclient_r.so.16这个文件,可能是我安装的mysql有 ...
- java获取properties配置文件中某个属性最简单方法
假如我想获取src目录下sysConfig.properties中的uploadpath属性的值 方法如下所示: private static final ResourceBundle bundle ...
- (十二)会话跟踪技术之servlet通信(forward和include)
一.servlet通信方法 二.具体应用 scopeServlet.java protected void doPost(HttpServletRequest request, HttpServlet ...
- SecureCRT 8.1破解方式
百度网盘下载,里面有破解程序和破解方式. 链接: https://pan.baidu.com/s/1wlhqnn-TE_mcOXOLljP-zg 密码: 3ffj
- Egret入门学习日记 --- 第十六篇(书中 6.10~7.3节 内容)
第十六篇(书中 6.10~7.3节 内容) 昨天搞定了6.9节,今天就从6.10节开始. 其实这个蛮简单的. 这是程序员模式. 这是设计师模式. 至此,6.10节 完毕. 开始 6.11节. 有点没营 ...
- Introduction - Unsupervised Learning
摘要: 本文是吴恩达 (Andrew Ng)老师<机器学习>课程,第一章<绪论:初识机器学习>中第4课时<无监督学习>的视频原文字幕.为本人在视频学习过程中逐字逐句 ...
- Echarts 图表的本地配置
前言 Echarts是一个美观的可视化工具,但是很多朋友初次接触,不知道自己该怎么创建一个包含Echartst图表的本地HTML网页,本文将详细地介绍Echarts的使用流程. 使用流程步骤 共分为三 ...
- 最新 阿里java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.阿里等10家互联网公司的校招Offer,因为某些自身原因最终选择了阿里.6.7月主要是做系统复习.项目复盘.LeetCode ...