1. 前言
续上节我们说到“基于Flask框架的Python web开发的HTML+CSS”的内容 点击即可传送,我们知道了一些基本语法和一些简单的网页开发设计,那么这篇文章将会学习一些高级内容及魔法工具
- CSS高级语法知识点
- hover伪类
- after伪类
- position
- fix
- relative
- absolute
- 前端开发设计工具“BootScrap的使用”
2. CSS进阶语法
-
在这里提前说一下什么是伪类
- 用来定义元素的特殊状态,比如鼠标悬停(hover)
-
伪类语法
{#selector可以为属性名(div),或者自定义style名称(a)#}
selector:伪类名称 {
style样式;
}
2.1 hover(伪类)
鼠标悬停在方法上面的样式,比如鼠标悬停在字体上变红或边框变红,以及显示二维码等等
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1 {
color: red;
font-size: 18px;
}
{#当鼠标放在这个上面会执行下面命令,字体变成绿色,且大小变为50xiangsu#}
.c1:hover {
color: green;
font-size: 50px;
}
.c2 {
height: 300px;
width: 500px;
border: 3px solid red;
}
{#当鼠标放在上面,边框变为3px且变为绿色#}
.c2:hover {
border: 3px solid green;
}
.download {
display: none; {#隐藏该区域#}
}
{#当写当鼠标到上面会显示该区域#}
.app:hover .download {
display: block;
}
.app:hover .title{
color: red;
}
</style>
</head>
<body>
<div class="c1">请关注我</div>
<div class="c2">嘻嘻</div>
<div class="app">
<div class="title">感谢关注</div>
<div class="download">
<img src="images/qcode.png" alt="">
</div>
</div>
</body>
</html>
2.2 after(伪类)冒号用法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1:after{
content: "请关注我";{#在使用该方法的后边的自动追加所要追加的东西#}
}
</style>
</head>
<body>
<div class="c1">吴阳军</div>
<div class="c1">梁吉宁</div>
</body>
</html>
很重要的应用:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.clearfix:after{
content: "";
display: block;
clear: both;
}
.item{
float: left;
}
</style>
</head>
<body>
<div class="clearfix"> {#清除浮动#}
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>
</body>
</html>
2.3 position
position 属性规定元素的定位类型
- fixed 固定
- relative 相对的
- absolute 绝对的
1. fixed
固定在窗口(注意是窗口,不是页面)的某个位置。就是跟滑动页面它不会改变位置,或者跟着一起动
我们在很多网站上见到的返回顶部的操作就是下面这样的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.back{
position: fixed; {#关键点,申明固定固定类型#}
width: 60px;
height: 60px;
border: 1px solid red;
right: 10px; {#离右边10px#}
bottom: 50px;
}
</style>
</head>
<body>
<div class="back"></div>
<div style="height: 1000px;background-color: #5f5750"></div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body {
margin: 0; {#将画布默认边距,设置为零,紧贴画布#}
}
.dialog {
position: fixed;
height: 300px;
width: 500px;
background-color: white;
left: 0;
right: 0;
margin: 0 auto; {#这三行代码将前面设置的边框左右居中#}
top: 200px;
z-index: 1000;
}
.mask {
background-color: black;
position: fixed;
left: 0;
right: 0;
top: 0;
bottom: 0;
opacity: 0.7;
z-index: 999;
}
</style>
</head>
<body>
<div style="height: 1000px">asdfasdfasd</div>
<div class="mask"></div>
<div class="dialog"></div>
</body>
</html>
2. relative和absolute
这个方法容易混淆,经常用于边框嵌套,先解释下面这个案例,c2是大边框,c1是小边框,c2相对与c1设置的属性,也就是c2包含c1,这就解释了c2的绝对属性相对于c1设置,所以方法引用如下,现在就应该理解了
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1{
height: 300px;
width: 500px;
border: 1px solid red;
margin: 100px;
position: relative;
}
.c1 .c2{
height: 59px;
width: 59px;
background-color: #00FF7F;
position: absolute;
right: 20px;
bottom: 10px;
}
</style>
</head>
<body>
<div class="c1">
<div class="c2"></div>
</div>
</body>
</html>
2.4 border(边框设置)
分为上右下左(这个在margin里面也是这样的顺序)边框,以及边框大小及粗细,还有边框颜色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1{
height: 300px;
width: 500px;
border: 1px solid red;
border-left: 3px solid #00FF7F; {#上面这两行应用上篇学的,左边框不是红色而是RGB里面的这个颜色#}
margin: 100px; {#默认距离上右下左面板都是100px#}
}
</style>
</head>
<body>
<div class="c1"></div>
</body>
</html>
透明色:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1{
height: 50px;
width: 500px;
margin: 100px;
background-color: #5f5750;
border-left: 2px solid transparent; {#transparent用来设置透明色#}
}
.c1:hover{
border-left: 2px solid red;
}
</style>
</head>
<body>
<div class="c1">qing关注我</div>
</body>
</html>
2.5 背景色
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.c1{
height: 50px;
width: 500px;
margin: 100px;
background-color: #5f5750; {#background背景色设置#}
}
</style>
</head>
<body>
<div class="c1">菜单</div>
</body>
</html>
注意:以上不是所有的CSS样式。
2.6 总结
到这里,恭喜你已经将HTML+CSS常用的基础语法学完
3.BootStrap
这个是别人已经写好的CSS样式,就相当于python的外置模块(已经封装好了),我们可以调用使用,我们如果想要使用这个BootStrap:
- 下载BootStrap
- 使用
- 在页面上引入BootStrap
- 编写HTML时,按照BootStrap的规定来编写 + 自定制。
3.1 BootSctrap的下载调用
- 下载链接
- 放置位置
放在新建static/plugins下面,用哪个放哪个文件,比如要调用.css,那么就可以放进去
- 调用语法
<link rel="stylesheet" href="static/plugins/bootstrap-5.3.0/css/bootstrap.css">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- HTML注释:开发版本 -->
<link rel="stylesheet" href="static/plugins/bootstrap-5.3.0/css/bootstrap.css">
<!-- 生产版本 -->
<!-- <link rel="stylesheet" href="static/plugins/bootstrap-5.3.0/css/bootstrap.min.css"> -->
</head>
<body>
<input type="button" value="提交" />
{#下面是调用案例#}
<input type="button" value="提交" class="btn btn-primary" />
<input type="button" value="提交" class="btn btn-success" />
<input type="button" value="提交" class="btn btn-danger" />
<input type="button" value="提交" class="btn btn-danger btn-xs" />
</body>
</html>
3.2 导航
都是调用BootStrap里面已经写好的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="static/plugins/bootstrap-5.3.0/css/bootstrap.css">
<style>
.navbar {
border-radius: 0;
}
</style>
</head>
<body>
<div 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="#">Link <span class="sr-only">(current)</span></a></li>
<li><a href="#">广西</a></li>
<li><a href="#">上海</a></li>
<li><a href="#">神州</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">四川</a></li>
<li><a href="#">上海</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>
<form class="navbar-form navbar-left">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">登录</a></li>
<li><a href="#">注册</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</div>
</body>
</html>
3.3 栅格系统
-
把整体划分为了12格
-
分类
-
响应式,根据屏幕宽度不同进行变化
.col-lg- 1170px .col-md- 970px (这个跟下面一个常用) .col-sm- 750px
-
非响应式,不会跟据屏幕不同而变化
<div class="col-xs-6" style="background-color: red">1</div> <div class="col-xs-6" style="background-color: green">2</div>
-
列偏移
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="static/plugins/bootstrap-5.3.0/css/bootstrap.css"> </head> <body> <div> <div class="col-sm-offset-2 col-sm-6" style="background-color: green">2</div> </div> </body> </html>
-
3.4 container
<div class="container-fluid">
<div class="col-sm-9">左边</div>
<div class="col-sm-3">右边</div>
</div>
<div class="container">
<div class="col-sm-9">左边</div>
<div class="col-sm-3">右边</div>
</div>
3.5 面板
<div class="panel panel-default">
<div class="panel-heading">Panel heading without title</div>
<div class="panel-body">
Panel content
</div>
</div>
3.6 设计登录界面
- 宽度 + 居中(区域居中)
- 内边距
- 表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="static/plugins/bootstrap-5.3.1/css/bootstrap.css">
<style>
.account {
width: 400px;
border: 1px solid #dddddd;
border-radius: 5px;
box-shadow: 5px 5px 20px #aaa;
margin-left: auto;
margin-right: auto;
margin-top: 100px;
padding: 20px 40px;
}
.account h2 {
margin-top: 10px;
text-align: center;
}
</style>
</head>
<body>
<div class="account">
<h2>用户登录</h2>
<form>
<div class="form-group">
<label for="exampleInputEmail1">用户名</label>
<input type="email" class="form-control" id="exampleInputEmail1" placeholder="用户名">
</div>
<div class="form-group">
<label for="exampleInputPassword1">密码</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="密码">
</div>
<input type="submit" value="登 录" class="btn btn-primary">
</form>
</div>
</body>
</html>
3.7 图标
-
bootstrap提供,不多。
-
fontawesome组件
https://fontawesome.dashgame.com/ https://icons.bootcss.com/
-
下载
-
引入
<link rel="stylesheet" href="static/plugins/font-awesome-4.7.0/css/font-awesome.css">
-
3.8 BootStrap依赖
BootStrap依赖JavaScript的类库,jQuery。
- 下载 jQuery,在页面上应用上jQuery。
- 在页面上应用BootStrap的JavaScript类库。