html实现向下滑动后出现导航条,React实现顶部固定滑动式导航栏(导航条下拉一定像素时显示原导航栏样式)...

本文介绍如何基于React构建一个顶部固定且具有滑动效果的导航栏。当页面滚动超过一定距离时,导航栏会固定在顶部并改变背景颜色。主要技术栈包括React、Ant Design和浏览器事件监听。通过修改CSS实现导航栏的悬浮和沉浸效果,并展示了关键的JS和CSS代码片段。
摘要由CSDN通过智能技术生成

摘要

基于react的框架开发一个顶部固定滑动式的酷炫导航栏,当导航栏置顶时,导航栏沉浸在背景图片里;当鼠标滑动滚轮时,导航栏固定滑动并展示下拉样式。

js部分

相关技术栈:、、。详细的技术栈应用请参考官方文档的使用说明。

* 展示主页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 (

);

}

}

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;

}

基本效果图

导航栏置顶时:

7f67f1663083d5b46c2f9548506f73f1.png

导航栏下滑一定像素时:

e42a394b38cd933f0605a6e5dab8de2f.png

最后

以上就是小编在实战开发中的一个小分享,如有任何说的不对的地方,欢迎大家对我指指点点!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值