定义:
响应式布局:简单来说就是根据浏览设备不同,自动改变布局,图片,文字效果等。。不会影响用户浏览体验。
响应式网页必须要注意的事情:
媒体查询:css3
media 媒体 浏览网页的设备 screen (pc / pad / phone )
media Query 媒体查询 :可以根据当前的浏览设备的不同(包括尺寸、方向)有选择性的执行一部分css样式,忽略其他样式。
浏览设备的定义:
css样式中的注意要点:
- cursor: pointer; 点击按钮 手型
- float: left; 向左浮动
- 待续
bootstrap封装好很多常用的样式,只需要调用类名,但是项目中,对于很多样式,需要自己手写和媒体查询。
注意:导入四个包的时候顺序不能乱
<link rel="stylesheet" href="css/bootstrap.css">
<script src="js/jquery.min.js">script>
<script src="js/popper.min.js">script>
<script src="js/bootstrap.min.js">script>
(1)bootstrap支持四种分辨率:
bootstrap默认字体大小 0.25rem (1 rem = 16px );
button样式:与 btn 混用;
<div class="container">
<h1>按钮相关的样式h1>
<button class="btn btn-primary">按钮button>
<input type="button" value="成功" class="btn btn-success">
<a href="" class="btn btn-info">信息a>
<button class="btn btn-danger">按钮button>
<button class="btn btn-dark">按钮button>
<button class="btn btn-light">按钮button>
<button class="btn btn-outline-danger">按钮button>
<button class="btn btn-outline-secondary">按钮button>
<button class="btn btn-outline-success">按钮button>
<button class="btn btn-outline-warning">按钮button>
<hr />
<button class="btn btn-outline-success btn-lg">按钮button>
<button class="btn btn-outline-success btn-block">按钮button>
<button class="btn btn-outline-success btn-sm">按钮button>
div>
(2)图片样式:
<h1>图片相关的样式h1>
<img src="img/1.png" class="rounded">
<img src="img/2.png" class="rounded-circle">
<img src="img/3.png" class="img-thumbnail">
<img src="img/3.png" class="img-fluid">
(3)文字样式:
<div class="text-danger text-capitalize font-weight-normal text-left">lorem ipsum dolor sit amet,consectetur adipisicing elit.
blanditiis cum esse et facere iste reiciendis reprehenderit?
Assumenda, eum fugit id incidunt maiores nostrum numquam, odit officiis omnis quae quisquam suscipit?div>
(4)列表相关:
<h1>列表相关h1>
<ul class="list-unstyled list-group">
<li class="list-group-item-danger list-group-item disabled">111li>
<li class="list-group-item-danger list-group-item">222li>
<li class="list-group-item-danger list-group-item">333li>
<li class="list-group-item-danger list-group-item">444li>
<li class="list-group-item-danger list-group-item active">555li>
ul>
(5)表格样式:
<div class="container table-responsive">
<h1>表格相关h1>
<table class="table table-bordered table-hover">
<tr class="table-primary">
<td>序号td>
<td>名称td>
<td>类型 td>
tr>
<tr>
<td>1001td>
<td>javatd>
<td>javatd>
tr>
<tr>
<td>1002td>
<td>web前端td>
<td>web前端td>
tr>
<tr>
<td>1003td>
<td>软件体系结构td>
<td>软件工程td>
tr>
table>
div>
(6)边框类型:
<h1>边框相关h1>
<div class="border border-info border-left-0">1111111111111111111div>
<div class="border ">2222222222222222222div>
(7)浮动类型:
<h1>浮动相关样式h1>
<div class="border float-lg-left float-md-right">1111111111111111111div>
<div class="border float-lg-left float-md-right">2222222222222222222div>
(8)显示与隐藏:
<h1>显示与隐藏h1>
<div class="visible bg-danger rounded">3333333333div>
<div class="invisible">4444444444div>
(9)内外边距:
<h1>内外边距h1>
<div class="m-auto">5555555555555555555div>
(10)尺寸相关:
(11)栅格布局:重要:
<body>
<div class="container">
<div class="row">
<div class="col-4">1div>
<div class="col-4">2div>
<div class="col-4">3div>
div>
<div class="row">
<div class="col-3">1div>
<div class="col-6">2div>
<div class="col-3">3div>
div>
<div class="row">
<div class="col-2">1div>
<div class="col-8">2div>
<div class="col-2">3div>
div>
<div class="row">
<div class="col-3">1div>
<div class="col-3">2div>
<div class="col-3">3div>
<div class="col-3">4div>
div>
<div class="row">
<div class="col-lg-3 col-md-6 col-sm-12">1div>
<div class="col-lg-3 col-md-6 col-sm-12">2div>
<div class="col-lg-3 col-md-6 col-sm-12">3div>
<div class="col-lg-3 col-md-6 col-sm-12">4div>
div>
<div class="row">
<div class="col-2">
<div class="row">
<div class="col-12">豆蔻年华div>
<div class="col-12">花样青春div>
<div class="col-12">而立之年div>
<div class="col-12">玫瑰岁月div>
div>
div>
<div class="col-8">
<div class="row">
<div class="col-3"><img src="img/1.png" alt="">div>
<div class="col-3"><img src="img/1.png" alt="">div>
<div class="col-3"><img src="img/1.png" alt="">div>
<div class="col-3"><img src="img/1.png" alt="">div>
div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Ab consectetur debitis dolores dolorum eos et labore magni, nam,
nobis numquam odio quo saepe sed sequi, sunt totam voluptate. Aliquam, soluta.
div>
<div class="col-2">
<div class="row">
<div class="col-12">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Asperiores dolorem dolorum eveniet exercitationem,
ipsa molestias necessitatibus nobis placeat, quo rerum sed sint voluptates voluptatum.
Dicta libero nihil omnis quaerat tenetur!
div>
div>
div>
div>
div>
body>
(12)列偏移:
<div class="container">
<h1>列偏移h1>
<div class="row">
<div class="col-3">第一列div>
<div class="col-3 offset-6">第二列div>
div>
div>
(13)表单样式:
<h1>表单h1>
<form action="" class="form-group">
<div class="row">
<div class="col-2">用户名:div>
<div class="col-8">
<input type="text" class="form-control">
div>
<div class="col-2">用户名包含字母数字3-8位div>
div>
<div class="row">
<div class="col-2">密码:div>
<div class="col-8">
<input type="password" class="form-control">
div>
<div class="col-2">密码包含字母数字3-8位div>
div>
<div class="row">
<div class="col-1 offset-5">
<button class="btn btn-outline-success">登录button>
div>
<div class="col-1">
<button class="btn btn-outline-danger">取消button>
div>
div>
form>
(14)下拉菜单:
<div class="dropdown">
<button class="btn btn-danger dropdown-toggle" data-toggle="dropdown">下拉菜单button>
<div class="dropdown-menu">
<ul class="list-group">
<li class="list-group-item"><a href="#">菜单1a>li>
<li class="list-group-item"><a href="#">菜单1a>li>
<li class="list-group-item"><a href="#">菜单1a>li>
<li class="list-group-item"><a href="#">菜单1a>li>
<li class="list-group-item"><a href="#">菜单1a>li>
ul>
div>
div>
(15)按钮组:
<h1>垂直按钮组h1>
<div class="btn-group-vertical btn-group-sm">
<button class="btn btn-danger">西蓝花炒肉button>
<button class="btn btn-warning">西蓝花凉拌button>
<button class="btn btn-info">水煮西蓝花button>
<button class="btn btn-primary">白炒西蓝花button>
div>
<h1>默认按钮组h1>
<div class="btn-group">
<button class="btn btn-danger">西蓝花炒肉button>
<button class="btn btn-warning">西蓝花凉拌button>
<button class="btn btn-info">水煮西蓝花button>
<button class="btn btn-primary">白炒西蓝花button>
div>
(16)信息提示框:
<h1>信息提示框h1>
<div class="alert alert-danger">
今天好冷!!!!!!!!
<span class="close" data-dismiss="alert">×span>
div>
(17)导航:
<h1>水平导航h1>
<ul class="nav justify-content-around nav-justified">
<li class="nav-item"><a href="" class="nav-link">秒杀a>li>
<li class="nav-item"><a href="" class="nav-link">优惠券a>li>
<li class="nav-item"><a href="" class="nav-link">PLUS会员a>li>
<li class="nav-item"><a href="" class="nav-link">闪购a>li>
<li class="nav-item"><a href="" class="nav-link">品牌拍卖a>li>
ul>
(18)选项卡导航:
<h1>选项卡导航h1>
<ul class="nav nav-tabs">
<li class="nav-item"><a href="#tab1" class="nav-link active" data-toggle="tab">广东东莞大益队a>li>
<li class="nav-item"><a href="#tab2" class="nav-link" data-toggle="tab">深圳马可波罗a>li>
<li class="nav-item"><a href="#tab3" class="nav-link" data-toggle="tab">广州新时代a>li>
<li class="nav-item"><a href="#tab4" class="nav-link" data-toggle="tab">北京首钢a>li>
ul>
<div class="tab-content">
<div class="tab-pane active" id="tab1">1广东东莞大益队div>
<div class="tab-pane" id="tab2">2深圳马可波罗div>
<div class="tab-pane" id="tab3">3广州新时代div>
<div class="tab-pane" id="tab4">4北京首钢div>
div>
(19)胶囊导航:
<h1>胶囊导航h1>
<ul class="nav nav-tabs nav-pills">
<li class="nav-item"><a href="#tab5" class="nav-link" data-toggle="tab">JAVAa>li>
<li class="nav-item"><a href="#tab6" class="nav-link active" data-toggle="tab">C++a>li>
<li class="nav-item"><a href="#tab7" class="nav-link" data-toggle="tab">WEBa>li>
ul>
<div class="tab-content">
<div class="tab-pane" id="tab5">Java框架div>
<div class="tab-pane active" id="tab6">指针div>
<div class="tab-pane" id="tab7">网页div>
div>
(20)卡片:
<div class="card">
<div class="card-header">
<h4>卡片标题h4>
div>
<div class="card-body">
<p>lorem内容p>
div>
<div class="card-footer">
<p>版权所有p>
div>
div>
(21)媒体:
<h1>媒体h1>
<ul class="list-group">
<li class="list-group-item">
<div class="media">
<img src="img/1.png" alt="">
<div class="media-body">
<h4>多媒体h4>
<p>学的不仅是技术,还是梦想p>
div>
div>
li>
<li class="list-group-item">
<div class="media">
<img src="img/1.png" alt="">
<div class="media-body">
<h4>多媒体h4>
<p>学的不仅是技术,还是梦想p>
div>
div>
li>
<li class="list-group-item">
<div class="media">
<img src="img/1.png" alt="">
<div class="media-body">
<h4>多媒体h4>
<p>学的不仅是奇数,还是梦想p>
div>
div>
li>
ul>
(21)图片轮播:
轮播图片
左右箭头
轮播指示符小圆点
<h1>轮播图片h1>
<div class="carousel" data-ride="carousel" id="demo">
<div class="carousel-inner" >
<div class="carousel-item active">
<img src="img/5.png" alt="" class="w-100">
div>
<div class="carousel-item">
<img src="img/6.png" alt="" class="w-100">
div>
<div class="carousel-item">
<img src="img/7.png" alt="" class="w-100">
div>
<div class="carousel-item">
<img src="img/8.png" alt="" class="w-100">
div>
div>
<a href="#demo" data-slide="next" class="carousel-control-next">
<span class="carousel-control-next-icon">span>
a>
<a href="#demo" data-slide="prev" class="carousel-control-prev">
<span class="carousel-control-prev-icon">span>
a>
<ul class="carousel-indicators">
<li class="active" data-slide-to="0" data-target="#demo">li>
<li data-slide-to="1" data-target="#demo">li>
<li data-slide-to="2" data-target="#demo">li>
<li data-slide-to="3" data-target="#demo">li>
ul>
div>
express框架 基于node.js平台 引入express包
//1.引入express
const express = require('express');
const querystring = require('querystring');
// 2.创建web服务器
const app = express();
// 3.设置端口
app.listen(8080);
// 请求商品列表
// 请求的url:/list 请求的方法:get
// 通过回调函数做出相应
app.get('/list',(req,res)=>{
res.send('hello');
})
// 路由:用于处理特定的请求,包含请求的方法,url,回调函数,只有请求的方法和请求的url匹配,才会执行回调函数
// res 相应对象
// res.send() 设置相应的内容并发送
// res.sendFile() 设置相应的文件并发送 文件要使用绝对路径:__dirname+文件名
// res.redirect('http://www.tmooc.cn') 设置相应的重定向,挑战到另一个url
//当前模块的对决目录
// sonsole.log(__dirname);
//req请求对象
// 获取请求的方法 get post 请求的url
// console.log(req.method,req.url);
//直接获取传递的数据,格式为对象
// console.log(req.query); 输出为 key:value
// 对比get和post
// get:请求传递的数据是以查询字符串传递,可能会被浏览器缓存,速度相对快一点,传递数据不超过4K
// post:传递的数据是以请求为主体的方式传递,不会被浏览器缓存,速度相对慢一点,可以传递大文件
// let 是定义数据
//将分段的数据放入到参数chunk中
// console.log(chunk);
// let str = String(chunk);
// console.log(str);
// let obj = querystring.parse(str);
// res.send('登录成功:'+obj.username);
// /index get 这是首页
app.get('/index',(req,res)=>{
res.send('这是首页
');
})
//请求的url /请求的方法get 相应文件1.html
app.get('/',(req,res)=>{
res.sendFile(__dirname+'/1.html');
})
//当前模块的对决目录
// sonsole.log(__dirname);
// /detail get detail.html
app.get('/detail',(req,res)=>{
res.sendFile(__dirname+'/detail.html');
})
//跳转 get 请求的url /study http://www.tmooc.cn
app.get('/study',(req,res)=>{
res.redirect('http://www.tmooc.cn');
})
// 使用express创建web服务器,设置端口,添加路由(get,/search) 相应文件
// search.html h2-用户搜索
app.get('/search',(req,res)=>{
res.sendFile(__dirname+'/search.html');
})
//根据表单提交请求创建对应的路由 this is list
app.get('/mysearch',(req,res)=>{
res.send('this is list !'+req.query.keyword);
})
app.get('/login',(req,res)=>{
res.sendFile(__dirname+'/login.html');
})
app.post('/mylogin',(req,res)=>{
req.on('data',(chunk)=>{
//将分段的数据放入到参数chunk中
// console.log(chunk);
let str = String(chunk);
// console.log(str);
let obj = querystring.parse(str);
res.send('登录成功:'+obj.username);
});
})
导入路由器对象
// 导入包
// 导入路由器对象
const express = require('express');
const userRouter = require('./user.js');
const productRouter = require('./product');
// const querystring = require('querystring');
// 创建服务器对象
const app = express();
// 端口
app.listen(8080);
// 挂载路由器到web服务器下,添加前缀
// 参数1:添加的前缀
// 参数2:要挂载的路由器
app.use('/user',userRouter);
app.use('/product',productRouter);
路由器对象
// 引入包
const express = require('express');
// 创建路由器对象
const r = express.Router();
// 往路由器中添加路由 用户列表路由 get /list
r.get('/list',(req,res)=>{
res.send('这是用户列表');
})
// 导出路由器对象
module.exports = r;
拦截
const express = require('express');
const app = express();
app.listen(8080);
//智能按照url拦截
// 拦截对/list的请求
// 参数1:要拦截的url
// 参数2:回调函数,一旦拦截到,自动调用这个函数
app.use('/list',(req,res,next)=>{
//req res 和路由中的是一样的
//获取以查询字符串传递的数据
console.log(req.query);
if(req.query.uname!=='root') {
res.send('请提供管理员的账户');
}
else{
//往后执行下一个中间件 即这是所有用户数据
next();
}
});
app.get('/list',(req,res)=>{
res.send('这是所有的用户数据')
})
// 添加中间件,拦截添加购物车的请求
app.use('/shopping',(req,res,next)=>{
console.log(req.query);
req.query.price = req.query.price*0.9;
next();
})
app.get('/shopping',(req,res)=>{
console.log(req.query);
res.send('这是购物车价格为:'+req.query.price)
})
未完待续。。。