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响应 ...
随机推荐
- LinearGradient线型渐变效果
public LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, TileM ...
- GoogleNet-ILSVRC-2014冠军
Going deeper with convolutions-22层 https://my.oschina.net/u/876354/blog/1637819 那么,GoogLeNet是如何进一步提升 ...
- java获取中文汉字的所有拼音
java获取中文汉字的所有拼音 中文汉字可能有很多读音,java中分别用1,2,3,4来区别,例如“作”字,就有三个读音,zuo1,zuo2,zuo4. java获取汉字读音拼音代码如下所示: S ...
- CerntOS7下搭建git服务器
(1).安装git yum安装git,需要ssh的支持.某些版本需要安装git-core,那才是服务器. [root@youxi1 ~]# yum -y install git 创建git用户 [ro ...
- 开启windows ping端口功能
1.打开控制面板,选择程序 2.选择打开和关闭windows功能 3.将Tenet客户端选项勾上 4.运行栏中输入cmd,进入到命令窗口 5.输入命令 ping ip地址 端口号 ...
- python基础之:九步认识装饰器
step1. 先看个代码吧: def f(): ') f=lambda a:a +100 #覆盖上面的函数f print(f) #函数名指函数所在内存中的位置,入带后面括号表示执行函数 print(f ...
- mysql常用命令、非交互式mysql命令看29条
CentOS下mysql数据库常用命令总结1.更改root密码 mysqladmin -uroot password 'yourpassword' 2.远程登陆mysql服务器 mysql -uroo ...
- IDEA的查询引用、调用关系图的功能(转)
转自: http://www.cnblogs.com/ghj1976/p/5382455.html Eclipse的"Call Hierarchy"可以查看一个Java方法或类成员 ...
- 移动架构之MVP框架
MVP是在开发中常用的框架,要了解其原理,先要从了解MVC开始,这里就对MVP框架做一个简单的介绍 MVC MVC为Model,View与Controllor的缩写 Model:业务逻辑和实体模型 V ...
- idea用maven创建web项目(详细)
引用:http://blog.csdn.net/u010361662/article/details/50605099 欢迎添加微信