目录
理解:Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。
bootstrap中文网:https://www.bootcss.com/
导入Bootstrap的css文件:bootstrap.min.css
导入Bootstrap的js文件:bootstrap.min.js
导入jquery的js文件:jquery.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 使用X-UA-Compatible来设置IE浏览器的兼容模式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!--
viewport表示视口
width=device-width指示视口的宽度用为设备屏幕的宽度
initial-scale=1.0指示web页面的缩放比例为1(就表示不缩放)
-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>bootstrap</title>
<!-- 载入bootstrap的css -->
<link href="./lib/bootstrap.min.css" rel="stylesheet"/>
<!-- 若使用bootstrap的js插件,则必须先导入jquery(因为bootstrap是依赖于jquery的) -->
<script src="./lib/jquery.js"></script>
<!-- 载入bootstrap的js:包括所有的bootstrap的js插件或者可以根据需要使用的js插件的调用 -->
<script src="./lib/bootstrap.min.js"></script>
</head>
<body>
<h1>hello bootstrap</h1>
</body>
</html>
container类用于固定宽度(宽度大小可以设置)并支持响应布局的容器(两侧会有留白,留白的大小取决于宽度的大小),但是高度需要具体大小来撑起
<style>
.container{
width: 300px;
background-color: aquamarine;
}
</style>
<body>
<div class="container">
hello bootstrap
</div>
</body>

container-fluid类用于完整(100%)宽度,占全部视口的容器(若在此基础上设置宽度就变成固定宽度,两侧就会有留白效果)。
<style>
.container-fluid{
background-color: aquamarine;
}
</style>
<body>
<div class="container-fluid">
hello bootstrap
</div>
</body>

bootstrap提供了一套响应式、移动设备优先的流式栅格系统,随着屏幕视口尺寸的增加,系统会自动分成最多12列。栅格系统用于通过一系列的行与列的组合来创建页面布局,你的内容就可以放到这些创建好的布局中
原理:通过定义容器的大小,平分成12份(也有平分成24/32份)最后结合媒体查询就制作出强大的响应式网格系统。bootstrap中的网格系统就是平分成12份

<div class="container">
<!-- 一行有12列 -->
<div class="row">
<div class="col-md-4">占4列</div>
<div class="col-md-8">占8列</div>
</div>
</div>
<div class="container">
<!-- 一行有12列 -->
<div class="row">
<!-- 设置大屏幕一次占列,小屏幕一次占6列 -->
<div class="col-md-3 col-sm-6" style="background-color: papayawhip;">1</div>
<div class="col-md-3 col-sm-6" style="background-color: yellow;">2</div>
<div class="col-md-3 col-sm-6" style="background-color: skyblue;">2</div>
<div class="col-md-3 col-sm-6" style="background-color: orange;">2</div>
</div>
</div>
注意:
列组合:更改数字来合并列(原则:列总和不能超过12,大于12则自动换到下一行)
列偏移:该列偏移后,那么后面的所有列都跟着偏移
<div class="container">
<!-- 一行有12列 -->
<div class="row">
<!-- 该列距离左边有1个格子的偏移量 -->
<div class="col-md-4 col-md-offset-1" style="background-color: antiquewhite;">占4列</div>
<div class="col-md-4" style="background-color: yellow;">占4列</div>
</div>
</div>
含义:改变列的方向,就是改变左右浮动,并且设置浮动的距离。在bootstrap框架网格系统中是通过添加类名col-md-push-*和col-md-pull-*表示(图中*代表移动的列的组合数。)往前pull,往后push
<div class="container">
<!-- 一行有12列 -->
<div class="row">
<!-- 第一个块向右移动了2个列,第二个列没移动,因此第二个列盖住第一个列的后半部分 -->
<div class="col-md-4 col-md-push-2" style="background-color: antiquewhite;">占4列</div>
<div class="col-md-4" style="background-color: yellow;">占4列</div>
</div>
</div>
理解:你可以在一个列中添加一个或多个row行容器,然后在这个行容器中插入列
<div class="container">
<!-- 一行有12列 -->
<div class="row">
<div class="col-md-4">
<div class="row">
<div class="col-md-4">1</div>
<div class="col-md-4">2</div>
<div class="col-md-4">3</div>
</div>
</div>
<div class="col-md-4">第二列</div>
</div>
</div>
<body>
<div class="h1">标题1<small>副标题</small></div>
<h2>标题2<span class="small">副标题</span></h2>
<h3>标题3</h3>
</body>

<body>
<p>我是一段话,<b>字号被加粗</b></p>
<p class="lead">我是一段加lead类的话,<span class="small">字号减小</span></p>
</body>
定义一套类名,通过以下颜色表示强调
<body>
<div class="text-muted">提示效果</div>
<div class="text-primary">主要效果</div>
<div class="text-success">成功效果</div>
<div class="text-info">信息效果</div>
<div class="text-warning">警告效果</div>
<div class="text-danger">危险效果</div>
</body>

前言:bootstrap定义4个类名来控制文本的对齐风格
<body>
<p class="text-left">我是左对齐</p>
<p class="text-right">我是右对齐</p>
<p class="text-center">我是居中对齐</p>
<p class="text-justify">我是两端对齐</p>
</body>
含义:前面没有符号的例表
<ul class="list-unstyled">
<li>列表1</li>
<li>列表2</li>
</ul>
解释:把垂直列表换成水平列表,而且去掉项目符号,保持水平显示(制作水平导航时常用)其主要用list-inline类来表示。
<ul class="list-inline">
<li>列表1</li>
<li>列表2</li>
</ul>

前言:可以使用dl-horizontal来制作水平定义列表,当标题宽度超过160px时会显示三个省略号
<dl class="dl-horizontal">
<dt>html超文本标记语言,多出来的</dt>
<dd>html为超文本标记语言,是一种标识性语言</dd>
<dt>css为层叠样式表</dt>
<dd>css为层叠样式表,为前端三剑客之一</dd>
</dl>

<body>
<!-- 只能显示单行代码 -->
<code>this is a simple code</code><br>
<code>this is a simple code</code>
<!-- 快捷键 -->
<p>使用<kbd>ctrl</kbd>+<kbd>s</kbd>保存内容</p>
<!-- 多行代码 -->
<!-- 代码会保留原本的格式包括空格与回车 -->
<!-- 当长度超过指定值时可以用pre-scrollable类添加滚动条 -->
<pre class="pre-scrollable">
<h1>hello springboot</h1>
public class PeopleApplication {
public static void main(String[] args) {
SpringApplication.run(PeopleApplication.class, args);
}
}
</pre>
</body>

前言:bootstrap为表格提供了一种基础样式和4种附加样式以及一个支持响应式的表格,在使用bootstrap表格的过程中,只需要添加对应的类名就可以得到不同的表格风格
基础样式
附加样式
注意:尽量在基础表格的情况下附加样式使用
<body>
<table class="table table-bordered">
<tr>
<td>11</td>
<td>12</td>
</tr>
<tr>
<td>21</td>
<td>22</td>
</tr>
</table>
</body>

表单标签用到的类
改变文本框大小
<body>
<div class="row">
<!-- 文本框 -->
<div class="col-md-3">
<input type="text" class="form-control"/>
</div>
<!-- 下拉框 -->
<div class="col-md-3">
<select class="form-control" multiple="multiple">
<option>北京</option>
<option>上海</option>
</select>
</div>
<!-- 文本域 -->
<div class="col-md-3">
<textarea class="form-control"></textarea>
</div>
</div>
</body>
<!-- 复选框 -->
<div class="row">
<!-- 垂直显示:通过div的class="checkbox"实现 -->
<div class="col-md-3">
<div class="checkbox">
<label><input type="checkbox" name="hobby"/>唱歌</label>
</div>
<div class="checkbox">
<label><input type="checkbox" name="hobby"/>跳舞</label>
</div>
</div>
<!-- 水平显示:通过label标签的class="checkbox-inline"实现 -->
<div class="col-md-3">
<label class="checkbox-inline">
<input type="checkbox" name="hobby"/>唱歌
</label>
<label class="checkbox-inline">
<input type="checkbox" name="hobby"/>跳舞
</label>
</div>
</div>
<!-- 单选框 -->
<div class="row">
<!-- 垂直显示:通过div的class="radio"实现 -->
<div class="col-md-3">
<div class="radio">
<label><input type="radio" name="sex"/>男</label>
</div>
<div class="radio">
<label><input type="radio" name="sex"/>女</label>
</div>
</div>
<!-- 水平显示:通过label标签的class="radio-inline"实现 -->
<div class="col-md-3">
<label class="radio-inline">
<input type="radio" name="sex"/>男
</label>
<label class="radio-inline">
<input type="radio" name="sex"/>女
</label>
</div>
</div>
前言:使用具体的类代表特定样式的按钮(不仅可以使用在button标签里,也可以使用在其他标签里)
基础样式:btn
<button class="btn">按钮</button>
<a href="https://www.baidu.com" class="btn btn-primary">链接</a>
附加样式:btn-primary、btn-info、btn-success、btn-warning、btn-danger、btn-link、btn-default
<body>
<button class="btn">普通按钮</button>
<button class="btn btn-primary">primary按钮</button>
<button class="btn btn-danger">danger按钮</button>
<button class="btn btn-success">success按钮</button>
<button class="btn btn-warning">warning按钮</button>
<button class="btn btn-info">info按钮</button>
<button class="btn btn-default">default按钮</button>
<button class="btn btn-link">link按钮</button>
</body>

<body>
<button class="btn">按钮1</button>
<button class="btn btn-lg">按钮2</button>
<button class="btn btn-sm">按钮3</button>
<button class="btn btn-xs">按钮4</button>
</body>

<body>
<button class="btn">按钮</button>
<!-- 点击事件失败 -->
<button class="btn" disabled onclick="alert('hello')">按钮1</button>
<!-- 点击事件成功 -->
<button class="btn disabled" onclick="alert('hello')">按钮2</button>
</body>
基本表单结构都是Bootstrap自带的,个别表单控件会自动接收一些全局样式,下面列出创建基本表单的步骤
表单类名为form-horizontal(配合网格系统使用)
<!-- 水平表单 -->
<form action="#" class="form-horizontal" role=“form”>
<!-- 表单中的表单元素 -->
<div class="form-group">
<!-- label的样式 -->
<label for="uname" class="control-label col-md-2">姓名</label>
<div class="col-md-8">
<input type="text" id="uname" class="form-control" placeholder="请输入您的姓名"/>
</div>
</div>
<div class="form-group">
<!-- label的样式 -->
<label for="upwd" class="control-label col-md-2">密码</label>
<div class="col-md-8">
<input type="text" id="upwd" class="form-control" placeholder="请输入您的密码"/>
</div>
</div>
<div class="form-group">
<div class="col-md-2 col-md-offset-5">
<button class="btn btn-primary">提交</button>
</div>
</div>
</form>

理解:将表单控件都放到一行显示,用到的表单类名为form-inline
<form action="#" class="form-inline" role="form">
<div class="form-group">
<label for="username">姓名</label>
<input type="text" id="username" class="form-control" placeholder="请输入您的姓名"/>
</div>
<div class="form-group">
<label for="password">密码</label>
<input type="text" id="password" class="form-control" placeholder="请输入您的密码"/>
</div>
<div class="form-group">
<button class="btn btn-default">提交</button>
</div>
</form>

注意:这里不用设置格子,因为它所有元素都在一行,设置格子也没意义
前言:在bootstrap中类名为thumbnail的块将被解析为缩略图
注意:缩略图的实现是配合网格系统一起使用,同时还可以让缩略图配合标题、描述内容按钮等
<div class="container">
<div class="row">
<div class="col-md-3">
<!-- 缩略图 -->
<div class="thumbnail">
<img src="./static/1.jpg" style="width:240px;height:360px;">
<h3>高圆圆</h3>
<p>出生于北京,中国内地影视女演员,模特。</p>
<button class="btn btn-default">
<!-- 图标组件 -->
<span class="glyphicon glyphicon-heart"></span>喜欢
</button>
<button class="btn btn-info">
<span class="glyphicon glyphicon-pencil"></span>评论
</button>
</div>
</div>
</div>
</div>
前言:使用具体的类名代表特定样式的面板
基础样式:panel
附加样式(面板颜色)
panel-success:成功绿panel-info:信息蓝panel-warning:警告黄panel-danger:危险红注意:面板由面板头和面板体以及面板尾部构成
<div class="panel panel-warning">
<!-- 面板头 -->
<div class="panel-heading">
离骚
</div>
<!-- 面板体 -->
<div class="panel-body">
路漫漫其修远兮,吾将上下而求索。
</div>
<!-- 面板尾部 -->
<div class="panel-footer">
作者:屈原
</div>
</div>

前言:根据导航块的类名不同可以显示多种导航栏(通常与列表一起使用)
基础样式:nav
<p>标签式的导航菜单</p>
<ul class="nav nav-tabs">
<li><a href="#">Home</a></li>
<!-- 默认选中 -->
<li class="active"><a href="#">Java</a></li>
<!-- 禁用导航 -->
<li class="disabled"><a href="#">PHP</a></li>
</ul>

<p>基本的胶囊式导航菜单</p>
<ul class="nav nav-pills">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Java</a></li>
<li><a href="#">PHP</a></li>
</ul>

<p>垂直的胶囊式导航菜单</p>
<ul class="nav nav-pills nav-stacked">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Java</a></li>
<li><a href="#">PHP</a></li>
</ul>

<p>两端对齐的导航元素</p>
<ul class="nav nav-tabs nav-justified">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Java</a></li>
<li><a href="#">PHP</a></li>
</ul>

<p>面包屑式的导航元素</p>
<ul class="breadcrumb">
<li><a href="#">Home</a></li>
<li><a href="#">Java</a></li>
<li class="active"><a href="#">PHP</a></li>
</ul>

页码导航基本样式:ul标签上加pagination类
页码导航附加样式
翻页导航:ul标签上添加pager类
<ul class="pagination pagination-lg">
<!-- 左双箭头 -->
<li><a href="#">«</a></li>
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li class="active"><a href="#">3</a></li>
<!-- 右双箭头 -->
<li><a href="#">»</a></li>
</ul>

<ul class="pager">
<li><a href="#">上一页</a></li>
<li><a href="#">下一页</a></li>
</ul>

<!-- 使用一个类名为dropdown或btn-group的div包裹整个下拉框(向下:dropdown;向上:dropup) -->
<div class="dropdown">
<!-- 使用button作为父菜单,使用类名:dropdown-toggle和自定义data-toggle属性 -->
<button class="btn btn-default dropdown-toggle" data-toggle="dropdown">
频道
<!-- 设置下拉箭头(caret类) -->
<span class="caret"></span>
</button>
<!-- 下拉菜单使用一个ul列表,并定义一个类名为dropdown-menu -->
<ul class="dropdown-menu">
<!-- 分组标题,添加类名dropdown-header -->
<li class="dropdown-header">--科普--</li>
<li class="active"><a href="#">人与自然</a></li>
<li><a href="#">动物世界</a></li>
<!-- 添加分割线,添加divider类 -->
<li class="divider"></li>
<li class="dropdown-header">--搞笑--</li>
<li class="disabled"><a href="#">快乐大本营</a></li>
<li><a href="#">生活大爆炸</a></li>
</ul>
</div>

理解:模态框是父窗体上的子窗体,通常,目的是显示一个单独的源的内容,可以在不离开父窗体的情况下有一些互动,子窗体可以提供信息、交互等
$('#identifier').modal(options)
注意:options为特定的函数;(展示模态框的函数:show、隐藏模态框函数:hide)
<h2>创建模态框(Modal)</h2>
<!-- 按钮触发模态框 -->
<!-- data-toggle="modal"用于打开模态框窗口 -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">开始演示模态框</button>
<!-- 模态框(Modal) -->
<!-- aria-labelledby="myModalLabel",该属性引用模态框的标题。 -->
<!-- 属性 aria-hidden="true" 用于保持模态窗口不可见,直到触发器被触发为止(比如点击在相关的按钮上)。 -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<!-- 定义模态框的头部 -->
<div class="modal-header">
<!-- class="close"属性用于为模态框关闭窗口设置样式 -->
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<!-- 模态框的标题 -->
<h4 class="modal-title" id="myModalLabel">模态框标题</h4>
</div>
<!-- 定义模态框的体部 -->
<div class="modal-body">在这里添加一些文本</div>
<!-- 定义模态框的尾部 -->
<div class="modal-footer">
<!-- data-dismiss="modal"用于关闭模态框窗口的属性 -->
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary">提交更改</button>
</div>
</div>
</div>
</div>

<body>
<link rel="stylesheet" href="./lib/bootstrap.min.css">
<script src="./lib/jquery.js"></script>
<script src="./lib/bootstrap.min.js"></script>
<!-- 打开模态框 -->
<div class="btn btn-primary" id="btn">打开模态框</div>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">模态框标题</h4>
</div>
<div class="modal-body">在这里添加一些文本</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary" id="submitBtn">提交更改</button>
</div>
</div>
</div>
</div>
</body>
<script>
/* 模态框的显示 */
$('#btn').on('click',function(){
$("#myModal").modal("show")
})
/* 模态框的隐藏 */
submitBtn.onclick=()=>{
$("#myModal").modal("hide")
}
</script>
我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po