1. 添加动态效果组件

  yarn add react-transition-group

2. 修改 src/common/header/index.js

import React, {Component} from 'react';

import {CSSTransition} from 'react-transition-group';

import {

HeaderWrapper,

Logo,

Nav,

NavItem,

SearchWrapper,

NavSearch,

Addtion,

Button

} from './style';

class Header extends Component{

constructor(props){

super(props);

this.state = {

focused : false

}

this.searchFocus = this.searchFocus.bind(this);

this.searchBlur = this.searchBlur.bind(this);

}

searchFocus(){

this.setState({

focused : true

})

}

searchBlur(){

this.setState({

focused : false

})

}

render(){

return (

<HeaderWrapper>

<Logo />

<Nav>

<NavItem className="left active">首页</NavItem>

<NavItem className="left">下载</NavItem>

<NavItem className="right">登陆</NavItem>

<NavItem className="right">

<span className="iconfont">&#xe601;</span>

</NavItem>

<SearchWrapper>

<CSSTransition

in={this.state.focused}

timeout={200}

classNames='slide'

>

<NavSearch

className={this.state.focused? 'focused' : ''}

onFocus={this.searchFocus}

onBlur={this.searchBlur}

></NavSearch>

</CSSTransition>

<span className={this.state.focused? 'focused iconfont' : 'iconfont'}>&#xe60b;</span>

</SearchWrapper>

</Nav>

<Addtion>

<Button className='writting'>

<span className="iconfont">&#xe703;</span>

写文章

</Button>

<Button className='reg'>注册</Button>

</Addtion>

</HeaderWrapper>

);

}

}

export default Header;

3. 修改 src/common/header/style.js

引入 slide-enter  ,   slide-enter-active , slide-exit , slide-exit-active

import styled from 'styled-components';

import LogoPic from '../../statics/logo.png';

export const HeaderWrapper = styled.div`

postition: relate;

height:56px;

border-bottom:1px solid #f0f0f0;

`;

export const Logo = styled.a.attrs({

href : '/'

})`

position: absolute;

left : 0;

top : 0;

display: block;

height:56px;

width:100px;

background: url(${LogoPic}) no-repeat;

background-size: contain;

`;

export const Nav = styled.div`

width:960px;

box-size: box-size;

padding-right: 70px;

height: 56px;

margin-left: 100px;

`

export const NavItem = styled.div`

&.left {

float: left;

}

&.right {

float: right;

color: #969696;

}

&.active {

color: #ea6f5a;

}

line-height: 56px;

front-size: 15px;

padding-left: 6px;

padding-right: 12px;

color: #333;

`;

export const SearchWrapper = styled.div`

float: left;

position: relative;

.iconfont {

position: absolute;

right: 5px;

bottom: 5px;

width: 30px;

line-height:30px;

border-radius : 15px;

text-align:center;

&.focused{

background : #777;

color : #fff;

}

}

`;

export const NavSearch = styled.input.attrs({

placeholder : '搜索'

})`

width : 160px;

height : 38px;

border: none;

outline : none;

padding : 0 35px 0 20px;

box-size: box-size;

margin-top: 9px;

margin-left: 20px;

border-radius : 19px;

background: #eee;

font-size: 14px;

&::placeholder{

color: #999;

}

&.focused{

width: 200px;

}

&.slide-enter {

width: 160px;

transition: all .2s ease-out;

}

&.slide-enter-active {

width: 200px;

}

&.slide-exit {

width: 200px;

transition: all .2s ease-out;

}

&.slide-exit-active {

width: 160px;

}

`;

export const Addtion = styled.div`

position:absolute;

right: 0;

top: 0;

height: 65px;

`;

export const Button = styled.div`

float:right;

line-height:38px;

margin-top:9px;

margin-right: 20px;

border-radius: 19px;

border : 1px solid rgba(236,97,73,.7);

color : #fff;

padding : 0 20px;

&.reg{

color:#ea6f5a;

}

&.writting{

background:#ea6f5a;

}

`;

3 react 简书 添加 头部搜索动态效果的更多相关文章

  1. react 简书开发笔记

    详见文章<React简书开发实战课程笔记>

  2. 2. react 简书 头部(header) 图标添加

    1. 访问 iconfont 并注册 登陆 2. 进入 iconfont 头部 图标管理->我的项目 3. 点击右边的文件夹 + 号 图标 创建我的项目 输入项目名称即可 4.在 搜索框 搜索 ...

  3. 2. react 简书 头部 (header) 样式编写

    1. 在 src 下 创建 common 文件下 创建 header 文件夹下 创建 index.js #src/common/header/index.js import React, {Compo ...

  4. React 简书

    create-react-app   jianshu yarn add styled-components -D       利用js写css样式  样式会更高效 https://github.com ...

  5. 4 react 简书 引入 redux 的 combineReducers 对 redux 数据进行管理

    1. src 下的 common 下的 header 创建 store 文件夹 下创建 reducer.js # src/common/header/store/reducer.js const st ...

  6. react简书

    开发项目之前的准备 https://www.chromefor.com/  登录此网站 下载相关crx react插件 不然要FQ 下载 React Developer Tools 谷歌插件下载 Re ...

  7. react简书笔记一 环境, git 和 项目 关联

    1.. 建立git项目  ( 码云, github 都可以 ), 具体步骤: https://www.cnblogs.com/andy-lehhaxm/p/10720717.html 1.1  git ...

  8. 1. react 简书 项目初始化

    1. 创建 react 项目 npx create-react-app my-app 2. src 目录下删除 除了 index.js index.css app.js 的文件 3. 引入 style ...

  9. vue添加滚动事件,解决简书Carol_笑一笑方案中vue移除滚动事件失效的问题

    在写项目的时候,遇到了需要添加滚动事件的问题,在简书Carol_笑一笑这里找到了解决方案.代码如下 <script> export default { name:"vue-scr ...

随机推荐

  1. 腾讯2019秋招--小q爬塔(dp)

    小Q爬塔 题目描述: 小Q 正在攀登一座宝塔,这些宝塔很特别.塔总共有 n 层,但是每两层之间的净高却不相同,所以造成了小Q 爬过每层的时间也不同.如果某一层的高度为 x,那么爬过这一层所需的时间也是 ...

  2. Day9 - F - Monkey and Banana HDU - 1069

    一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉.   ...

  3. 关于c++ 感想

    前言 在学校开展了c++的课程,但是不得不说相当乏味. 原因很简单: 1.感觉c++很高级,自己就这智商怎么学的会哦,自己给了自己门槛. 2.c++很难快速的做出一个能够展现的项目,缺乏成就感. 3. ...

  4. php 实现店铺装修1

    一.原型分析 1.店铺未装修的情况下,使用默认样式,哪个是默认样式由后台告知: 2.所有的样式由后台进行维护(但后台始终有一个默认样式,不可删除不可编辑),所有样式,只要用户未编辑过,则默认按照商品的 ...

  5. 利用Powerdesigner16.5(64位)连接64位oracle 配置系统odbc驱动

    利用Powerdesigner16.5(64位)连接64位oracle逆向工程数据库 记录一次Powerdesigner通过odbc连接64位oracle数据库.林林总总国内看到都是些乱七八糟没几个靠 ...

  6. java文件相关(文件追加内容、文件内容清空、文件内容读取)

    https://blog.csdn.net/xnz0616/article/details/39137177 1.文件内容追加 // 在已有的文件后面追加信息 public static void a ...

  7. ES6中 ,var,let和const的区别

    var的特点 没有代码块的概念,全局范围内都有效 存在“变量提升”现象,即变量可以在声明之前使用,值为undefined let的特点 声明的变量仅在块级作用域内有效,存在了代码块的概念 不存在“变量 ...

  8. js 中 一些重要的数组方法

    今天在学Vue的时候,看到了好多JS的数组方法,但是我不知道,我以为是Vue的方法,结果找了半天资料也没找出来,最后才发现这是JS的数组对象方法,于是就想做一下笔记,加深一下印象. Array 对象方 ...

  9. ffmpeg 学习:001-搭建开发环境

    介绍 由于命令行的ffmpeg工具无法满足产品的性能要求,需要对视频流进行兼容.所以需要调试有关的参数. FFmpeg全名是Fast Forward MPEG(Moving Picture Exper ...

  10. 回过头来看一看过去20年的十大IT趋势

    导读 这是一个概念,不是一个事物.其实,可以认为当组织的数据增长速度超过IT部门的管理能力时,大数据就开始了.此前,计算机部门的工作人员过去常常按时下班,除非是在灭火或编写代码的时候.而现在,数据管理 ...