BootStrap
框架:一个半成品软件,可以简化编码
Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目
好处:
- 定义了很多css样式和js插件
- 响应式布局 手机端和桌面端分别适应,同一套页面可以兼容不同的设备
响应式布局
实现依赖于栅格系统 ,将一行均分为12个格子
实现步骤:
-
定义容器
div class="container-fluid"
每一种设备都是100%宽度div class="container"
则是默认在两边留白 -
定义行 row
-
定义元素
col-设备代号-格子数目
注意:
- 栅格类设备向上兼容
- 如果一行中格子数目超过12,则超出部分自动换行
- 如果真实设备宽度小于了设置山各类属性的设备代码的最小值,会一个元素占满一整行
css样式和js插件
全局css样式:
-
按钮 class=“btn btn-default”
-
图片
-
<img src="image/ascii_dog.png" alt="..." class="img-circle"> 圆形 <img src="image/ascii_dog.png" alt="..." class="img-thumbnail"> 相框 <img src="image/ascii_dog.png" alt="..." class="img-responsive"> 自适应
-
表格
-
表单 class=“form-control”
组件:
- 导航条
- 分页条
插件:
- 轮播图
网站首页
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim 和 Respond.js 是为了让 IE8 支持 HTML5 元素和媒体查询(media queries)功能 -->
<!-- 警告:通过 file:// 协议(就是直接将 html 页面拖拽到浏览器中)访问页面时 Respond.js 不起作用 -->
<!--[if lt IE 9]>
<![endif]-->
<style>
.paddtop {
padding-top: 10px;
}
.search-input {
float: left;
border: 2px solid #1b6d85;
width: 370px;
height: 35px;
padding: 5px;
margin-top: 15px;
}
.search-btn {
float: left;
border: 2px solid #1b6d85;
width: 70px;
height: 35px;
background: #1b6d85;
margin-top: 15px;
}
.jx {
border-bottom: 2px solid #2e6da4;
padding: 5px;
}
.company {
height: 40px;
background: #2b669a;
text-align: center;
font-size: 15px;
line-height: 40px;
color: gainsboro;
}
</style>
</head>
<body>
<!--1.页眉-->
<header class="container-fluid">
<div class="row">
<img src="images/top_banner.jpg" class="img-responsive">
</div>
<div class="row paddtop">
<div class="col-md-3">
<img src="images/logo.jpg " class="img-responsive">
</div>
<div class="col-md-5">
<input class="search-input" placeholder="请输入线路">
<button class="search-btn" href="#">搜索</button>
</div>
<div class="col-md-4">
<img src="images/hot_tel.jpg">
</div>
</div>
<div class="row">
<br>
<!-- 导航栏-->
<nav class="navbar navbar-default">
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">首页</a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active"><a href="#">精选线路<span class="sr-only">(current)</span></a></li>
<li><a href="#">国内游</a></li>
<li><a href="#">亚洲</a></li>
<li><a href="#">欧洲</a></li>
<li><a href="#">美洲</a></li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
</div>
<div class="row">
<!-- 轮播图-->
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="images/banner_1.jpg">
<div class="carousel-caption">
</div>
</div>
<div class="item">
<img src="images/banner_2.jpg">
<div class="carousel-caption">
</div>
</div>
<div class="item">
<img src="images/banner_3.jpg">
<div class="carousel-caption">
</div>
</div>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
</div>
</header>
<br>
<!--2.主体部分-->
<div class="container">
<div class="row jx">
<img src="images/icon_5.jpg">
<span>黑马精选</span>
</div>
<div class="row paddtop">
<div class="col-md-3">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
<div class="col-md-3">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
<div class="col-md-3">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
<div class="col-md-3">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
</div>
<div class="row jx">
<img src="images/icon_5.jpg">
<span>国内游精选</span>
</div>
<div>
<div class="row">
<div class="col-md-4 paddtop">
<div class="thumbnail">
<img src="images/guonei_1.jpg">
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
<div class="col-md-8 paddtop">
<div class="row">
<div class="col-md-4">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
<div class="col-md-4">
<div class="thumbnail">
<img src="images/jingxuan_2.jpg">
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<p>上海直飞日本</p>
<font color="#ff4500">$999</font>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!--3.页脚部分-->
<footer class="container-fluid">
<div class="row">
<img src="images/top_banner.jpg" class="img-responsive">
</div>
<div class="row company">
版权所有
</div>
</footer>
<br><br>
<!-- jQuery (Bootstrap 的所有 JavaScript 插件都依赖 jQuery,所以必须放在前边) -->
<script src="https://cdn.jsdelivr.net/npm/jquery@1.12.4/dist/jquery.min.js"></script>
<!-- 加载 Bootstrap 的所有 JavaScript 插件。你也可以根据需要只加载单个插件。 -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
XML
概念
XML 指可扩展标记语言(eXtensible Markup Language)。
XML 被设计用来传输和存储数据。HTML 被设计用来显示数据。
XML 是独立于软件和硬件的信息传输工具。
XML | HTML |
---|---|
语法严格 | 语法松散 |
自定义标签 | 预定义标签 |
存储数据 | 展示数据 |
语法
<?xml version='1.0'?> 文档声明一定要顶格写
<users> 有且仅有一个根标签
<user id='1'> 引号单双皆可 (IDEA 默认给的是双引号)
<name>zhangsan</name>
<age>18</age>
<gender>male</gender>
<br/> 可以使用自闭和标签 xml标签区分大小写
在 XML 中,省略关闭标签是非法的。所有元素都必须有关闭标签
</user>
<user id='2'>
<name>lisi</name>
<age>19</age>
<gender>female</gender>
</user>
</users>
XML组成部分
-
文档声明
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
- version 版本号
- encoding 编码方式
- standalone 是否独立 yes 是依赖于其他文件 no是独立
-
指令
- 可以结合CSS使用
-
标签
- 名称是自定义的
- 不能以数字和标点开头/不能包含空格
-
属性
- id属性值唯一
-
文本
-
CDATA区,在该区域以原样展示
XML 文档中的所有文本均会被解析器解析。只有 CDATA 区段中的文本会被解析器忽略
-
约束
规定了xml文档的书写规则
- 能够在xml中引入约束文档
- 能够简单的读懂约束文档
DTD:简单约束
<!ELEMENT students (student*)>
<!-- *号 代表出现0次或多次-->
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
<!--这是一个本地约束-->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "student.dtd">
<!--遵守dtd约束中的约束,根目录已经定义好了是students-->
<students>
<student number="s001">
<name>cat</name>
<age>18</age>
<sex>female</sex>
</student>
<student number="s002">
<name>dog</name>
<age>18</age>
<sex>male</sex>
</student>
</students>
Schema :复杂约束
XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD
- 定义可出现在文档中的元素
- 定义可出现在文档中的属性
- 定义哪个元素是子元素
- 定义子元素的次序
- 定义子元素的数目
- 定义元素是否为空,或者是否可包含文本
- 定义元素和属性的数据类型
- 定义元素和属性的默认值以及固定值
解析
解析:操作XML文档,将文档中的数据读到内存中
写入:将内存中的数据保存在XML文档中
解析方式:
DOM | SAX |
---|---|
将标记语言一次性加载进内存中,形成DOM树 | 逐行加载,基于事件驱动 |
操作方便,可对文档进行CRUD | 只能读取 |
占内存,一般适用于服务器 | 不占内存,适用于手机 |
解析器
-
JAXP 支持dom和sax两种思想
-
DOM4J
-
Jsoup (学习重点)
-
PULL 安卓系统的内置解析 支持sax
Jsoup
对象的使用
- Jsoup 工具类,可以通过
.parse
方法解析XML和HTML 返回Document- 通过外部路径获得
Document document = Jsoup.parse(new File(path), "utf-8");
- 通过内部获得
- 通过网络获得
- 通过外部路径获得
- Document 文档对象 ,代表内存中的dom树
- Elements 元素对象的集合
- Element
- 获取属性值 attr(String key)
- 获取文本内容 text
- Node 节点对象 是Document和Element的父类
快捷查询方式
- selector 选择器
Elements select2 = document.select("student[number =\"s001\"] > age");
- 在
student
标签中查找number = s001
的那个,并且找到他的age属性
- XPath
- 这是XML 的路径语言,XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。
- 使用前需要导包
- 具体语法参考