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 Array增加each方法
Apr 07 Javascript
js实现div闪烁原理及实现代码
Jun 24 Javascript
jquery滚动特效集锦
Jun 03 Javascript
莱鸟介绍javascript onclick事件
Jan 06 Javascript
BootStrap无限级分类(无限极分类封装版)
Aug 26 Javascript
关于Function中的bind()示例详解
Dec 02 Javascript
javaScript和jQuery自动加载简单代码实现方法
Nov 24 jQuery
vue 项目中使用Loading组件的示例代码
Aug 31 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
Oct 02 Javascript
js实现时钟定时器
Mar 26 Javascript
antd table按表格里的日期去排序操作
Nov 17 Javascript
Vue2项目中对百度地图的封装使用详解
Jun 16 Vue.js
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
用PHP实现小型站点广告管理
2006/10/09 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
js获取变量
2006/08/24 Javascript
很可爱的输入框
2008/08/03 Javascript
javascript Math.random()随机数函数
2009/11/04 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
JS 模态对话框和非模态对话框操作技巧汇总
2013/04/15 Javascript
jquery.cookie用法详细解析
2013/12/18 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
javascript如何判断输入的url是否正确
2014/04/11 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
使用Promise链式调用解决多个异步回调的问题
2017/01/15 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
nodemon实现Typescript项目热更新的示例代码
2019/11/19 Javascript
[46:04]Liquid vs VP Supermajor决赛 BO 第四场 6.10
2018/07/05 DOTA
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
python如何为创建大量实例节省内存
2018/03/20 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
Python检查ping终端的方法
2019/01/26 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
AmazeUI 模态窗口的实现代码
2020/08/18 HTML / CSS
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
澳大利亚优质的家居用品和生活方式公司:Bed Bath N’ Table
2019/04/16 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
员工培训邀请函
2014/02/02 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
应聘护士求职信
2014/07/21 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
公务员年度考核个人总结
2015/02/12 职场文书
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android
nginx 配置指令之location使用详解
2022/05/25 Servers