React应用中使用Bootstrap的方法


Posted in Javascript onAugust 15, 2017

前言

本节我们将把bootstrap,font-awesome应用到app中,同时创建一个基本的主页。主要将用到以下包:

  • bootstrap-loader及配合工作的一系列loader:bootstrap-sass(bootstrap3) css-loader node-sass sass-loader style-loader url-loader.具体使用见官方文档
  • postcss-loader autoprefixer:自动添加-webkit-box等前缀
  • react-bootstrap:在react使用bootstrap组件

bootstrap-loader配置

在webpack的entry入口处添加bootstrap的引用

entry: [
    'bootstrap-loader',
  path.resolve(projectRootPath,'src/app.js')
 ]

然后在应用目录下添加.bootstraprc配置文件,对要用到的组件进行选择,怎么配置在官方文档中有非常详细的配置说明及模板。可以直接使用。

然后在webpack的配置文件module.loaders中添加css,woff2,tff等文件的加载功能

loaders:[
 {
  test:/\.js$/,
  exclude:/node_modules/,
  loader:'babel-loader',
  query:{
   presets:['es2015','react','stage-0'],
   plugins:['transform-decorators-legacy']
  }
 },
 {test:/\.css$/,loader:'style!css'},
 { test: /\.scss$/, 
  loader: 'style!css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!postcss-loader!sass?outputStyle=expanded&sourceMap'
 },
 {
  test: /\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  loader: "url?limit=10000"
 },
 {
  test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/,
  loader: 'file'
 } 
]loaders:[
 {
  test:/\.js$/,
  exclude:/node_modules/,
  loader:'babel-loader',
  query:{
   presets:['es2015','react','stage-0'],
   plugins:['transform-decorators-legacy']
  }
 },
 {test:/\.css$/,loader:'style!css'},
 { test: /\.scss$/, 
  loader: 'style!css?modules&importLoaders=2&sourceMap&localIdentName=[local]___[hash:base64:5]!postcss-loader!sass?outputStyle=expanded&sourceMap'
 },
 {
  test: /\.woff2?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  loader: "url?limit=10000"
 },
 {
  test: /\.(ttf|eot|svg)(\?[\s\S]+)?$/,
  loader: 'file'
 } 
]

最后可以在.bootstraprc中做些css样式的配置,以替换原来的css,这里简单介绍几个:

首先,在src中新建目录theme用于存放所有与css相关的文件

preBootstrapCustomizations

定义一些能变量,可以在app直接使用

preBootstrapCustomizations: ./src/theme/variables.scss

src/theme/variables.scss主要是定义了一些与颜色相关的变量

// 自己定义颜色
$cyan: #33e0ff;
$humility: #777;

// Bootstrap 变量
$brand-primary: darken(#428bca, 6.5%);
$brand-secondary: #e25139;
$brand-success: #5cb85c;
$brand-warning: #f0ad4e;
$brand-danger: #d9534f;
$brand-info: #5bc0de;

$text-color: #333;

$font-size-base: 14px;
$font-family-sans-serif: "Helvetica Neue", Helvetica, sans-serif;

bootstrapCustomizations

自定义样式,在preBootstrapCustomizations加载后,所有可以在其中使用preBootstrapCustomizations定义的变量

appStyles

bootstrap加载后,最后加载里面的样式,这里可以重写一些bootstrap样式

appStyles: ./src/theme/bootstrap.overrides.scss

src/theme/bootstrap.overrides.scss重新定义了一些样式

.navbar-brand {
 position: relative;
 padding-left: 50px;
}

.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
 color: #33e0ff;
 background-color: transparent;
}

应用

打开我们的scr/containers/App/App.js现在添加一个bootstrap样式的导航条吧

这里我们添加了两个文件App.scss(App目录中)样式,图片logo.png(Home目录中),代码我就不贴了,CSS不是我们目的,可以自己在源码中看,非常简单

import React,{Component, PropTypes} from 'react'
import {IndexLink} from 'react-router' //主页路由

import { Navbar, Nav, NavItem } from 'react-bootstrap'; // 导航组件

export default class App extends Component {

 render(){
  const styles = require('./App.scss') //scss的样式
  return(
   <div className={styles.app}>
    <Navbar fixedTop>
     <Navbar.Header>
      <Navbar.Brand> //注意这里,就用了我们重写的navbar-brand
       <IndexLink to="/" activeStyle={{color: '#33e0ff'}}>
        <div className={styles.brand}/>
        <span>React Redux Example</span>
       </IndexLink>
      </Navbar.Brand>
      <Navbar.Toggle/>
     </Navbar.Header>
    </Navbar>
    <div className={styles.appContent}>{this.props.children}</div>
    <div>App footer</div>
   </div>
  )
 }
}

最终效果如图

React应用中使用Bootstrap的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js浮点数保留两位小数点示例代码(四舍五入)
Dec 26 Javascript
SeaJS入门教程系列之SeaJS介绍(一)
Mar 03 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
Sep 06 Javascript
JavaScript类型系统之基本数据类型与包装类型
Jan 06 Javascript
jQuery排序插件tableSorter使用方法
Feb 10 Javascript
jQuery.cookie.js使用方法及相关参数解释
Mar 06 Javascript
js实现移动端导航点击自动滑动效果
Jul 18 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 jQuery
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
Aug 16 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
Aug 20 Javascript
Vue 实现一个命令式弹窗组件功能
Sep 25 Javascript
JavaScript函数中的this四种绑定形式
Aug 15 #Javascript
详解react使用react-bootstrap当轮子造车
Aug 15 #Javascript
JScript实现表格的简单操作
Aug 15 #Javascript
AngularJS日程表案例详解
Aug 15 #Javascript
jQuery实现菜单栏导航效果
Aug 15 #jQuery
js实现网页的两个input标签内的数值加减(示例代码)
Aug 15 #Javascript
JScript实现地址选择功能
Aug 15 #Javascript
You might like
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
PHP 动态随机生成验证码类代码
2010/04/09 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
JavaScript中“基本类型”之争小结
2013/01/03 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
JS库之Highlight.js的用法详解
2017/09/13 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
Python 的 Socket 编程
2015/03/24 Python
Python Property属性的2种用法
2015/06/21 Python
Python实现模拟时钟代码推荐
2015/11/08 Python
Python中格式化format()方法详解
2017/04/01 Python
python常见排序算法基础教程
2017/04/13 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
Pycharm小白级简单使用教程
2020/01/08 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
2020/11/24 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
校园之声广播稿
2014/01/31 职场文书
小学生开学感言
2014/02/28 职场文书
网络管理员岗位职责
2014/03/17 职场文书
导游个人求职信
2014/04/25 职场文书
毕业生学校推荐信范文
2014/05/21 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
教师节倡议书
2014/08/30 职场文书
平遥古城导游词
2015/02/03 职场文书
小区环境卫生倡议书
2015/04/29 职场文书
起诉书格式范文
2015/05/20 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android