day 10 HTML CSS

 

 

 

 

 

什么是标签:
● 是由一对尖括号包裹的单词构成 例如: <html> *所有标签中的单词不可能以数字开头.
● 标签不区分大小写.<html> 和 <HTML>. 推荐使用小写.
● 标签分为两部分: 开始标签<a> 和 结束标签</a>. 两个标签之间的部分 我们叫做标签体.
● 有些标签功能比较简单.使用一个标签即可.这种标签叫做自闭和标签.例如: <br/> <hr/> <input /> <img />
● 标签可以嵌套.但是不能交叉嵌套. <a><b></a></b>

标签的属性:
● 通常是以键值对形式出现的. 例如 name="alex"
● 属性只能出现在开始标签 或 自闭和标签中.
● 属性名字全部小写. *属性值必须使用双引号或单引号包裹 例如 name="alex"
如果属性值和属性名完全一样.直接写属性名即可. 例如 readonly

 

 

<!DOCTYPE html>标签

head标签:

<meta>meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name 属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页 功能。
1 name属性主要用于描述网页,与之对应的属性值为content,content中的内容 主要是便于搜索引擎机器人查找信息和分类信息用的。
<meta name="keywords"content="meta总结,html meta,meta属性,meta跳转">
<meta name="description"content="老男孩培训机构是由一个老的男孩创建的">
2 http-equiv顾名思义,相当于http的文件头作用,它可以向浏览器传回一些有 用的信息,以帮助正确和精确地显示网页内容,与之对应的属性值为content, content 中的内容其实就是各个参数的变量值。
<meta http-equiv="Refresh"content="2;URL=https://www.baidu.com"> //(注意后面的引号,分别在秒数的前面和网址的后面,等待2秒,跳转到URL,)
<meta http-equiv="content-Type"content="text/html;charset=UTF8"> // 全写,声明编码的方式。
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">


<title>老男孩</title>
<link rel="icon" href="http://www.jd.com/favicon.ico">

 

 

body标签:
一 基本标签                           #块级标签可以内嵌内联标签
<hn>: n的取值范围是1~6; 从大到小. 用来表示标题.            # 块级标签
<p>: 段落标签. 包裹的内容被换行.并且也上下内容之间有一行空白.    # 块级标签
<b> <strong>: 加粗标签.
<strike>: 为文字加上一条中线.
<em>: 文字变成斜体.
<sup>和<sub>: 上角标 和 下角表.
<br>:换行.
<hr>:水平线
<div>配合css使用,div中可以添加任何样式,一个div中也可以应用多个样式,方便定位和布局 #块级标签
<span>同div标签没有效果 #内联标签

 

块级标签和内联标签
块级标签:<p><h1><table><ol><ul><form><div> 控制一行
内联标签:<a><input><img><sub><sup><textarea><span>      # 随着文本和元素内容变化
<h2 style="background-color: darkorange">hello</h2>          # 块级标签
<a style="background-color: gray">wwww</a>                  # 内联标签
block(块)元素的特点
① 总是在新行上开始;
② 高度,行高以及外边距和内边距都可控制;
③ 宽度缺省是它的容器的100%,除非设定一个宽度。
④ 它可以容纳内联元素和其他块元素
inline元素的特点
① 和其他元素都在一行上;
② 高,行高及外边距和内边距不可改变;
③ 宽度就是它的文字或图片的宽度,不可改变
④ 内联元素只能容纳文本或者其他内联元素

对行内元素,需要注意如下 :
设置宽度width 无效。
设置高度height 无效,可以通过line-height来设置。
设置margin 只有左右margin有效,上下无效。
设置padding 只有左右padding有效,上下则无效。注意元素范围是增大了,但是对元素周围的内容是没影响的。

特殊字符:
&lt; &gt; &quot; &copy; &reg;

 

二 图形标签: <img> :
src: 要显示图片的路径.
alt: 图片没有加载成功时的提示信息
title: 鼠标悬浮时的提示信息.
width: 图片的宽
height:图片的高 (宽高两个属性只用一个会自动等比缩放.)

三 超链接标签(锚标签)<a>:
功能一:跳转到指定路径
href:要连接的资源路径 格式如下: href="http://www.baidu.com" ,也可以是本地的HTML文件路径
target: _blank : 在新的窗口打开超链接. 框架名称: 在指定框架中打开连接内容.
name: 定义一个页面的书签.
功能二:跳转到当前HTML页面的标签,需要加#号
用于跳转 href : (使用格式:#书签名称).                # 井号和id是对应的,告诉浏览器井号后面的内容是唯一定位一个id的

 

四 列表标签:
<ul>: 无序列表 Unordered List
<ol>: 有序列表 ordered List
  <li>: 列表中的每一项. List Item
<dl> 定义列表 Definition List
  <dt> 列表标题 Definition title
  <dd> 列表项 Definition Description

 

五 表格标签: <table>:
border: 表格边框.
cellpadding: 内边距
cellspacing: 外边距.
width: 像素 百分比.(最好通过css来设置长宽)
rowspan: 行合并,单元格竖跨多少行
colspan: 列合并,单元格横跨多少列(即合并单元格)


<thead> table head定义表格的标题
<tr>: table row 定义表格的行
  <th>: table head cell 定义表格的标题
  <td>: table data cell 定义表格单元
<tbody> table body 定义表格的主体部分
<th>: table header <tbody>(不常用): 为表格进行分区.

 

六 表单标签(django)<form>:
  表单用于向服务器传输数据,要提交的数据必须写在form表单中,才会向服务器提交
  表单能够包含 input 元素,比如文本字段、复选框、单选框、提交按钮等等。
  表单还可以包含textarea、select、fieldset和 label 元素。
  
1.表单属性
  HTML 表单用于接收不同类型的用户输入,用户提交表单时向服务器传输数据,从而实现用户与Web服务器的交互。表单标签, 要提交的所有内容都应该在该标签中.
action: 表单提交到哪. 一般指向服务器端一个程序,程序接收到表单提交过来的数据(即表单元素值)作相应处理,比如https://www.sogou.com/web
enctype="multipart/form-data":type="file" 时,上传文件要分段传输,要声明此项

  method: 表单的提交方式 post/get 默认取值 就是 get(信封)
  get: 1.提交的键值对.放在地址栏中url后面. 2.安全性相对较差. 3.对提交内容的长度有限制.
  post:1.提交的键值对 不在地址栏. 2.安全性相对较高. 3.对提交内容的长度理论上无限制.
  get/post是常见的两种请求方式.

 


2.表单元素


<input> type: text 文本输入框 # input是内联标签  input标签必须包含在form表单之中,才能提交成功,是最重要的表单标签
  password 密码输入框
  radio 单选框    # name属性相同(设置使之相同)时,具有互斥性,只能选中一个
  checkbox 多选框
  submit 提交按钮
  button 按钮(需要配合js使用.) button和submit的区别?

1 <input type="button" /> 这就是一个按钮。如果你不写javascript 的话,按下去什么也不会发生。
2 <input type="submit" /> 这样的按钮用户点击之后会自动提交 form,除非你写了javascript 阻止它。 
3 <button> 这个按钮放在 form 中也会点击自动提交,比前两个的优点是按钮的内容不光可以有文字,还可以有图片等多媒体内容。(当然,前两个用图片背景也可以做到)。它的缺点是不同的浏览器得到的 value 值不同;可能还有其他的浏览器兼容问题
button和submit的区别

  file 提交文件:form表单需要加上属性enctype="multipart/form-data"

  name: 表单提交项的键.注意和id属性的区别:name属性是和服务器通信时使用的名称;而id属性是浏览器端使用的名称(前端专用),该属性主要是为了方便客户端编程,而在css和javascript中使用的。
  value: 表单提交项的值.
        对于不同的输入类型,value 属性的用法也不同:
        ○ type="button", "reset", "submit" - 定义按钮上的显示的文本
        ○ type="text", "password", "hidden" - 定义输入字段的默认初始值
            例:<p>用户名:<input type="text" name="query" value="whisky"></p>
        ○ type="checkbox", "radio", "image" - 定义与输入相关联的值
   checked: radio 和 checkbox 默认被选中
   readonly: 只读. text 和 password
   disabled: 对所用input都好使.


<select> (属于input中的一个类型,和text,button,checkbox一个级别)下拉选标签属性:
    name:表单提交项的键.
    size:显示的选项个数
    multiple:multiple
    <option> 下拉选中的每一项 属性:value:表单提交项的值. selected: selected下拉选默认被选中 selectedIndex:默认当前选中的索引,可以取值、赋值
    <optgroup>为每一项加上分组

<textarea> 文本域,多行输入 name:表单提交项的键. cols:文本域默认有多少列 rows:文本域默认有多少行

checkbox应用举例demo:

前台传过来的值后台要用get_arguments来取,取到一个列表, 如果用户名有勾选,则返回空列表

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 
 4 import tornado.ioloop
 5 import tornado.web
 6 import re
 7 
 8 
 9 class IndexHandler(tornado.web.RequestHandler):
10     def get(self):
11         self.render('home.html')
12 
13     def post(self, *args, **kwargs):
14         val = self.get_arguments('favor')   # 注意checkbox必须用get_arguments,加s的参数
15         print(val)                          # 输出 ['2', '3']
16 
17 
18 settings = {
19     'template_path': 'views',
20     'static_path': 'statics',
21     'static_url_prefix': '/statics/'
22 }
23 
24 application = tornado.web.Application([
25     (r"/home", IndexHandler),
26 ], **settings)
27 
28 if __name__ == "__main__":
29     application.listen(8001)
30     tornado.ioloop.IOLoop.instance().start()
后台.py
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <form action="/home" method="POST">
 9         <input type="text" name="ip" placeholder="ip" />
10         <input type="text" name="host" placeholder="host" />
11         <p>
12             <input type="checkbox" name="favor" value="1" />篮球;
13             <input type="checkbox" name="favor" value="2" />足球;
14             <input type="checkbox" name="favor" value="3" />羽毛球;
15         </p>
16 
17         <input type="submit" />
18     </form>
19 </body>
20 </html>
前端.html

 

 

 

两个了解的标签(和select是并列,同一级别的标签 ):
<label>标签:
  <label for="www">姓名</label>     # 把文本和input标签做了一个关联,点击姓名标签,光标会自动在输入框中显示
<input id="www" type="text">

<fieldset>标签:
<fieldset>
  <legend>登录吧</legend>
  <input type="text">
</fieldset>

 

 

 附录:HTML标签中英文对照

 


HTML标签英文全称中文释义
a Anchor
abbr Abbreviation 缩写词
acronym Acronym 取首字母的缩写词
address     Address 地址
dfn            Defines a Definition Term 定义定义条目
kbd           Keyboard 键盘(文本)
samp       Sample 示例(文本
var             Variable 变量(文本)
tt                Teletype 打印机(文本)
code Code 源代码(文本)
pre Preformatted 预定义格式(文本 )
blockquote     Block Quotation 区块引用语
cite           Citation 引用
q Quotation 引用语
strong Strong 加重(文本)
em           Emphasized 加重(文本)
b Bold 粗体(文本)
i Italic 斜体(文本)
big           Big 变大(文本)
small       Small 变小(文本)
sup           Superscripted 上标(文本)
sub           Subscripted 下标(文本)
bdo           Direction of Text Display 文本显示方向
br             Break 换行
center     Centered 居中(文本)
font           Font 字体
u               Underlined 下划线(文本)
s/ strike       Strikethrough 删除线
div               Division 分隔
span           Span 范围
ol                 Ordered List 排序列表
ul                Unordered List 不排序列表
li List Item 列表项目
dl                 Definition List 定义列表
dt                  Definition Term 定义术语
dd              Definition Description 定义描述
del                Deleted 删除(的文本)
ins                Inserted 插入(的文本)
h1~h6 Header 1 to Header 6 标题1到标题6
p Paragraph 段落
hr                 Horizontal Rule 水平尺
href hypertext reference 超文本引用
alt alter 替用(一般是图片显示不出的提示)
src Source 源文件链接
cell cell
cellpadding cellpadding 巢补白
cellspacing cellspacing 巢空间
nl navigation lists 导航列表
tr table row 表格中的一行
th table header cell 表格中的表头
td table data cell 表格中的一个单元格

 

<a> anchor 定义锚
<abbr> abbreviation 定义缩写
<acronym> 定义只取消首字母的缩写
<address> 定义地址元素
<area> 定义图像映射内部的区域
<b> bold 定义粗体字
<base> 定义页面当中的所有链接的基准链接
<bdo> bidirectional override 定义文字的显示方向
<big> 定义大号字
<blockquote> 定义长的引用
<body> 定义body元素
<br> break 插入一个回车
<button> 定义按钮
<caption> 定义表格标题
<cite> citation 定义引用
<code> computer code 定义计算机代码文本
<col> column 定义用于表格列的属性
<colgroup> column group 定义表格的列祖
<dd> definition description 定义定义的描述
<del> delete 定义被删除的文本
<div> division 定义文档中的节
<dfn> defining instance 定义定义的项目。
<dl> definition list 定义定义列表
<dt> definition term 定义定义的项目
<em> emphasized 定义强调文本
<fieldset> 定义域结构
<form> 定义表单
<frame> 定义框架的子窗口
<frameset> 定义框架集
<h1>to<h6> 定义标题1到标题6
<head> 定义关于文档的信息
<hr> horizontal 定义水平线
<html> hypertext markup language 定义html文档
<i> italic 定义斜体字
<iframe> inline frame 定义内联框架
<img> image 定义图像
<input> 定义输入域
<ins> inserted 定义被插入的文本
<kbd> keyboard 定义键盘文本
<label> 定义针对表单控件的标签
<legend> 定义框架集的标题
<li> list item 定义列表的项目
<link> 定义资源引用
<map> 定义图像映射
<meta> 定义元信息
<noframe> 定义无框架的节
<noscript> 定义无脚本的节
<object> 定义内嵌对象
<ol> ordered list 定义有序列表
<optgroup> option group 定义选项组
<option> 定义下拉列表的选项
<p> paragraph 定义段落
<param> 定义对象的参数
<pre> preformatted 定义预格式文本
<q> quotation 定义短的引用
<samp> sample 定义计算机代码样本
<script> 定义脚本
<select> 定义选择列表
<small> 定义小字体文本
<span> 定义文档中的节
<strong> stronger empasis定义强调文本
<style> 定义样式的定义
<sub> subscript 定义下标文本
<sup> superscript 定义上标文本
<table> 定义表格
<tbody> table body 定义表格的主体部分
<td> table data cell定义表格单元
<textarea> 定义文本区域
<tfoot> table foot定义表也的脚注
<th> table header cell定义表格的表头单元格
<thead> table head定义表格的标题
<title> 定义文档的标题
<tr> table row定义表格的行
<tt> teletype 定义打字机文本
<ul> unordered list 定义无序列表
<var> variable 定义变量

 

 

 

CSS:

CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。

一 css的四种引入方式

1.行内式
  行内式是在标记的style属性中设定CSS样式。这种方式没有体现出CSS的优势,不推荐使用。

2.嵌入式
  嵌入式是将CSS样式集中写在网页的<head></head>标签对的<style></style>标签对中。格式如下:
  <head>
  <style type="text/css">
    ...此处写CSS样式
  </style>
  </head>


3.导入式 (import 方式有引入文件数量限制,link没有)
将一个独立的.css文件引入HTML文件中,导入式使用CSS规则引入外部CSS文件,<style>标记也是写在<head>标记中,使用的语法如下:
<style type="text/css">
@import"mystyle.css"; 此处要注意.css文件的路径
</style>


4.链接式,优于导入式
  也是将一个.css文件引入到HTML文件中 <link href="mystyle.css" rel="stylesheet" type="text/css"/>
注意:
导入式会在整个网页装载完后再装载CSS文件,因此这就导致了一个问题,如果网页比较大则会儿出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。这是导入式固有的一个缺陷。使用链接式时与导入式不同的是它会以网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果的,它不会象导入式那样先显示无样式的网页,然后再显示有样式的网页,这是链接式的优点。

 

1 rel是relationship的英文缩写
2 stylesheet中style是样式的意思,sheet是表格之意,总起来是样式表的意思
3 rel="stylesheet" 描述了当前页面与href所指定文档的关系.即说明的是,href连接的文档是一个新式表

 

 

 

 

二 css的选择器(Selector)

“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素


1 基础选择器:

  * : 通用元素选择器,匹配任何元素 ,对所有标签进行操作 * { margin:0; padding:0; }
  E : 标签选择器,匹配所有使用E标签的元素p { color:green; }
  .info和E.info: class选择器,匹配所有class属性中包含info的元素 .info { background:#ff0; } p.info { background:blue; }
  #info和E#info id选择器,匹配所有id属性等于footer的元素 #info { background:#ff0; } p#info { background:#ff0; }

注意:id是唯一的,class是可重复的

练习:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         /**{*/
 8             /*!*通用元素选择器*!*/
 9             /*background-color: lavender;*/
10             /*color:red;*/
11             /*font-size: 12px;*/
12         /*}*/
13         p{
14             /*标签选择器*/
15             /*color:yellowgreen;*/
16             font-size: 50px;
17         }
18 
19         #ssww{
20              /*id选择器*/
21             background-color: lavender;
22             color:red;
23             font-size: 12px;
24         }
25 
26         .rr{
27             /*class选择器*/
28             font-size: 140px;
29         }
30 
31         div.rr{
32             /*class选择器*/
33             font-size: 30px;
34             color: rebeccapurple;
35         }
36 
37 
38     </style>
39 </head>
40 <body>
41 
42     <a>alex</a>
43     <p>ssssssss</p>
44     <p id="ssww">ssssssss</p>
45         <div>ooooo</div>
46     <p class="rr">ttttt</p>
47     <div class="rr">ttttt</div>
48 
49 
50 </body>
51 </html>

 

2 组合选择器
  E,F 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔 Div,p { color:#f00; }
  E F 后代元素选择器(所有的后代儿子孙子都包含),匹配所有属于E元素后代的F元素,E和F之间用空格分隔 #nav li { display:inline; } li a { font-weight:bold; }
  E > F 子元素选择器,只匹配所有E元素的子元素(不包括孙子元素) div > strong { color:#f00; }

  E + F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F(以及同级元素的子元素)                            p + p { color:#f00; }

注意:p标签不能嵌套块标签,例:p标签不能嵌套div标签

练习代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7 
 8 
 9         /*div,p{*/
10             /*!*多元素选择器,哪个标签有就渲染哪个*!*/
11             /*font-size: 20px;*/
12             /*color:red;*/
13 
14         /*}*/
15 
16         /*div p{*/
17             /*!*后代元素选择器*!*/
18             /*font-size: 30px;*/
19             /*color: pink;*/
20         /*}*/
21 
22         /*div>p{*/
23             /*!*子元素选择器*!*/
24             /*font-size: 30px;*/
25             /*color: pink;*/
26         /*}*/
27 
28         /*.r1>div{*/
29             /*!*子元素选择器*!*/
30             /*font-size: 30px;*/
31             /*color: pink;*/
32         /*}*/
33 
34         .r2+div{
35             /*毗邻元素选择器,匹配所有紧随.r2元素之后的同级元素F  */
36             font-size: 30px;
37             color: pink;
38         }
39 
40     </style>
41 </head>
42 <body>
43 
44     <!--<a>alex</a>-->
45     <!--<p>ssssssss</p>-->
46     <!--<p id="ssww">ssssssss</p>-->
47         <!--<div>ooooo</div>-->
48     <p class="rr">ttttt</p>
49 
50     <div class="r1">hello1
51         <div class="r2">hello2
52             <p>hello4</p>
53         </div>
54         <div>hello3
55         <p>AAAAA</p></div>
56     </div>
57 </body>
58 </html>

 

注意嵌套规则:

1.块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
2.块级元素不能放在p里面。
3.有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
4.li内可以包含div
5.块级元素与块级元素并列、内联元素与内联元素并列。(错误的:<div><h2></h2><span></span></div>)

 

 

 

3 属性选择器
E[att] 匹配所有具有att属性的E标签元素,不考虑它的值。
(注意:E在此处可以省略,比如“[cheacked]”。以下同。) p[title] { color:#f00; }

E[att=val] 匹配所有att属性等于“val”的E元素 div[class=”error”] { color:#f00; }

E[att~=val] 匹配所有att属性具有多个空格分隔的值、其中一个值等于“val”的E元素 td[class~=”name”] { color:#f00; }

E[att|=val] 匹配所有att属性具有多个连字号分隔(hyphen-separated)的值、其中一个值以“val”开头的E元素,主要用于lang属性,实际应用范围很窄,
比如“en”、“en-us”、“en-gb”等等 p[lang|=en] { color:#f00; }
E[attr^=val] 匹配属性值以指定值开头的每个元素 div[class^="test"]{background:#ffff00;}
E[attr$=val] 匹配属性值以指定值结尾的每个元素 div[class$="test"]{background:#ffff00;}
E[attr*=val] 匹配属性值中包含指定值的每个元素 div[class*="test"]{background:#ffff00;}

before和after,可以是p标签也可以是div等等其他标签
p:before 在每个 <p> 元素的内容之前插入内容 p:before{content:"hello";color:red}
p:after 在每个 <p> 元素的内容之前插入内容 p:after{ content:"hello";color:red}

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         [ym="girl"]{
 8             font-size: 50px;
 9             color: pink;
10         }
11 
12         div:before{
13             content: "start";
14             background: green;
15             color: red;
16         }
17         div:after{
18             content: "end";
19             color: red;
20         }
21     </style>
22 </head>
23 <body>
24 
25         <div ym="boy girl">whisky</div>
26 </body>
27 </html>

 

 

4 伪类选择器(顺序固定,否则会有冲突):
伪类选择器: 专用于控制链接的显示效果,伪类选择器:
a:link(没有接触过的链接),用于定义了链接的常规状态。
a:hover(鼠标放在链接上的状态),用于产生视觉效果。
a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。
a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态。
伪类选择器 : 伪类指的是标签的不同状态:
a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态
a:link {color: #FF0000} /* 未访问的链接 */
a:visited {color: #00FF00} /* 已访问的链接 */
a:hover {color: #FF00FF} /* 鼠标移动到链接上 */
a:active {color: #0000FF} /* 选定的链接 */ 格式: 标签:伪类名称{ css代码; }

 

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 <head>
 4 <style type="text/css">
 5     a:link{
 6         color: red;
 7     }
 8     a:visited {
 9         color: blue;
10     }
11     a:hover {
12         color: green;
13     }
14     a:active {
15         color: yellow;
16     }
17 </style>
18 </head>
19 <body>
20     <a href="http://www.baidu.com" target="_blank">www.baidu.com</a>
21 </body>
22 </html>

 

CSS 多类选择器

在 HTML 中,一个 class 值中可能包含一个词列表,各个词之间用空格分隔。例如,如果希望将一个特定的元素同时标记为重要(important)和警告(warning),就可以写作:

1 <p class="important warning">
2 This paragraph is a very important warning.
3 </p>

这两个词的顺序无关紧要,写成 warning important 也可以。

我们假设 class 为 important 的所有元素都是粗体,而 class 为 warning 的所有元素为斜体,class 中同时包含 important 和 warning 的所有元素还有一个银色的背景 。就可以写作:

1 .important {font-weight:bold;}
2 .warning {font-style:italic;}
3 .important.warning {background:silver;}

通过把两个类选择器链接在一起,仅可以选择同时包含这些类名的元素(类名的顺序不限)。

如果一个多类选择器包含类名列表中没有的一个类名,匹配就会失败。

 

 

 

 

 

 

三 CSS的常用属性

1 颜色属性:
<div style="color:blueviolet">ppppp</div>
<div style="color:#ffee33">ppppp</div>
<div style="color:rgb(255,0,0)">ppppp</div>      # rgb三原色
<div style="color:rgba(255,0,0,0.5)">ppppp</div>   # a代表透明度

2 字体属性:
font-size: 20px/50%/larger
font-family:'Lucida Bright'               # 字体
font-weight: lighter/bold/border/            # 字体粗细程度
<h1 style="font-style: oblique">老男孩</h1>     # 字体倾斜

 

3 背景属性:
background-color: cornflowerblue
background-image: url('1.jpg');
background-repeat: no-repeat;背景图片仅显示一次

background-repeat:repeat  默认属性,在水平和垂直方向平铺满
background-position: right top(20px 20px);(横向:left center right)(纵向:top center bottom)
简写:<body style="background: 20px 20px no-repeat #ff4 url('1.jpg')">
<div style="width: 300px;height: 300px;background: 20px 20px no-repeat #ff4 url('1.jpg')">


注意:如果讲背景属性加在body上,要记得给body加上一个height,否则结果异常,这是因为body为空,无法撑起背景图片,另外,如果此时要设置一个
width=100px,你也看不出效果,除非你设置出html。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         html{
 8             background-color: antiquewhite;
 9 
10         }
11         body{
12             height: 800px;
13             /*background-color: deeppink;*/
14             /*background-image: url(1.jpg);*/
15             /*background-repeat: no-repeat;*/
16             /*background-position: center center;*/
17             /*上面四行可简写为下面一行*/
18             background: red url("1.jpg") no-repeat center;
19         }
20     </style>
21 </head>
22 <body>
23         <div></div>
24 
25 </body>
26 </html>

 

4 文本属性:
font-size: 10px;
text-align: center;横向排列        # align 排列;成一条线
line-height: 200px;文本行高 通俗的讲,就是文字高度加上文字上下的空白区域的高度(相当于背景高度), 50%:基于字体大小的百分比,作用:将文本内容居中
p
{ width: 200px;
height: 200px;
text-align: center;
background-color: aquamarine;
line-height: 200px; }
text-indent: 150px;      # 首行缩进,50%:基于父元素(weight)的百分比
letter-spacing: 10px;     # 每个字母之的距离
word-spacing: 20px;     # 单词之间的距离
direction: rtl;
text-transform: capitalize;    # 首字母大写

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         div{
 8             word-break: break-all;
 9             background-color: aqua;
10             /*height: 50px;*/
11             font-size: 40px;
12             /*text-align: center;*/
13             /*line-height: 20px;*/
14             text-indent: 30px;
15         }
16     </style>
17 </head>
18 <body>
19         <div>ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss</div>
20 </body>
21 </html>

 

 

5 边框属性:
border-style: solid; # solid 实心的 ,添加实线边框
border-color: chartreuse;
border-width: 20px;
简写为一句代码:border: 30px rebeccapurple solid;

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         div{
 8             background: rebeccapurple;
 9             height: 300px;
10             width: 300px;
11             border: solid 6px red;
12         }
13     </style>
14 </head>
15 <body>
16         <div>
17 
18         </div>
19 </body>
20 </html> 

 

 

6 列表属性
ul,ol{ list-style: decimal-leading-zero; # 列表前加数字
list-style: none; list-style: circle; # none去掉列表实心圆点 circle 空心圆
list-style: upper-alpha;
list-style: disc; }

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7 
 8         ul{
 9             /*none去掉列表实心圆点*/
10             list-style: circle;
11         }
12 
13     </style>
14 </head>
15 <body>
16 
17 <ul>
18     <li>111</li>
19     <li>222</li>
20     <li>333</li>
21 </ul>
22 
23 </body>
24 </html>

 

 


7 dispaly属性    # 内联标签,块级标签互转
none       #隐藏加入的样式 非常非常常用,轮播图原理 bxslider插件原理
block       # 块级标签
inline        # 内联标签

1、display:block将元素显示为块级元素,从而可以更好地操控元素的宽高,以及内外边距,每一个块级元素都是从新的一行开始。

2、display : inline将元素显示为行内元素,高度,行高以及底边距不可改变,高度就是内容文字或者图片的宽度,不可以改变。多个相邻的行内元素排在同一行里,知道页面一行排列不下,才会换新的一行。

3、display:inline-block看上去值名inline-block是一个混合产物,实际上确是如此,将元素显示为行内块状元素,设置该属性后,其他的行内块级元素会排列在同一行。比如我们li元素一个inline-block,使其既有block的宽度高度特性,又有inline的同行特性,在同一行内有不同高度内容的元素时,通常要设置对齐方式如vertical-align: top;来使元素顶部对齐。

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7     p{
 8         background-color: red;
 9         display: inline;
10     }
11     span{
12         background-color: aqua;
13         display: block;
14     }
15 
16     </style>
17 </head>
18 <body>
19 
20 <p>123</p>
21 <span>whisky</span>
22 
23 </body>
24 </html>

 display:inline-block是结合了inline和block两者的特性于一身,简单的说:设置了inline-block属性的元素既拥有了block元素可以设置width和height的特性,又保持了inline元素不换行的特性。

 

 1 display:block就是将元素显示为块级元素.
 2 
 3   block元素的特点是:
 4   总是在新行上开始;
 5   高度,行高以及顶和底边距都可控制;
 6   宽度缺省是它的容器的100%,除非设定一个宽度
 7   <div>, <p>, <h1>, <form>, <ul><li>是块元素的例子。
 8 
 9   display:inline就是将元素显示为行内元素.
10 
11   inline元素的特点是: 
12   和其他元素都在一行上;
13   高,行高及顶和底边距不可改变;
14   宽度就是它的文字或图片的宽度,不可改变。
15   <span>, <a>, <label>, <input>, <img>, <strong><em>是inline元素的例子。
16 
17   inline和block可以控制一个元素的行宽高等特性,需要切换的情况如下:
18 
19   让一个inline元素从新行开始;
20   让块元素和其他元素保持在一行上;
21   控制inline元素的宽度(对导航条特别有用);
22   控制inline元素的高度;
23   无须设定宽度即可为一个块元素设定与文字同宽的背景色。
24 
25   display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。
26 
27   inline-block的元素特点:
28 
29   将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。(准确地说,应用此特性的元素呈现为内联对象,周围元素保持在同一行,但可以设置宽度和高度地块元素的属性)
30 
31   并不是所有浏览器都支持此属性,目前支持的浏览器有:Opera、Safari在IE中对内联元素使用display:inline-block,IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表症。从上面的这个分析,也不难理解为什么IE下,对块元素设置display:inline-block属性无法实现inline-block的效果。这时块元素仅仅是被display:inline-block触发了layout,而它本就是行布局,所以触发后,块元素依然还是行布局,而不会如Opera中块元素呈递为内联对象。
block、inline-block的区别

CSS display:inline-block的应用

https://www.cnblogs.com/lrzw32/p/4927570.html

 

 

 

 

 

 8  盒子模型

padding:用于控制内容与边框之间的距离,即content和border之间的距离;
margin: 用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
内边距会影响盒子的大小,外边距不会影响盒子的大小,需要设置 练习: 300px*300px的盒子装着100px*100px的盒子,分别通过margin和padding设置将小盒 子 移到大盒子的中间
通过内层盒子的margin来设置

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             border: 1px solid transparent;
 9             /*让body和HTML之间的距离为0*/
10             margin: 0;
11         }
12         .div1{
13             background-color: aqua;
14             width: 300px;
15             height: 300px;
16             /*外层必须有边界border属性,内层盒子才能找到边界,他的margin属性才能真正显示正常*/
17             border: 1px solid transparent;
18         }
19         .div2{
20             background-color: blueviolet;
21             width: 100px;
22             height: 100px;
23             margin: 100px;
24         }
25     </style>
26 </head>
27 <body>
28        <div class="div1">
29            <div class="div2"></div>
30        </div>
31 </body>
32 </html>

 

 通过外层盒子的padding来设置

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             border: 1px solid transparent;
 9             /*让body和HTML之间的距离为0*/
10             margin: 0;
11         }
12         .div1{
13             background-color: aqua;
14             width: 100px;
15             height: 100px;
16             /*下面padding的作用:在原来外层盒子的基础上,上下左右都扩张了100px*/
17             padding: 100px;
18         }
19         .div2{
20             background-color: blueviolet;
21             width: 100px;
22             height: 100px;
23         }
24     </style>
25 </head>
26 <body>
27        <div class="div1">
28            <div class="div2"></div>
29        </div>
30 </body>
31 </html>

 

注意1:
边框在默认情况下会定位于浏览器窗口的左上角,但是并没有紧贴着浏览器的窗口的边框,这是因为body本身也是一个盒子(外层还有html),在默认情况下, body距离html会有若干像素的margin,具体数值因各个浏览器不尽相同,所以body中的盒子不会紧贴浏览器窗口的边框了,为了验证这一点,加上
body{
border: 1px solid;
background-color: cadetblue;
}
>>>>解决方法:
body{
margin: 0;
}

 

注意2:margin collapse(边界塌陷或者说边界重叠)
外边距的重叠只产生在普通流文档的上下外边距之间,这个看起来有点奇怪的规则,其实有其现实意义。设想,当我们上下排列一系列规则的块级元素(如段 落P)时,那么块元素之间因为外边距重叠的存在,段落之间就不会产生双倍的距离。又比如停车场

1兄弟div:上面div的margin-bottom和下面div的margin-top会塌陷,也就是会取上下两者margin里最大值作为显示值
2父子div
if 父级div中没有 border,padding,inline content,子级div的margin会一直向上找,直到找到某个标签包括border,padding,inline content 中的其中一个,然后按此div 进行margin ;

 

解决方法:

1: border:1px solid transparent
2: padding:1px
3: over-flow:hidden;

练习代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             border: 1px solid transparent;
 9             /*让body和HTML之间的距离为0*/
10             margin: 0;
11         }
12         .outer{
13             background-color: aqua;
14             width: 600px;
15             height: 600px;
16             /*小盒子找边界的依据:大盒子有没有边界(没有文本、padding、border等属性),注释掉border属性:*/
17             /*border: 1px solid transparent;*/
18         }
19         .inner{
20             /*inner无法在outer中确定边界(因为注释了outer中的border属性,如果加上border属性则为边界),向上找到html层为边界*/
21             background-color: blueviolet;
22             width: 100px;
23             height: 100px;
24             margin: 20px;
25         }
26     </style>
27 </head>
28 <body>
29        <div class="outer">
30            <div class="inner"></div>
31            <div class="inner"></div>
32        </div>
33 </body>
34 </html>

 

 

9 float

首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的

可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为div元素是独占一行的。注意,以上这些理论,是指标准流中的div。

无论多么复杂的布局,其基本出发点均是:“如何在一行显示多个div元素”。浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次。

    例如,假设上图中的div2浮动,那么它将脱离标准流,但div1、div3、div4仍然在标准流当中,所以div3会自动向上移动,占据div2的位置,重新组成一个流。如图:

从图中可以看出,由于对div2设置浮动,因此它不再属于标准流,div3自动上移顶替div2的位置,div1、div3、div4依次排列,成为一个新的流。又因为浮动是漂浮在标准流之上的,因此div2挡住了一部分div3,div3看起来变“矮”了

这里div2用的是左浮动(float:left;),可以理解为漂浮起来后靠左排列,右浮动(float:right;)当然就是靠右排列。这里的靠左、靠右是说页面的左、右边缘。

如果我们把div2采用右浮动,会是如下效果:

此时div2靠页面右边缘排列,不再遮挡div3,读者可以清晰的看到上面所讲的div1、div3、div4组成的流。

目前为止我们只浮动了一个div元素,多个呢?

下面我们把div2和div3都加上左浮动,效果如图:

 

同理,由于div2、div3浮动,它们不再属于标准流,因此div4会自动上移,与div1组成一个“新”标准流,而浮动是漂浮在标准流之上,因此div2又挡住了div4。

咳咳,到重点了,当同时对div2、div3设置浮动之后,div3会跟随在div2之后,不知道读者有没有发现,一直到现在,div2在每个例子中都是浮动的,但并没有跟随到div1之后。因此,我们可以得出一个重要结论:

假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。

div的顺序是HTML代码中div的顺序决定的。

靠近页面边缘的一端是前,远离页面边缘的一端是后。

为了帮助理解,再举几个例子。

假如我们把div2、div3、div4都设置成浮动,效果如下:

 

根据上边的结论,跟着小菜理解一遍:先从div4开始分析,它发现上边的元素div3是浮动的,所以div4会跟随在div3之后;div3发现上边的元素div2也是浮动的,所以div3会跟随在div2之后;而div2发现上边的元素div1是标准流中的元素,因此div2的相对垂直位置不变,顶部仍然和div1元素的底部对齐。由于是左浮动,左边靠近页面边缘,所以左边是前,因此div2在最左边。

假如把div2、div3、div4都设置成浮动,效果如下:

 

道理和左浮动基本一样,只不过需要注意一下前后对应关系。由于是右浮动,因此右边靠近页面边缘,所以右边是前,因此div2在最右边。

假如我们把div2、div4左浮动,效果图如下:

依然是根据结论,div2、div4浮动,脱离了标准流,因此div3将会自动上移,与div1组成标准流。div2发现上一个元素div1是标准流中的元素,因此div2相对垂直位置不变,与div1底部对齐。div4发现上一个元素div3是标准流中的元素,因此div4的顶部和div3的底部对齐,并且总是成立的,因为从图中可以看出,div3上移后,div4也跟着上移,div4总是保证自己的顶部和上一个元素div3(标准流中的元素)的底部对齐

至此,恭喜读者已经掌握了添加浮动,但还有清除浮动,有上边的基础清除浮动非常容易理解。

经过上边的学习,可以看出:元素浮动之前,也就是在标准流中,是竖向排列的,而浮动之后可以理解为横向排列。

清除浮动可以理解为打破横向排列。

 

清除浮动的关键字是clear,官方定义如下:

语法:

clear : none | left | right | both

取值:

none : 默认值。允许两边都可以有浮动对象

left : 不允许左边有浮动对象

right : 不允许右边有浮动对象

both : 不允许有浮动对象

定义非常容易理解,但是读者实际使用时可能会发现不是这么回事。

定义没有错,只不过它描述的太模糊,让我们不知所措。

根据上边的基础,假如页面中只有两个元素div1、div2,它们都是左浮动,场景如下:

此时div1、div2都浮动,根据规则,div2会跟随在div1后边,但我们仍然希望div2能排列在div1下边,就像div1没有浮动,div2左浮动那样。

这时候就要用到清除浮动(clear),如果单纯根据官方定义,读者可能会尝试这样写:在div1的CSS样式中添加clear:right;,理解为不允许div1的右边有浮动元素,由于div2是浮动元素,因此会自动下移一行来满足规则。

其实这种理解是不正确的,这样做没有任何效果。

对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素

怎么理解呢?就拿上边的例子来说,我们是想让div2移动,但我们却是在div1元素的CSS样式中使用了清除浮动,试图通过清除div1右边的浮动元素(clear:right;)来强迫div2下移,这是不可行的,因为这个清除浮动是在div1中调用的,它只能影响div1,不能影响div2。

根据小菜定论,要想让div2下移,就必须在div2的CSS样式中使用浮动。本例中div2的左边有浮动元素div1,因此只要在div2的CSS样式中使用clear:left;来指定div2元素左边不允许出现浮动元素,这样div2就被迫下移一行。

 

 

那么假如页面中只有两个元素div1、div2,它们都是右浮动呢?读者此时应该已经能自己推测场景,如下:

此时如果要让div2下移到div1下边,要如何做呢?

同样根据小菜定论,我们希望移动的是div2,就必须在div2的CSS样式中调用浮动,因为浮动只能影响调用它的元素。

可以看出div2的右边有一个浮动元素div1,那么我们可以在div2的CSS样式中使用clear:right;来指定div2的右边不允许出现浮动元素,这样div2就被迫下移一行,排到div1下边。

 练习代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             margin: 0;
 9         }
10         .d1{
11            background: red;
12             height: 50px;
13             width: 100px;
14         }
15 
16         .d2{
17             background: greenyellow;
18             height: 30px;
19             width: 600px;
20             float:left;
21         }
22 
23         .d3{
24             background: black;
25             height: 100px;
26             width: 200px;
27             float: left;
28             clear: left;
29         }
30 
31         .d4{
32             background: blue;
33             height: 200px;
34             width: 120px;
35             float:left;
36             clear: left;
37         }
38 
39         /*.father{*/
40             /*position: relative;*/
41         /*}*/
42     </style>
43 </head>
44 <body>
45 <div class="father">
46     <div class="d1"></div>
47     <div class="d2"></div>
48     <div class="d3"></div>
49     <div class="d4"></div>
50 </div>
51 
52 
53 </body>
54 </html>
View Code

 

浮动对象小结:
1. 脱离文档流
2. 不管设置的对象是向左还是向右浮动,它都要找到上一个标签,看上一个标签是否为浮动对象,如果是浮动对象,则紧贴上一个标签;如果不是浮动对象,则
直接找到上一个标签的末尾,对于块级标签,末尾就是另起一行来浮动
3. clear:他只控制自己的标签,只能控制使用了clear的对象,而不能控制其它的对象

 

 

 

 

10 position:

 

1 static,默认值 static:无特殊定位,对象遵循正常文档流。

top,right,bottom,left等属性不 会被应用。 说到这里我们不得不提一下一个定义——文档流,文档流其实就是文档的输出顺序, 也就是我们通常看到的由左 到右、由上而下的输出形式,在网页中每个元素都是按照这个顺序进行排序和显示的,而float和position两个属性可以将元素从文档流脱离出来显示。 默认值就 是让元素继续按照文档流显示,不作出任何改变。

2 position:relative

relative:对象遵循正常文档流,但将依据top(距离上面多少像素),right(距离右面多少像素),bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。

absolute:对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。 如果设定 position:relative,就可以使用 top,bottom,left和 right 来相对于元素在文档中应该出现的位置来移动这个元素。[意思是元素实际上依然占据文档 中的原有位置,只是视觉上相对于它在文档中的原有位置移动了] 当指定 position:absolute 时,元素就脱离了文档[即在文档中已经不占据位置了],可以准确的按照设置的 top,bottom,left 和 right 来定位了。 如果一个元素绝对定位后,其参照物是以离自身最近元素是否设置了相对定位,如果有设置将以离自己最近元素定位,如果没有将往其祖先元素寻找相对定位元素, 一直找到html为止。

一句话:子绝父相

3 position:fixed

在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。

fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义。 注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。因为这是两个不同的流,一个是浮动流, 另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流。

 

 1 <!-- 需求:根据元素自身定位,并且脱离文档流(位置变化后原来的位置不保留),位置变化根据父级标签的定位变化-->
 2 <!DOCTYPE html>
 3 <html lang="en">
 4 <head>
 5     <meta charset="UTF-8">
 6     <title>Title</title>
 7     <style>
 8         body{
 9             margin: 0;
10         }
11         .d1{
12            background: red;
13             height: 50px;
14             width: 100px;
15             position: absolute;
16             top: 50px;
17         }
18 
19         .d2{
20             background: greenyellow;
21             height: 30px;
22             width: 60px;
23         }
24         .d3{
25             background: black;
26             height: 100px;
27             width: 200px;
28         }
29         .d4{
30             background: blue;
31             height: 1000px;
32             width: 120px;
33         }
34         /*.father{*/
35             /*position: relative;*/
36             /*top: 20px;*/
37         /*}*/
38         /*.d5{*/
39             /*background: pink;*/
40             /*width: 600px;*/
41             /*height: 500px;*/
42         /*}*/
43     </style>
44 </head>
45 <body>
46 <div class="d5"></div>
47 <div class="father">
48     <div class="d1"></div>
49     <div class="d2"></div>
50     <div class="d3"></div>
51     <div class="d4"></div>
52 </div>
53 
54 
55 </body>
56 </html>
练习代码

 

小结:
1. relative不脱离文档流,位置变化后保留原来的位置,且位置变化根据之前对象所在的位置变化
2. absolute 脱离文档流,位置变化后原来的位置不保留,位置变化根据父级标签的定位变化

fixed:定位之后,即使滚动滑轮,在窗口的位置依然不变,元素跟随滑轮移动

absolute:定位之后,滚动滑轮,元素仍在初始定位的位置,不再跟随滑轮

relative:单独使用无意义

一般用法:

外层标签使用relative,内层标签absolute,

relative和absolute搭配使用。且absolute定位是根据父标签的relative来定位的,如果父标签没有relative属性,则根据body定位

 

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Title</title>
  6     <style>
  7         body{
  8             margin: 0;
  9         }
 10         .pg-header{
 11             background-color: #2459a2;
 12             height: 44px;
 13         }
 14         .w{
 15             width: 1200px;
 16             /*让div居中的常用方法*/
 17             margin: 0 auto;
 18         }
 19         ul{
 20             list-style: none;
 21             margin: 0;
 22         }
 23         ul li{
 24             /*一般来讲,从左到右的布局都用float*/
 25             float: left;
 26         }
 27         .pg-header .logo{
 28             float: left;
 29             margin-top: 11px;
 30         }
 31         .pg-header .menu{
 32             float: left;
 33             line-height: 44px;
 34             font-size: 12px;
 35         }
 36         .pg-header .menu ul li:hover{
 37             color: #fff;
 38             background-color: #204982;
 39         }
 40         .pg-header .w .menu ul li a{
 41             color: white;
 42             padding: 0 20px;
 43             /*margin: 20px;*/
 44             text-decoration: none;
 45         }
 46         .pg-header .account{
 47             float: right;
 48             font-size: 12px;
 49         }
 50         .pg-header .account ul li a{
 51             line-height: 44px;
 52             color: white;
 53             text-decoration: none;
 54             /*margin: 20px;*/
 55             padding: 13px 20px;
 56 
 57         }
 58         .pg-header .account ul li a:hover{
 59             /*background-color: #204982;*/
 60             background-color: cornflowerblue;
 61         }
 62 
 63         .pg-header .search{
 64             float: right;
 65         }
 66 
 67         .pg-body{
 68             /*height: 500px;*/
 69             background-color: #ededed;
 70         }
 71         .pg-body .l-body{
 72             /*padding: 6px 28px 60px;*/
 73             /*background-color: #fff;*/
 74             width: 800px;
 75             float: left;
 76             /*background-color: white;*/
 77         }
 78         .pg-body .r-body {
 79             width: 400px;
 80             float: left;
 81             /*background-color: white;*/
 82         }
 83          .pg-body .test{
 84             background-color: white;
 85          }
 86 
 87 
 88         .pg-footer{
 89             background-color: green;
 90         }
 91 
 92     </style>
 93 </head>
 94 
 95 <body>
 96         <div class="pg-header">
 97             <div class="w">
 98                 <div class="logo">
 99                     <img src="http://dig.chouti.com/images/logo.png">
100                 </div>
101                 <div class="menu">
102                     <ul>
103                         <li><a href="http://dig.chouti.com/all/hot/recent/1">全部</a></li>
104                         <li><a href="http://dig.chouti.com/all/hot/recent/1">42区</a></li>
105                         <li><a href="http://dig.chouti.com/all/hot/recent/1">段子</a></li>
106                         <li><a href="http://dig.chouti.com/all/hot/recent/1">图片</a></li>
107                     </ul>
108                 </div>
109                 <div class="search">
110                     <input type="text"/>
111                 </div>
112                 <div class="account">
113                     <ul>
114                         <li><a href="http://dig.chouti.com/all/hot/recent/1">注册</a></li>
115                         <li><a href="http://dig.chouti.com/all/hot/recent/1">登录</a></li>
116                     </ul>
117                 </div>
118             </div>
119         </div>
120 
121         <div class="pg-body">
122             <!--一个div加多个样式-->
123             <div class="w test">
124                 <div class="l-body">左侧
125                     <p>1</p>
126                     <p>1</p>
127                     <p>1</p>
128                     <p>1</p>
129                     <p>1</p>
130                     <p>1</p>
131                     <p>1</p>
132                     <p>1</p>
133                     <p>1</p>
134                     <p>1</p>
135                     <p>1</p>
136                     <p>1</p>
137                     <p>1</p>
138                     <p>1</p>
139                     <p>1</p>
140                     <p>1</p>
141                     <p>1</p>
142                 </div>
143                 <div class="r-body">右侧
144                     <p>1</p>
145                     <p>1</p>
146                     <p>1</p>
147                     <p>1</p>
148                     <p>1</p>
149                     <p>1</p>
150                     <p>1</p>
151                 </div>
152                 <div style="clear: both">2222222222222222</div>
153             </div>
154         </div>
155         <div class="pg-footer">
156             <div class="w">
157                 <p style="display: inline">aaa</p>
158                 aaa
159             </div>
160         </div>
161 </body>
162 </html>
163 
164 
165 <!--最常用的标签就是div+css,其他标签都是辅助-->
抽屉练习

 

 

 

 

html,css知识点补充:

 

写HTML步骤:
<!--最常用的标签就是div+css,其他标签都是辅助-->
大多数网站页面分为3个部分,顶部菜单、中间内容、底部内容,对应3个标签
<div></div> 头部内容
<div></div> 中间内容
<div></div> 底部内容


1.
/*让div居中的常用方法*/
先设置一个宽度盒子:width: 980px;
margin: 0 auto; auto表示自动两侧距离相同,

 

2.
line-height:可用于将文本、文字内容居中:

前提:设置外层标签(大盒子)的高度和line-height高度相同

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7 
 8     </style>
 9 </head>
10 <body>
11     <div style="height: 50px; background-color: red; line-height: 50px;">文字居中</div>
12 </body>
13 </html>
示例

 

 

3.background-position参数说明:

移动 孔洞 后面图片的位置,以便于显示不同的图标
简写:

 

0和 -58px分别代表x,y轴的位置

注意:
ul标签自己有一个固定样式:margin-top
padding参数:
padding: 0 20px; 表示上下为0 左右20
padding-top: 0; 顺时针记忆:上0 右20 下0 左20
padding-right: 20px;
padding-bottom: 10px;
padding-left: 20px;

 

 

 

4.z-index 参数
z-index : 两个同一位置重叠的元素,z-index的值大的在上面
应用:登录窗口弹出到最上面一层

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <div style="position: fixed;left: 100px;right:0;height: 100px;background-color: red;z-index:2"></div>
 9     <div style="position: fixed;left: 0;right:0;height: 80px;background-color: green;z-index: 1"></div>
10 </body>
11 </html>
示例

 

 

5.公共样式和私有样式:不推荐写公共样式(容易发生样式重复定义,覆盖),要写私有样式(即样式的多层包含,全路径),这样样式不容易重叠,对于公共插件,不需要写多层的包含,只需要写在最外层就可以了,即写一个公共样式

   

6.一个元素标签被float之后,则他的父标签没有高度了

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .c{
 8             background-color: red;
 9         }
10         .c .item{
11             float:left;
12             width: 30px;
13         }
14     </style>
15 </head>
16 <body>
17     <div class="c">
18         <div class="item">123</div>
19         <div class="item">456</div>
20     </div>
21 </body>
22 </html>
父标签被遮挡例子

方法1:style="clear: both"

<body>
<div class="c">
<div class="item">123</div>
<div class="item">456</div>
<div style="clear: both"></div>

</div>
</body>

方法2:利用after和公共样式完成

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .c, .d, .e{
 8             background-color: red;
 9         }
10         .c .item, .d .item, .e .item{
11             float: left;
12             width: 30px;
13             height: 70px;
14             background-color: green;
15         }
16 /*公共样式,作用相当于clear:both。即:在div下面再增加一个标签,把父标签拽起来,拉起来父标签的高度*/
17         .clear:after{
18             content: '111';
19             display: block;
20             clear: both;
21             visibility: hidden;
22             height:0;
23         }
24     </style>
25 </head>
26 <body>
27     <div class="c clear">
28         <div class="item">123</div>
29         <div class="item">456</div>
30         <!--<div style="clear: both"></div>-->
31     </div>
32 
33     <div class="d clear">
34         <div class="item">123</div>
35         <div class="item">456</div>
36         <!--<div style="clear: both"></div>-->
37     </div>
38 
39     <div class="e clear">
40         <div class="item">123</div>
41         <div class="item">456</div>
42         <!--<div style="clear: both"></div>-->
43     </div>
44 
45 </body>
46 </html>
利用after和公共样式完成

 

注意:隐藏标签的几种方式

display:none 隐藏且不占高度
visibility:hidden; 隐藏占高度

 

 

 

 

7.hover的应用:

1)hover后加选择器,hover的同时,让hover的内容同时也有想要的变化,如变色:

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7     .ele{
 8         background-color: #8a8a8a;
 9         /*先设置好边框,鼠标移动上去hover的效果更自然平滑*/
10         /*border: 2px solid transparent;*/
11 }
12         .ele:hover{
13             border: 12px solid red;
14         }
15         .ele:hover .ele-item{
16             color: red;
17         }
18     </style>
19 </head>
20 <body>
21     <div class="ele">
22         <div>123</div>
23         <div class="ele-item">123</div>
24 
25     </div>
26 </body>
27 </html>
示例

 

2)对于一张图片,当鼠标悬停时,在图片上层显示其他内容,涉及的知识点:overflow hover position(absolute relative) 

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .touch{
 8             width: 200px;
 9             height: 200px;
10             overflow: hidden;
11             position: relative;
12         }
13         .touch .content{
14             position: absolute;
15             top: 0;
16             left:0;
17             right:0;
18             bottom: 0;
19             background-color: #8a8a8a;
20             /*透明度*/
21             opacity: 0.6;
22             text-align: center;
23             visibility: hidden;
24         }
25         .touch .content .c1{
26             font-size:32px;
27             padding: 30px 0;
28         }
29         .touch:hover .content{
30             visibility: visible;
31         }
32     </style>
33 </head>
34 <body>
35         <div class="touch">
36             <div><img src="1.png"></div>
37             <div class="content">
38                 <div class="c1">WHISKY</div>
39                 <div class="c2">1000-5000</div>
40             </div>
41         </div>
42 </body>
43 </html>
示例

 

 

 

 

8.position:

fixed:单独使用, 固定在整个屏幕的某个位置, 应用:页面中的返回顶部按钮
relative和absolute搭配使用。且absolute定位是根据父标签的relative来定位的,如果父标签没有relative属性,则根据body定位
示例代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <div style="height: 2000px; background-color: gray;">
 9         <div style="background-color: green; width: 150px; height: 150px; margin: 0 auto;position: relative;">
10             <!--利用position,在大绿框中放置一个小粉框-->
11             <div style="background-color: pink;width: 50px;height: 50px;position: absolute; left: 0;bottom: 0;"></div>
12         </div>
13 
14     </div>
15     <!--模仿页面中右下角返回顶部按钮-->
16     <div style="position: fixed;right: 10px; bottom: 10px; width: 140px; height: 140px; background-color: pink"></div>
17 </body>
18 </html>
View Code

 

 

 

9.通过border相互覆盖的特性实现尖角图标

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .up{
 8             border-top:30px solid transparent;
 9             border-right: 30px solid transparent;
10             border-bottom: 30px solid green;
11             border-left: 30px solid transparent;
12             display: inline-block;
13         }
14         .down{
15             border-top:30px solid green;
16             border-right: 30px solid transparent;
17             border-bottom: 30px solid transparent;
18             border-left: 30px solid transparent;
19             display: inline-block;
20         }
21         .c1{
22             border:30px solid transparent;
23             display: inline-block;
24             border-top:30px solid green;
25         }
26         .c1:hover{
27             border:30px solid transparent;
28             border-bottom:30px solid green;
29             margin-top: -30px;
30         }
31     </style>
32 </head>
33 <body>
34     <div class="up"></div>
35     <div class="down"></div>
36     <div style="height: 50px; background-color: red">
37         <div class="c1">
38         </div>
39     </div>
40 </body>
41 </html>
View Code

注意:display:inline-block ,不允许margin-top为负值,没有效果,inline属性可以让margin-top为负值。

 

 

 

10.图标
可以用font awesome插件来完成小图标
http://fontawesome.io/

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <link rel="stylesheet" href="Font-Awesome-master/css/font-awesome.css"/>
 7 </head>
 8 <body>
 9     <div class="fa fa-cut"></div>
10 </body>
11 </html>
示例

 

 

 

11.目录规范:

- app
  - s1.html
  - s2.html
- css       # 公共样式
  - commons.css
- script
  - commons.js

- plugin       # 插件
  - bootstrap
  - bxslider
  - ...

 

 

12. img标签默认自带边框,IE浏览器会显示出来,解决在style中设置img{ border:0 }

 


13.样式加载顺序:就近原则,最后写的样式属性,覆盖前面的相同的样式属性,但是当有参数 important时, 加了important的属性最终生效:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .c2{
 8             /*当有参数 important时, 加了important的属性最终生效:*/
 9             color: pink !important;
10         }
11         .c1{
12             color: green;
13         }
14     </style>
15 </head>
16 <body>
17         <div class="c1 c2">666</div>
18 </body>
19 </html>
View Code


应用:当需要修改别人的代码时,想让自己写的某个属性永远生效,需要加important

 

 

实例:
1.管理后台的页面:
利用overflow实现内容下拉滚动,菜单固定的布局例子:(菜单同理也可以实现滚动)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             margin:0;
 9         }
10         .pg-header{
11             height: 48px;
12             background-color: #dddddd;
13         }
14         .pg-body .body-menu{
15             position: absolute;
16             width: 180px;
17             background-color: antiquewhite;
18             left: 0;
19         }
20         .pg-body .body-content{
21             position: absolute;
22             top: 48px;
23             left: 182px;
24             right: 0;
25             bottom: 0;
26             background-color: blueviolet;
27             overflow: auto;
28         }
29     </style>
30 </head>
31 <body>
32     <div class="pg-header">whisky supervisor system</div>
33     <div class="pg-body">
34         <div class="body-menu">
35             <ul>
36                 <li>11</li>
37                 <li>11</li>
38                 <li>11</li>
39                 <li>11</li>
40                 <li>11</li>
41                 <li>11</li>
42                 <li>11</li>
43                 <li>11</li>
44                 <li>11</li>
45                 <li>11</li>
46                 <li>11</li>
47                 <li>11</li>
48                 <li>11</li>
49                 <li>11</li>
50                 <li>11</li>
51                 <li>11</li>
52                 <li>11</li>
53                 <li>11</li>
54                 <li>11</li>
55             </ul>
56         </div>
57         <div class="body-content">
58                 <h1>123</h1><h1>123</h1>
59                 <h1>123</h1><h1>123</h1>
60                 <h1>123</h1><h1>123</h1>
61                 <h1>123</h1><h1>123</h1>
62                 <h1>123</h1><h1>123</h1>
63                 <h1>123</h1><h1>123</h1>
64                 <h1>123</h1><h1>123</h1>
65                 <h1>123</h1><h1>123</h1>
66                 <h1>123</h1><h1>123</h1>
67                 <h1>123</h1><h1>123</h1>
68                 <h1>123</h1><h1>123</h1>
69                 <h1>123</h1><h1>123</h1>
70                 <h1>123</h1><h1>123</h1>
71                 <h1>123</h1>
72                 <h1>123</h1><h1>123</h1>
73                 <h1>123</h1><h1>123</h1>
74                 <h1>123</h1><h1>123</h1>
75         </div>
76     </div>
77 </body>
78 </html>
管理后台

 布局方式二:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             margin:0;
 9         }
10         .pg-header{
11             height: 48px;
12             background-color: #dddddd;
13         }
14         .pg-body .body-menu{
15             position: absolute;
16             width: 180px;
17             background-color: antiquewhite;
18             left: 0;
19         }
20         .pg-body .body-content{
21             position: absolute;
22             top: 48px;
23             left: 182px;
24             right: 0;
25             bottom: 0;
26             background-color: blueviolet;
27             /*可以注释overflow实现两种不同的布局方式*/
28             overflow: auto;
29         }
30     </style>
31 </head>
32 <body>
33     <div class="pg-header">whisky supervisor system</div>
34     <div class="pg-body">
35         <div class="body-menu">
36             <ul>
37                 <li>11</li>
38                 <li>11</li>
39                 <li>11</li>
40                 <li>11</li>
41                 <li>11</li>
42                 <li>11</li>
43                 <li>11</li>
44                 <li>11</li>
45                 <li>11</li>
46                 <li>11</li>
47                 <li>11</li>
48                 <li>11</li>
49                 <li>11</li>
50                 <li>11</li>
51                 <li>11</li>
52                 <li>11</li>
53                 <li>11</li>
54                 <li>11</li>
55                 <li>11</li>
56             </ul>
57         </div>
58         <div class="body-content">
59                 <h1>123</h1><h1>123</h1>
60                 <h1>123</h1><h1>123</h1>
61                 <h1>123</h1><h1>123</h1>
62                 <h1>123</h1><h1>123</h1>
63                 <h1>123</h1><h1>123</h1>
64                 <h1>123</h1><h1>123</h1>
65                 <h1>123</h1><h1>123</h1>
66                 <h1>123</h1><h1>123</h1>
67                 <h1>123</h1><h1>123</h1>
68                 <h1>123</h1><h1>123</h1>
69                 <h1>123</h1><h1>123</h1>
70                 <h1>123</h1><h1>123</h1>
71                 <h1>123</h1><h1>123</h1>
72                 <h1>123</h1>
73                 <h1>123</h1><h1>123</h1>
74                 <h1>123</h1><h1>123</h1>
75                 <h1>123</h1><h1>123</h1>
76         </div>
77     </div>
78 </body>
79 </html>
80 
81 管理后台
View Code

注意: overflow的css中必须加上bottom:0   top:npx 等属性,才会生效

 

 

 


2.写提示框,边缘标签的时候用absolute relative(当想让某一个东西在另外一个东西旁边的时候使用)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <table>
 9         <tr>
10             <td>第一</td>
11             <td>第二</td>
12             <td>
13                 <div style="position: relative">
14                     <a>删除</a>
15                     <div style="position: absolute; left: 38px;top: -2px;">
16                         <input type="button" value="确定"/>
17                         <input type="button" value="取消"/>
18                     </div>
19                 </div>
20             </td>
21         </tr>
22         <tr>
23             <td>第一</td>
24             <td>第二</td>
25             <td>删除</td>
26         </tr>
27         <tr>
28             <td>第一</td>
29             <td>第二</td>
30             <td>删除</td>
31         </tr>
32     </table>
33 </body>
34 </html>
View Code

 

 

3.登录注册框右侧的小图标

实现:利用relative+absolute+padding

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .user{
 8             position: relative;
 9             width: 250px;
10             /*background-color: pink;*/
11         }
12         .user input{
13             height: 30px;
14             width: 170px;
15             padding-right: 30px;
16         }
17         .user .ren{
18             position: absolute;
19             top: 8px;
20             left: 190px;
21         }
22     </style>
23 </head>
24 <body>
25         <div class="user">
26             <input type="text">
27             <span class="ren">R</span>
28 
29         </div>
30 </body>
31 </html>
View Code

 

 

4.多层div实现叠加样式。模态对话框,重要(用的很多,登录注册弹出框):

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         body{
 8             margin: 0;
 9         }
10         .model{
11             /*遮罩层*/
12             position: fixed;
13             top: 0;
14             bottom:0;
15             left:0;
16             right:0;
17             background-color: black;
18             opacity: 0.6;
19             z-index: 2;
20         }
21         .content{
22             height: 300px;
23             width: 400px;
24             background-color: white;
25             position: fixed;
26             top: 50%;
27             left: 50%;
28             z-index: 3;
29             margin-left: 200px;
30             margin-top: -150px;
31         }
32     </style>
33 </head>
34 <body>
35     <div style="height: 2000px; background-color: red">
36         <h1>11a</h1>
37         <h1>11a</h1>
38         <h1>11a</h1>
39         <h1>11a</h1>
40     </div>
41     <div class="model"></div>
42     <div class="content"></div>
43 </body>
44 </html>
View Code

 

 

5.小图标之加减号

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .left{
 8             float: left;
 9         }
10         .wrap{
11             height: 22px;
12             width: 150px;
13             border: 1px solid #ddd;
14         }
15         .wrap .minus{
16             height: 22px;
17             width: 22px;
18             line-height: 22px;
19             text-align: center;
20         }
21         .wrap .plus{
22             height: 22px;
23             width: 22px;
24             line-height: 22px;
25             text-align: center;
26         }
27         .wrap .count input{
28             /*padding: 0;*/
29             border: 0;
30             width: 104px;
31             height: 21px;
32             border-left: 1px solid #dddddd;
33             border-right: 1px solid #dddddd;
34         }
35     </style>
36 </head>
37 <body>
38     <div class="wrap left">
39         <div class="minus left">-</div>
40         <div class="count left">
41             <input id="count" type="text" value="123"/>
42         </div>
43         <div class="plus left" onclick="Plus();">+</div>
44         <script type="text/javascript">
45             function Plus() {
46                 var old_str = document.getElementById('count').value;
47                 var old_int = parseInt(old_str);
48                 var new_int = old_int + 1;
49                 document.getElementById('count').value = new_int;
50             }
51         </script>
52     </div>
53 </body>
54 </html>
View Code

 

posted @ 2017-11-30 00:37  whitesky-root  阅读(314)  评论(0)    收藏  举报