mapengpeng1999@163.com Web前端之CSS

CSS的主要使用场景就是美化网页、布局网页的。
CSS层叠样式表作用:给网页进行样式的开发。 给网页进行布局。
HTML的局限性,它只关注内容的语义。做出来的网页很丑。HTML也可做简单的样式,但是代码很繁琐和臃肿。
CSS网页的美容师。CSS是层叠样式表(Cascading Style Sheets)。CSS也是一种标记语言。
总结:
1.HTML主要做结构,显示元素内容。
2.CSS美化HTML,布局网页。
3.CSS最大价值:由HTML专注去做结构呈现,样式交给CSS,即结构(HTML)与样式(CSS)相分离。

CSS是层叠样式表(Cascading Style Sheets)
CSS1.0
CSS2.0  div(块) + CSS,HTML与CSS分离的思想,让网页变得简单。
CSS2.1 浮动,定位
CSS3.0 圆角,阴影,动画,浏览器兼容性
打开调试工具(Chrome浏览器),按下F12(Fn+F12)键或者右击空白处-->检查或审查元素
在浏览器的页面上使用键盘上的 F12(Fn+F12) 按键开启调试模式,就可以看到组成标签。
选择Elements(元素)这个栏目,左边是HTML结构,右边是CSS样式。
点击Elements(元素)左边那个箭头按钮,再将鼠标移动到页面哪个位置就可查看当前网页源代码。
1.Ctrl+滚轮可以放大页面
2.左边是HTML结构,右边是CSS样式
3.右边CSS样式可以改动数值(左右箭头或直接输入)和查看颜色
4.Ctrl+0复原浏览器大小
5.如果点击元素,发现右侧没有样式引入,可能是类名或样式引入错误
6.如果有样式,但是样式前面有黄色感叹号提示,则是样式属性书写错误。
调试工具里面修改代码后一定要复制一份到源代码中,否则修改无效。
CSS层叠样式引入方式:
按照CSS样式书写的位置(或者引入方式),CSS样式表可以分为三大类:
行内样式表(行内式)(在 HTML 元素内部)
内部样式表(嵌入式)(位于<head> 标签内部)  
外部样式表(链接式)(存储在 CSS 文件中,在<head> 标签内部引入外部样式)

行内样式表,又叫内联样式(行内式)(在 HTML 元素内部)拥有最高的优先执行权。
外部样式表最常用,控制多个页面。内部样式表较多用,控制一个页面。行内样式表较少用,控制一个标签。

行内样式表(内联样式表)在元素标签内部的style属性中设定CSS样式。
适用于修改简单样式。直接在标签内部添加个style属性。  
<div style="color: red; font-size: 12px;">青春梦想</div>
style其实就是标签的属性。在双引号中间,写法要符号CSS规范。
可以控制当前的标签设置样式,只修改局部当前标签内样式,不可修改整个页面样式。
只有对当前元素添加简单样式时可以考虑使用。
由于要将表现和内容混杂在一起,用的少。当样式仅需要在一个元素上应用一次时。
你需要在相关的标签内使用样式(style)属性。style 属性可以包含任何 CSS 属性。
<p style="color: sienna; margin-left: 20px">
This is a paragraph
</p>


内部样式表(嵌入式)是写到html页面内部,一般会放在文档的<head>标签中。
是将所有的CSS代码抽取出来,单独放到一个<style>标签中。
<style>   P {line-height: 26px; }  </style>
<style>标签理论上可以放在HTML文档的任何地方,但一般会放在文档的<head>标签中。
通过此种方式可以方便控制整个页面中的元素样式设置。
代码结构清晰但是并没有实现结构与样式完全分离。
当单个文档(页面)需要特殊的样式时,就应该使用内部样式表。你可以使用 <style> 标签在文档头部定义内部样式表。

按sty回车就行。
<head>
<style type="text/css">
  hr {color: sienna;}
  p {margin-left: 20px;}
  body {background-image: url("images/back40.gif");}
</style>
</head>


外部样式表(链接式)实际开发用的都是外部样式表。实现了结构与样式完全分离。
引入外部样式表分为2步:(一般会放在文档的<head>标签中。)
1.新建一个后缀名为.css的样式文件(存储在CSS文件夹中),把所有CSS代码放入此文件中。
在CSS文件里不用再写style标签了,这个CSS文件里只有样式没有标签。
2.在HTML页面中,使用<link>标签引入这个文件。
<link  rel="stylesheet"(引入哪个样式表) href="css文件路径"(引入哪个css文件)>
rel属性:定义当前文档与被链接文档之间的关系,
在这里要指定为”stylesheet”,表示被链接文档是一个样式表文件。
href属性:定义所链接外部样式表文件的URL路径。
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
每个页面使用 <link> 标签链接到样式表。<link> 标签在(文档的)头部。
浏览器会从文件 mystyle.css 中读到样式声明,并根据它来格式文档。
外部样式表文件不能包含任何的 html 标签。样式表应该以 .css 扩展名进行保存。

按link回车就好了。
<link rel="stylesheet" type="text/css" href="css/1.css"/>


行内样式,在html标签元素中,编写一个style属性,编写样式代码即可
<h1 style="color: red;">Hello World</h1>
内部样式,<style>标签放在<head>头标签里面
<style>
	h1{
		color: yellow;
	  }
</style>
外部样式,
<link>标签放在<head>头标签里面,<link rel="stylesheet" href="css/style.css" />,
h1{
	color: red;
}
优先级(就近原则):行内样式》内部样式》外部样式(最近肯定是行内样式,其次看内部和外部哪个离这个元素比较近)
Emmet语法,它使用缩写,来提高html/css的编写速度,编译器内部已经集成该语法。
1.快速生成HTML结构语法  2.快速生成CSS样式语法

快速生成HTML结构语法:
1.生成标签,直接输入标签名按Tab键即可,比如 div 然后tab键,就可生成<div></div>
2.如果想要生成多个相同标签,加上*就可以了,比如 div*3 就可以快速生成3个div
3.如果有父子级关系的标签,可以用> 比如 ul>li就可以了
4.如果有兄弟关系的标签,用+就可以了,比如div+p
5.如果生成带有类名或者id名字的,直接写.demo或者#two tab键就可以了
6.如果生成的div类名是有顺序的,可以用自增符号$
7.如果想要在生成的标签内部写内容可以用{}表示  
div{123456}+tab键就会生成<div>123456</div>

快速生成CSS样式语法:
CSS基本采取简写形式即可,比如w200 按tab键可生成width: 200px;
比如 lh26 按tab键可生成line-height: 26px;

快速格式化代码,在编写代码的编辑器页面右击,点击格式化文档(快捷键Shift+Alt+F)
也可设置当我们保存页面时自动格式化代码,
第一步,文件,首选项,设置。
第二步,搜索emmet.include。
第三步,在【用户】的settings.json下添加以下语句:
“editor.formatOnType”:true, “editor.formatOnSave”:true  
添加语句时注意每行代码后加一英文下逗号
只要设置一次即可,以后都会自动保存格式化代码
CSS样式规则:由两个主要部分组成,选择器和一条或多条声明。
选择器通常是您需要改变样式的 HTML 元素。
每条声明由一个属性和一个值组成。
h1 {color:red; font-size:14px;}

如  <style> p{color:red;font-size:12px;} </style>   <style>写在<head>里面
选择器是用于指定CSS样式的HTML标签,花括号内是对该对象设置的具体样式。
属性和属性值以“键值对”的形式出现,属性和属性值之间用英文”:”分开。多个“键值对”之间用英文”;”进行区分。
属性是对指定的对象设置的样式属性,列如字体大小、文本颜色等。

hr {color: sienna;}
p {margin-left: 20px;}
body {background-image: url("images/back40.gif");}
不要在属性值与单位之间留有空格。假如你使用 “margin-left: 20 px” 而不是 “margin-left: 20px” ,
它仅在 IE 6 中有效,但是在 Mozilla/Firefox 或 Netscape 中却无法正常工作。
CSS代码风格:1.样式格式书写 2.样式大小写风格 3.样式空格风格
1.样式格式书写:
  紧凑格式  h3 { color:red; font-size:20px;}
  展开格式  h3 {
             color: red;
             font-size: 20px;
            }
强烈建议用展开格式书写,这样更直观。
2.样式大小写风格:
  强烈建议样式选择器,属性名,属性值关键字全部用小写字母,特殊情况除外。
3.样式空格风格:
  属性值前面,冒号后面,保留一个空格。选择器(标签)和大括号中间保留空格。
CSS选择器(选择符)的作用:就是选择标签用的。
选择器分类:选择器分为基础选择器和复合选择器两大类。
基础选择器:是由单个选择器组成的。
基础选择器又包括:标签选择器,类选择器,id选择器,和通配选择器。

这3个基本选择器:
标签选择器,选择一类标签,样式中用标签名{}
类选择器,可以复用,选择所有class属性一致的标签,样式中用.class类名{}
ID选择器,只能用一次,样式中用#id名{}
三者优先级:id选择器>class选择器>标签选择器
标签选择器(元素选择器、类型选择器):是指用HTML标签名称作为选择器,按标签名称分类,
为页面中某一类标签指定统一的CSS样式。
div {color:blue;}
span {color:silver;}
标签选择器的作用:可以把某一类标签全部选择出来,比如所有的<div>标签和所有的<span>标签。       
优点:能快速为页面中同类型的标签统一设置样式。缺点:不能设计差异化样式,只能选择全部的当前标签。
类选择器:如果想要差异化选择不同的标签,单独选一个或者某几个标签。
一个或多个标签来使用这个类名,类选择器开发最常用。
类选择器允许以一种独立于文档元素的方式来指定样式。
该选择器可以单独使用,也可以与其他元素结合使用。
<p class="center">
This paragraph will also be center-aligned.
</p>
.center {text-align: center}

注意:
1.类选择器使用”.”进行标识,后面紧跟类名(自定义,命名要有意义)不能用标签名作为类名。
2.类名的第一个字符不能使用数字,不能以数字开头。
class命名规则:英文字母,下划线,中划线,数字,但不能以数字开头。
类选择器可有多个类名,可以给一个标签指定多个类名,从而达到更多选择目的,
这些类名都可以选出这个标签,简单理解就是一个标签有多个名字。
多类名使用方式:在标签class属性中写多个类名。多个类名间必须用空格分开。
这个标签就可以分别具有这些类名的样式。 <div  class=”red  fat”>盒子</div>
多类名使用场景:可以把一些标签元素相同的样式(共同的部分)放到一个类里面。
这些标签都可以调用这个公共的类,然后再调用自己独有的类。可节省CSS代码,统一修改也方便。

在使用类选择器之前,需要修改具体的文档标记,以便类选择器正常工作。
为了将类选择器的样式与元素关联,必须将 class 指定为一个适当的值。
<h1 class="important">
This heading is very important.
</h1>
<p class="important">
This paragraph is very important.
</p>
.important {color:red;}

类选择器可以结合标签选择器来使用。
p.important {color:red;}
h1.important {color:blue;}
ID选择器:HTML元素以id属性来设置id选择器,CSS中id选择器以”#”来定义。一次只能选择一个标签   
<p id="intro">This is a paragraph of introduction.</p>
#intro {font-weight:bold;}
ID 选择器允许以一种独立于文档元素的方式来指定样式。
<p id="red">这个段落是红色。</p>
<p id="green">这个段落是绿色。</p>
#red {color:red;}
#green {color:green;}
注意:id 属性只能在每个 HTML 文档中出现一次。
id选择器和类选择器的区别:
在一个 HTML 文档中,ID 选择器只能使用一次。
ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。
类选择器在修改样式中用的最多,id选择器一般用于页面唯一性元素上,经常和JavaScript搭配使用。
通配选择器:使用”*”定义,表示选取页面中所有元素(标签)选择所有标签。
例如,下面的规则可以使文档中的每个元素都为红色:
* {color:red;}
通配选择器不需要调用,自动就给所有的元素使用样式。
复合选择器,是建立在基础选择器的基础上,对基本选择器进行组合形成的。
复合选择器可以更准确、更高效的选择目标元素(标签)
复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的。
常用的复合选择器有,后代选择器,子选择器,并集选择器,伪类选择器等等。

层次选择器:
1.后代选择器,在某个元素的后面
body p{
	background: red;
}
2.子选择器,只有一代
body>p{
	background: red;
}
3.相邻兄弟选择器,当前选中元素的向下的第一个兄弟元素,只有一个(相邻向下)
<p>p1</p>
<p class="active">p2</p>
<p>p3</p>
<p>p4</p>
.active + p{
	background: red;
}
4.通用兄弟选择器,当前选中元素的向下的所有兄弟元素
<p>p1</p>
<p class="active">p2</p>
<p>p3</p>
<p>p4</p>
.active~p{
	background: red;
}


结构伪类选择器:
<p>p1</p>
<p>p2</p>
<p>p3</p>
<ul>
	<li>li1</li>
	<li>li2</li>
	<li>li3</li>
</ul>

ul的第一个子元素:
ul li:first-child{
	background: red;
}
ul的最后一个子元素:
ul li:last-child{
	background: red;
}


属性选择器(常用):
<p class="demo">
	<a href="www.baidu.com" class="one" id="first">1</a>
	<a href="www.baidu.com" class="one" id="second">2</a>
</p>
这是后代选择器,选择p标签下面所有的a标签
.demo a{
	background: red;
}
属性选择器,a[]{}
如存在id属性的元素
a[id]{
	background: red;
}
如存在id为first属性的元素
a[id="first"]{
	background: red;
}
如class中有one元素
a[class="one"{
	background: red;
}
后代选择器(很重要):又称为包含选择器,可以选择父元素里面所有的子元素。
其写法就是把外层标签写在前面,内层标签写在后面,中间用空格隔开。
当标签发生嵌套时,内层标签就成为外层标签的后代。比如,ol li {color: red;}
语法:元素1 元素2 {样式说明}  表示选择元素1里面的所有元素2(后代元素)
列如,ul li {样式说明} /*选择ul里面所有的li标签元素*/ 
元素1和元素2中间用空格隔开。
元素1是父级,元素2是子级,最终选择的是元素2。
元素2可以是儿子,也可以是孙子等,只要是元素1的后代即可。比如ol li a {color: red;}
元素1和元素2可以是任意基础选择器。比如 .class li a {color: red;}

后代选择器
如果您希望只对 h1 元素中的 em 元素应用样式,可以这样写:
h1 em {color:red;}
把作为h1 元素后代的em元素的文本变为红色。其他 em 文本(如段落中的 em)则不会被这个规则选中:
<h1>This is a <em>important</em> heading</h1>
<p>This is a <em>important</em> paragraph.</p>
子元素选择器(子选择器)(重要),只能选择作为某元素的最近一级子元素。
简单理解就是选亲儿子元素,和孙子无关。语法:元素1>元素2 { 样式说明 }
表示选择元素1里面的所有直接后代(子元素)元素2 
元素1和元素2中间用大于号隔开。
元素1是父级,元素2是子级,最终选择的是元素2。
元素2必须是亲儿子,其孙子、重孙之类都不归它管,你也可叫它亲儿子选择器。

子元素选择器
与后代选择器相比,子元素选择器只能选择作为某元素子元素的元素。
如果您不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素
如果您希望选择只作为 h1 元素子元素的 strong 元素,可以这样写:
h1 > strong {color:red;}
这个规则会把第一个 h1 下面的两个 strong 元素变为红色,但是第二个 h1 中的 strong 不受影响:
<h1>This is <strong>very</strong> <strong>very</strong> important.</h1>
<h1>This is <em>really <strong>very</strong></em> important.</h1>
并集选择器(选择器分组)(重要),可以选择多组标签,同时为他们定义相同的样式。通常用于集体声明。
并集选择器是各种选择器通过英文逗号连接而成,任何形式的选择器都可以作为并集选择器的一部分。
语法:元素1,元素2 { 样式说明 }
表示选择元素1和元素2。列如 ul,div { 样式说明 }  /*选择ul和div标签元素*/
h1,h2,h3,h4,h5,h6 {
  color: green;
  }
  
约定的语法规范,并集选择器竖着写。一定要记住,最后一个选择器不要加逗号。
div,
P,
.class li {
color: red;
}

提示:通过分组,创作者可以将某些类型的样式“压缩”在一起,这样就可以得到更简洁的样式表。
/* no grouping */
h1 {color:blue;}
h2 {color:blue;}
h3 {color:blue;}
h4 {color:blue;}
h5 {color:blue;}
h6 {color:blue;}
/* grouping */
h1, h2, h3, h4, h5, h6 {color:blue;}
伪类选择器:用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。 
伪类选择器书写最大特点是用冒号(:)表示,如:hover  :first-child
伪类选择器有很多,比如链接伪类,结构伪类等。  
链接伪类选择器:  a:后面连接值是没有空格的
a:link  /*选择所有未被访问的链接,没有点击过的链接*/
a:visited  /*选择所有已被访问的链接,点击过的链接*/
a:hover  /*选择鼠标指针位于其上的链接*/
a:active  /*选择活动链接(鼠标按下未弹起的链接)*/
链接伪类选择器注意事项。
1.为了确保生效,请按照LVHA的顺序声明,link,visited,hover,active
2.因为a链接在浏览器中具有默认样式(蓝色加下划线),所以我们实际工作中都需要给链接单独指定样式。
链接伪类选择器实际开发中的书写。
/* a是标签选择器,所有的链接 */  a  { color:  red; }
/* :hover是链接伪类选择器,鼠标经过时 */ 
a:hover  {color:  yellow;}  /*鼠标经过时,由原来的红色变成了黄色 */

超链接伪类:
<a href="#">
	<img src="images/1.jpg" alt="">
</a>
<p>
	<a href="#">书名</a>
</p>
<p>
	<a href="#">作者</a>
</p>
<p id="price">
	¥50
</p>
默认颜色,去除a标签超链接默认的下划线
a{
	text-decoration: none;
	color: black;
}
鼠标悬浮的状态(重点记住这个,鼠标悬浮a:hover)
a:hover{
	color: orange;
	font-size: 50px;
}
鼠标按住未释放的状态
a:active{
	color: green;
}



:focus伪类选择器:用于选取获得焦点的表单元素。
焦点就是光标,一般情况<input>类表单元素才能获取,因此这个选择器也主要针对于表单元素来说。 
input:focus  {background-color: yellow;} 把获得光标的input表单元素选取出来。
选择器作用特征使用情况隔开符及用法
后代选择器选择后代元素可是子孙后代较多符号是空格.nav a
子代选择器选择最近一级元素只选亲儿子较少符号是大于.nav>p
并集选择器选择某些相同样式的元素可用于集体声明较多符号是逗号.nav,.header
链接伪类选择器选择不同状态的链接跟链接相关较多重点记住a{}和a:hover实际开发写法
:focus选择器选择获得光标的表单跟表单相关较少input:focus记住这个写法
为什么要美化网页?
1.有效的传递页面信息
2.美化网页,页面漂亮,才能吸引用户
3.凸显页面主题
4.提高用户体验

span标签:重点要突出的文字,使用span套起来。
欢迎学习<span id="title1">Java</span>
#title1{
	font-size: 50px;
}

CSS字体属性:

CSS使用font-family属性定义文本的字体系列。字体系列:大小、粗细和文字样式(如倾斜)。
P { font-family:”微软雅黑”; }
div { font-family: Arial,”Microsoft Yahei”,”微软雅黑”; }
系统会从第一个字体开始读取,没有读到依次往后退,若所有字体系统都没有,则会采取系统默认字体,谷歌默认微软雅黑。
各种字体之间必须使用英文状态下的逗号隔开。一般如果有空格格开的多个单词组成的字体要加引号。
尽量使用系统默认自带字体,保证在任何用户的浏览器中都能正确显示。
最常见的几个字体:body {font-family: “Microsoft Yahei”,tahoma,arial,”Hiragino Sans GB”;}
字体都是放在body标签里面,所以可在body中定义字体。


字体大小:CSS使用font-size属性定义字体大小。P { font-size:  20px; }
Px(像素)大小是我们网页中最常用的单位。谷歌浏览器默认的文字大小为16px。
不同浏览器可能显示的字号不一致,我们尽可能给一个明确值大小,不要默认大小。
可以给body指定整个页面文字的大小。
标题标签比较特殊,需要单独指定文字大小。h2 { font-size: 19px; }


字体粗细:CSS使用font-weight属性设置文本字体粗细。系统默认400不加粗的正常字体normal
Font-weight: normal | bold |bolder |lighter |number(提倡使用数字来表示加粗或变细。)
Normal:正常字体(400)。Bold:粗体(700)。Bolder:特粗(700+)。Lighter:细体(400-)。
实际开发中提倡使用数字来表示加粗或变细。  注意这个数字后面不跟单位。


文字样式:CSS使用font-style属性设置文本的风格。如 P { font-style: normal; }
属性值	  作用
normal	默认值,浏览器会显示标准的字体样式font-style:normal;
italic	浏览器会显示倾斜的字体样式。
注意:平时很少给文字加斜体,反而要给斜体标签(em,i)改为不倾斜字体。


字体复合属性:可以把文字样式综合来写,这样可节省代码。
语法规范,按着这个顺序来写,不能颠倒顺序。各个属性间以空格隔开。
不需要设置的属性可以省略(取默认值),但必须保留font-size和font-family属性,否则font属性将不起作用。
body { font:  font-style  font-weight  font-size/line-height(行高,行间距离)  font-family;}
如 div { font: italic  700  16px(/20px行高没有就不写)  ‘Microsoft Yahei’; }
字体样式:
1.font-family:字体
body{
	font-family: 楷体;
}
2.font-size:字体大小
h1{
	font-size: 50px;
}
3.font-weight:字体粗细,normal正常的,lighter更细,bolder更粗,bold粗的
.p1{
	font-weight: bold;
}
4.color:字体颜色
body{
	font-family: 楷体;
	color: red;
}

CSS文本属性:

CSS Text(文本)属性可定义文本外观,如文本颜色,对齐方式,装饰文本,文本缩进,行间距等。

文本颜色:color属性用于定义文本的颜色。 如 div { color:  red; }
颜色表示方式	          属性值
预定义颜色值	          red,green,blue
十六进制	           #FF0000,#FF6600(到时开发用吸管把颜色吸过来)
RGB代码(红绿蓝代码)	rgb(255,0,0)
实际开发最常用的是十六进制。

水平对齐文本:text-align属性用于设置元素内文本内容的水平对齐方式。div { text-align: center;}
属性值	  解释
left	左对齐(默认值)
right	右对齐
center	居中对齐
记住是水平对齐方式,不包括垂直方向。

装饰文本:text-decoration属性规定添加到文本的修饰,可给文本添加下划线,删除线,上划线等。
div { text-decoration:  underline; }
属性值	描述
none	        默认。没有装饰线(最常用)
underline	    下划线。链接a自带下划线(常用)
overline	    上划线。(几乎不用)
Line-throught	删除线。(不常用)
重点记住如何添加下划线underline和删除下划线none。

文本缩进:text-indent属性用来指定文本的第一行的缩进,通常是将段落的首行缩进。
div {text-indent: 10px;} 所有元素的第一行都可以缩进一个给定的长度,甚至该长度可是负值。
div {text-indent: 2em;}  em是一个相对单位,就是当前元素(font-size)1个文字的大小,
如果当前元素没有设置大小,则会按照父元素的一个字大小。
通常我们用于段落首行缩进2个字的距离  text-indent: 2em;

行间距:line-height 属性用于设置行间的距离(行高)。可以控制文字行与行之间距离。
行间距包括上间距5px,文本高度16px和下间距5px。 P {line-height: 26px; }
文本样式:
1.颜色:
color 单词,RGB
2.文本对齐方式:
text-align: center; 排版,居中(一般用于标题),left靠左,right靠右
h1{
	text-align: center;
}
3.段落首行缩进:
text-indent: 2em; 2em代表2个字,2px代表2个像素,em距离比px大
.p1{
	text-indent: 2em;
}
4.行高:(单行文字上下居中)
line-height: 100px;
行高和块高(div或p的高度height)一样,就可以上下居中(line-height=height)
.p2{
	background: red;
	height: 100px;
	line-height: 100px;
}
5.装饰(下中下划线):
<p class="a1">123</p>
<p class="a2">456</p>
<p class="a3">789</p>
上划线:
.a3{
	text-decoration: overline;
}
中划线:
.a2{
	text-decoration: line-through;
}
下划线:
.a1{
	text-decoration: underline;
}
去除a标签超链接默认的下划线
a{
	text-decoration: none;
}
6.文字和图片水平对齐:
<p>
	<img src="images/1.jpg" alt="">
	<span>fasfdsffsdfa<span>
</p>
img,span{
	vertical-align: middle;
}

文本阴影:
text-shadow:阴影颜色,水平偏移,垂直偏移,阴影半径
#price{
	text-shadow: red 10px -5px 2px;
}
文字阴影:在CSS3中,我们可使用text-shadow属性将阴影应用于文本。
语法:text-shadow: h-shadow v-shadow blur color;
如text-shadow: 5px 5px 6px rgba(0,0,0,.3);(这种阴影比较好看) (文字阴影实际开发用的少)
列表样式:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>列表样式</title>
		<link rel="stylesheet" href="css/style.css" />
	</head>
	<body>
	<div id="nav">
		<h2 class="title">全部商品分类</h2>
		<ul>
			<li><a href="#">图书</a>&nbsp;&nbsp;<a href="#">音像</a>&nbsp;&nbsp;<a href="#">数字商品</a></li>
			<li><a href="#">家用电器</a>&nbsp;&nbsp;<a href="#">手机</a>&nbsp;&nbsp;<a href="#">数码</a></li>
			<li><a href="#">电脑</a>&nbsp;&nbsp;<a href="#">办公</a></li>
			<li><a href="#">家居</a>&nbsp;&nbsp;<a href="#">家装</a>&nbsp;&nbsp;<a href="#">厨具</a></li>
			<li><a href="#">服饰鞋帽</a>&nbsp;&nbsp;<a href="#">个护化妆</a></li>
			<li><a href="#">礼品箱包</a>&nbsp;&nbsp;<a href="#">钟表</a>&nbsp;&nbsp;<a href="#">珠宝</a></li>
			<li><a href="#">食品饮料</a>&nbsp;&nbsp;<a href="#">保健食品</a></li>
			<li><a href="#">彩票</a>&nbsp;&nbsp;<a href="#">流行</a>&nbsp;&nbsp;<a href="#">充值</a>&nbsp;&nbsp;<a href="#">票务</a></li>
		</ul>
	</div>
	</body>
</html>


#nav{
	width: 300px;
	background: yellow;
}

.title{
	font-size: 18px;
	font-weight: bold;
	text-indent: 1em;
	line-height: 35px;
	background: red;
}
/* ul li
 list-style:
	none:去掉圆点
	circle:空心圆
	decimal;数字
	square:正方形
 */
/* ul{
	background: yellow;
} */

ul li{
	height: 30px;
	list-style: none;
	text-indent: 1em;
}

a{
	text-decoration: none;
	color: black;
	font-size: 15px;
}
a:hover{
	color: orange;
	text-decoration: underline;
}

CSS的元素显示模式:

作用:网页的标签非常多,在不同的地方会用到不同类型的标签,了解他们的特点可以更好地布局我们的网页。
元素显示模式就是元素(标签)以什么方式进行显示,比如<div>自己占一行,比如一行可以放多个<span>

HTML元素一般分为块元素和行内元素两种类型。
块元素:常见的块元素有<h1>~<h6>,<p>,<div>,<ul>,<ol>,<li>等,其中<div>标签是最典型的块元素。
块元素的特点:
1.自己独占一行,不允许别的元素与其共在一行
2.高度,宽度,外边距和内边距都可以控制
3.宽度默认是容器(父级宽度)的100%
4.是一个容器及盒子,里面可以放行内或者块级元素。

注意:文字类的元素内不能使用块级元素。
<p>标签主要用于存放文字,因此<p>里面不能放块级元素,特别是不能放<div>。
同理,<h1>~<h6>等都是文字类块级标签,里面也不能放其他块级元素。


行内元素:常见的行内元素有<a>,<strong>,<b>,<em>,<i>,<del>,<s>,<ins>,<u>,<span>等,
其中<span>标签是最典型的行内元素,有的地方也将行内元素称为内联元素。
行内元素的特点:
1.相邻行内元素在一行上,一行可以显示多个。
2.高宽直接设置是无效的。
3.默认宽度就是它本身内容的宽度。
4.行内元素只能容纳文本或其他行内元素。行内元素不允许放块状元素。

注意:链接里面不能再放链接。特殊情况链接<a>里面可以放块级元素,但是给<a>转换一下块级模式最安全。


行内块元素:在行内元素中有几个特殊的标签---<img />,<input />,<td>,
它们同时具有块元素和行内元素的特点。
行内块元素的特点:
1.和相邻行内元素(行内块)在一行上,但是它们之间有空白缝隙。一行可以显示多个(行内元素特点)
2.默认宽度就是它本身内容的宽度(行内元素特点)
3.高度,行高,外边距和内边距都可以控制(块级元素特点)
元素模式元素排列设置样式默认宽度包含
块级元素一行只能放一个块级元素可设置高和宽容器的百分百容器里可包含任何标签
行内元素一行可放多个行内元素不可直接设置高和宽它本身内容的宽度容纳文本或其他行内元素
行内块元素一行可以放多个行内块元素可设置高和宽它本身内容的宽度

元素显示模式转换:

特殊情况下,我们需要元素模式的转换,
简单理解:一个模式的元素需要另一种模式的特性比如想要增加链接<a>的触发范围。
转换成块级元素: display: block;  块级元素可设置高和宽
转换成行内元素: display: inline;  行内元素不可直接设置高和宽
转换成行内块元素:  display: inline-block;  行内块元素可设置高和宽

块级元素:独占一行
h1-h6,p,div
行内元素,不独占一行
span,a,img.strong
块级元素可以包含行内元素
	<body>
		<div>div块元素</div>
		<span>span行内元素</span>
	</body>
	
div{
	width: 100px;
	height: 100px;
	border: 1px solid red;
}
span{
	width: 100px;
	height: 100px;
	border: 1px solid red;
	display: block;
}
/* block 块元素
   inline 行内元素
   inline-block 是块元素,但可以在同一行
   none 消失
 */

单行文字垂直居中的原理:

单行文字垂直居中的原理:CSS没有提供文字垂直居中的代码,这里有个小技巧。
解决方案:
让文字的行高等于盒子的高度,就可以让文字在当前盒子内垂直居中。
行高=上空隙+文字本身高度+下空隙。盒子高度=行高,文字在当前盒子内垂直居中。
简单理解:
行高的上空隙和下空隙把文字挤到中间了,如果行高小于盒子高度,文字会偏上。如果行高大于盒子高度,则文字偏下。

CSS背景属性:

CSS背景属性可设置背景颜色,背景图片,背景平铺(多个图片),背景图片位置,背景图像固定等。

背景颜色:  background-color:颜色值;  
一般情况下元素背景颜色默认值是transparent(透明),我们也可以手动指定背景颜色为透明色。

背景图片:  background-image属性描述了元素的背景图像,
实际开发常见于logo或者一些装饰性的小图片或者是超大的背景图片,
优点是便于控制位置(精灵图也是一种运用场景)
background-image:  none(没有图片)| url(图片路径)
none 默认的无背景图片。url(图片路径)使用路径地址指定背景图像。

背景平铺:如果要在HTML页面上对背景图像进行平铺,可用background-repeat属性。
background-repeat: repeat (默认在横向和纵向上平铺)| no-repeat(不平铺) | repeat-x (沿着X轴平铺)| repeat-y(沿着Y轴平铺)
页面元素既可以添加背景颜色也可以添加背景图片,只不过背景图片会压住背景颜色。

背景图片位置:利用background-position属性可改变图片在背景中的位置。
background-position:  x  y;  参数代表意思:x坐标y坐标,可以用方位名词或精确单位。
参数值	      说明
length	    百分数|由浮点数和单位标识符组成的长度
position	Top|center|bottom|left|right方位名词
参数是方位名词:如果指定的两个值都是方位名词,则两个值前后顺序无关,
比如left top和top left效果一致。如果只指定一个方位名词,另一个省略,则第二个默认居中对齐。
参数是精确单位:如果参数值是精确坐标,那么第一个肯定是x坐标,第二个一定是y坐标。
如果只指定一个数值,那该数值一定是x坐标,另一个默认垂直居中。
参数是混合单位:如果指定的两个值是精确单位和方位名词混合使用,则第一个值是x坐标,第二个值是y坐标。

背景图像固定(背景附着):background-attachment:属性设置背景图像是否固定或者随着页面的其余部分滚动。background-attachment:后期可以制作视差滚动效果。
background-attachment: scroll (默认的,背景图像是随着对象内容滚动)| fixed(背景图像固定)

背景复合写法:

背景复合写法:为了简化背景属性的代码,我们可以将这些属性合并简写在同一个属性background中。
Background:背景颜色 背景图片地址(url(img/1.jpg)) 背景平铺 背景图像滚动或固定 背景图片位置; 
background: red url(img/1.jpg) repeat-y fixed top;  这是实际开发中我们提倡的写法。
背景色半透明:CSS3为我们提供了背景颜色半透明的效果。
Background: rgba(0,0,0,0.3);    
最后一个参数是alpha透明度,取值范围在0~1之间。
我们习惯把0.3的0省略掉,写为Background: rgb(0,0,0,.3);
注意:背景半透明是盒子背景半透明,盒子里面的内容不受影响。CSS3新增属性,是IE9+版本浏览器才支持的。
背景图片:实际开发常见于logo或者一些装饰性的小图片或者是超大的背景图片,
优点是便于控制位置(精灵图也是一种运用场景)。
属性作用
Background-color背景颜色预定义颜色/十六进制/RGB代码
Background-image背景图片Url(图片路径)
Background-repeat是否平铺repeat (默认在横向和纵向上平铺)| no-repeat(不平铺) | repeat-x (沿着X轴平铺)| repeat-y(沿着Y轴平铺)
background-position背景位置Length/position 分别是x轴和y轴
background-attachment背景附着scroll (默认的,背景图像是随着对象内容滚动)| fixed(背景图像固定)
背景简写书写更简单Background:背景颜色 背景图片地址(url(img/1.jpg)) 背景平铺 背景图像滚动 背景图片位置;
背景色半透明背景颜色半透明Background: rgba(0,0,0,0.3); 后面必须是4个值。
背景:背景颜色,背景图片
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>背景</title>
		<link rel="stylesheet" href="css/style.css" />
	</head>
	<body>
		<div class="div1"></div>
		<div class="div2"></div>
		<div class="div3"></div>
	</body>
</html>


div{
	width: 1000px;
	height: 700px;
	border: 1px solid red; /* 边框线粗细,边框线实线,边框线颜色*/
	background-image: url(../images/1.PNG); /*默认是全部平铺的repeat,图片铺满整个div*/
}
.div1{  /*图片横着沿着X轴铺满整个div*/
	background-repeat: repeat-x;
}
.div2{  /*图片竖着沿着y轴铺满整个div*/
	background-repeat: repeat-y;
}
.div3{  /*图片不平铺*/
	background-repeat: no-repeat;
}

在这里插入图片描述

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>列表样式</title>
		<link rel="stylesheet" href="css/style.css" />
	</head>
	<body>
	<div id="nav">
		<h2 class="title">全部商品分类</h2>
		<ul>
			<li><a href="#">图书</a>&nbsp;&nbsp;<a href="#">音像</a>&nbsp;&nbsp;<a href="#">数字商品</a></li>
			<li><a href="#">家用电器</a>&nbsp;&nbsp;<a href="#">手机</a>&nbsp;&nbsp;<a href="#">数码</a></li>
			<li><a href="#">电脑</a>&nbsp;&nbsp;<a href="#">办公</a></li>
			<li><a href="#">家居</a>&nbsp;&nbsp;<a href="#">家装</a>&nbsp;&nbsp;<a href="#">厨具</a></li>
			<li><a href="#">服饰鞋帽</a>&nbsp;&nbsp;<a href="#">个护化妆</a></li>
			<li><a href="#">礼品箱包</a>&nbsp;&nbsp;<a href="#">钟表</a>&nbsp;&nbsp;<a href="#">珠宝</a></li>
			<li><a href="#">食品饮料</a>&nbsp;&nbsp;<a href="#">保健食品</a></li>
			<li><a href="#">彩票</a>&nbsp;&nbsp;<a href="#">流行</a>&nbsp;&nbsp;<a href="#">充值</a>&nbsp;&nbsp;<a href="#">票务</a></li>
		</ul>
	</div>
	</body>
</html>


#nav{
	width: 300px;
	background: yellow;
}

.title{
	font-size: 18px;
	font-weight: bold;
	text-indent: 1em;
	line-height: 35px;  
	 /* 200px表示图片在背景中左右距离X轴位置,10px表示图片在背景中上下距离Y轴位置*/
	 /* 背景颜色,图片,图片位置,平铺方式*/
	background: red url(../images/下箭头.PNG) 200px 10px no-repeat; /* 用../往外走一级*/
}
/* ul li
 list-style:
	none:去掉圆点
	circle:空心圆
	decimal;数字
	square:正方形
 */
/* ul{
	background: yellow;
} */

ul li{
	height: 30px;
	list-style: none;
	text-indent: 1em;
	background-image: url(../images/右箭头.PNG);
	background-repeat: no-repeat;
	background-position: 190px 2px;
}

a{
	text-decoration: none;
	color: black;
	font-size: 15px;
}
a:hover{
	color: orange;
	text-decoration: underline;
}

CSS的三大特性:层叠性,继承性,优先级。

CSS的三大特性:层叠性,继承性,优先级。

层叠性:给相同选择器设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式,
层叠性主要解决样式冲突的问题。样式冲突,层叠性就是覆盖的意思。
层叠性原则:样式冲突,遵循的原则是就近原则,哪个样式离结构近,就执行那个样式,
可以理解成覆盖,把前面样式覆盖了。
样式不冲突,不会层叠。样式冲突,层叠性就是覆盖的意思。

继承性:子标签会继承父标签的某些样式,比如文本颜色和字号。恰当的使用继承可以简化代码,降低CSS的复杂性。
子元素可以继承父元素的样式(text-,font-,line-这些元素开头的可以继承,以及color属性)
行高的继承:body { font: 12px/1.5 Microsoft YaHei; } 行高可以跟单位也可不跟单位。
如果子元素没有设置行高,则会继承父元素的行高为1.5。
此时子元素的行高是:当前元素的文字大小*1.5。
body行高1.5这样写法最大优势是里面子元素可根据自己文字大小自动调整行高。
body行高1.5实际开发这样写。

优先级:当同一个元素指定多个选择器,就会有优先级的产生。选择器相同,则执行层叠性。
选择器不同,则根据选择器权重执行。
优先级(权重性):!important 重要的 > 行内样式 style=”” > 
ID选择器 > 类选择器,伪类选择器 > 元素(标签)选择器 >继承或者*

在这里插入图片描述

盒子模型:
margin:外边距
padding:内边距
border:边框

边框:
边框的粗细:
边框的样式:
边框的颜色:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>盒子边框</title>
		<link rel="stylesheet" href="css/style.css" />
	</head>
	<body>
	<div id="box">
		<h2>会员登录</h2> <!--表单默认是get提交-->
		<form action="#">
			<div>
				<span >用户名:</span>
				<input type="text" class="username"/>
			</div>
			<div>
				<span>密码:</span>
				<input type="text" class="user"/>
			</div>
			<div>
				<span>邮箱:</span>
				<input type="text" class="user"/>
			</div>
		</form>
	</div>
	</body>
</html>
/* border:边框线粗细,边框线样式(边框线实线solid或虚线dashed),边框线颜色 */
#box{
	width: 300px;
	border: 1px solid red;
}
/* 会发现body总有个默认的外边距,让外边距margin: 0; */
body{
	margin: 0;
}
/* 会有些常见的初始化操作,如内外边距为0,取消超链接下划线 */
h1,ul,li,a,body{
	margin: 0;
	padding: 0;
	text-decoration: none;
}
form{
	background: #3cbda6;
}
.username{
	border: 3px solid black;
}
.user{
	border: 3px dashed red;
}
h2{
	font-size: 16px;
	background-color: #3CBDA6;
	line-height: 30px;
	color: white;
	/* margin: 0; */
}
内外边距及div居中:
盒子计算方式:这个元素到底多大?
margin+border+padding+内容宽度


/* border:边框线粗细,边框线样式(边框线实线solid或虚线dashed),边框线颜色 */
/* 外边距为0表示居中元素,margin: 0 auto; */
#box{
	width: 300px;
	border: 1px solid red;
	margin: 0 auto;
}
/* 会发现body总有个默认的外边距,让外边距margin: 0; */
body{
	margin: 0;
}
/* 会有些常见的初始化操作,如内外边距为0,取消超链接下划线 */
h1,ul,li,a,body{
	margin: 0;
	padding: 0;
	text-decoration: none;
}
form{
	background: #3cbda6;
}
.username{
	border: 3px solid black;
}
.user{
	border: 3px dashed red;
}
/*顺时针
  margin: 0;
  margin: 0 1px;
  margin: 0 1px 2px 3px;*/
h2{
	font-size: 16px;
	background-color: #3CBDA6;
	line-height: 30px;
	color: white;
	/* margin: 0; */
	margin: 0 1px;
}

网页布局三大核心,盒子模型,浮动,定位。

网页布局三大核心,盒子模型,浮动,定位。

网页布局过程:
1.先准备相关的网页元素,网页元素基本都是盒子  
2.利用CSS设置好盒子样式,然后摆放到相应位置。
3.往盒子里面装内容。

盒子模型组成:所谓盒子模型,就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。
CSS盒子模型本质上是一个盒子,封装周围的HTML 元素,
它包括:边框(border),内边距(padding),外边距(margin),实际内容(content)。
边框(border):可以设置元素的边框。边框有三部分组成:边框宽度(粗细),边框样式,边框颜色 
border: border-width |  border-style  |  border-color

属性	           作用
border-width	定义边框粗细,单位是px
border-style 	边框的样式
border-color	边框颜色

border-style :| solid(实线边框)| dashed(虚线边框)|dotted(点线边框,小圆点连成线)
none(默认的,无边框)| hidden(隐藏边框。IE不支持)
边框简写:border: 1px solid red;  三者之间没有先后顺序的,但一般按照这个顺序写。
边框分开写法:border-top:1px solid red; /*只设定上边框,其余同理*/ border-bottom(下边)
练习:给一个200*200的盒子,设置上边框为红色,其余边框为蓝色(提示:一定注意边框的层叠性)    
border: 1px solid blue; border-top:1px solid red;(运用了层叠性后边覆盖前面)
表格的细线边框:border-collapse属性控制浏览器绘制表格边框的方式。
它控制相邻单元格的边框。语法:border-collapse: collapse;  collapse单词是合并的意思。
border-collapse: collapse;表示相邻边框合并在一起。
边框会影响盒子实际大小。边框会额外增加盒子的实际大小,因此我们有两种解决方案。
1.测量盒子大小时不量边框。2.如果测量时包含了边框,则需要width/height减去边框宽度。


内边距(padding):padding属性用于设置内边距,即边框与内容之间的距离。
padding-left左内边距  padding-right右内边距  padding-top上内边距  padding-bottom下内边距
内边距简写:padding属性(简写属性)可以有一到四个值。
值的个数	          表达意思
Padding:5px;	     1个值,代表上下左右都有5像素内边距
Padding 5px 10px;	 2个值,代表上下内边距是5像素,左右内边距是10像素
Padding 5px 10px 20px;	3个值,代表上内边距5像素,左右内边距10像素,下内边距20像素
Padding 5px 10px 20px 30px;	4个值,上是5像素 右是10像素 下是20像素 左是30像素。顺时针。
4种情况我们实际开发中都会遇到。
padding会影响盒子实际大小,如果盒子已经有了宽度和高度,此时再指定内边距,会撑大盒子。
解决方案:如果保证盒子跟效果图大小保持一致,则让width/height减去多出来的内边距大小即可。
padding不会撑开盒子的情况:如果盒子本身没有指定width/height属性,则此时padding不会撑开盒子大小。


外边距(margin):margin属性用于设置外边距,即控制盒子与盒子之间的距离。
Margin-left左外边距  margin-right右外边距   margin-top上外边距   margin-bottom下外边距 
Margin简写方式和padding一样。
外边距的典型应用,外边距可以让块级盒子水平居中对齐,但是必须满足两个条件。
盒子必须指定了宽度(width)。盒子左右的外边距都设置为auto(自动)。
.header { width: 100px; margin: 0 auto; } 这是开发中常见写法,意思是上下为0,左右为自动。
Margin-left: auto; margin-right: auto;和margin: auto;和margin: 0 auto;三个写法效果一致。
以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加text-align: center即可。


外边距合并,使用margin定义块元素的垂直外边距时,可能会出现外边距的合并。
当上下相邻的两个块元素(兄弟关系)相遇时,如果上面的元素有下外边距margin-bottom,
下面的元素有上外边距margin-top,则他们之间的垂直距离不是margin-bottom和margin-top之和。
取两个值中的较大者这种现象被称为相邻元素垂直外边距的合并。解决方案:尽量给一个盒子添加margin值。
嵌套块元素垂直外边距的塌陷,对于两个嵌套关系(父子关系)的块元素,
父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。
解决方案:1.可以为父元素定义上边框。2.可以为父元素定义上内边距。
3.可以为父元素添加overflow: hidden;还有其他方法,如浮动,固定,绝对定位的盒子不会有塌陷问题。
清除内外边距,网页元素很多都带有默认的内外边距,而且不同浏览器默认的也不一致。
因此我们在布局前,首先要清除下网页元素的内外边距。
* { padding: 0;/*清除内边距*/
   Margin: 0;/*清除外边距*/
  }
  
注意:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。
但是转换为块级和行内块元素就可以了。
布局为什么用不同的盒子,我只想用<div>?
标签都是有语义的,合理的地方用合理的标签,如产品标题就用h,大量文字段落就用p。
为什么用那么多类名?
类名就是给每个盒子起了一个名字,可以很好的找到这个盒子。
到底用margin还是padding?
大部分情况下两个可以混用,两者各有优缺点。
自己做没有思路?
布局有很多实现方式,先可以模仿他人,后再做出自己的风格。
在CSS3中,新增了圆角边框样式,这样盒子就可以变圆角了。Border-radius属性用于设置元素的外边框圆角。
语法:border-radius: length(数值如10px);
radius半径原理:圆与边框的交集形成圆角效果。该半径的圆与边框相切的圆弧。
参数值length可以是数值或百分比的形式。如果是正方形,想要设置为一个圆,把数值修改为高度或者宽度的一半即可,
或者直接写为50%。如果是个矩形,设置为高度的一半就可以。
该属性是一个简写属性,可以跟四个值,分别代表左上角,右上角,右下角,左下角。
如Border-radius: 10px 20px 30px 40px;
分开写:border-top-left-radius,border-top-right-radius,
border-bottom-right-radius,border-bottom-left-radius
盒子阴影:在CSS3中,新增了盒子阴影,我们可使用box-shadow属性为盒子添加阴影。
语法: box-shadow: h-shadow v-shadow blur spread color inset;

文本阴影:
text-shadow:阴影颜色,水平偏移,垂直偏移,阴影半径
#price{
	text-shadow: red 10px -5px 2px;
}
文字阴影:在CSS3中,我们可使用text-shadow属性将阴影应用于文本。
语法:text-shadow: h-shadow v-shadow blur color;
如text-shadow: 5px 5px 6px rgba(0,0,0,.3);(这种阴影比较好看) (文字阴影实际开发用的少)
描述
h-shadow必须,水平阴影位置,允许负值
v-shadow必需,垂直阴影位置,允许负值
blur可选,模糊距离
spread可选,阴影的尺寸
color可选,阴影颜色
inset可选,将外部阴影(outset)改为内部阴影
如box-shadow: 10px 10px 10px -4px rgba(0,0,0,.3);(这种阴影比较好看)   
box-shadow: 10px 10px (默认值,这种阴影不好看)
注意:默认的是外阴影(outset),但是不可以写这个单词,否则导致阴影无效。
盒子阴影不占用空间,不会影响其他盒子排列。
原先盒子没有阴影,当我们鼠标经过盒子就添加阴影效果。
Div:hover{box-shadow: 10px 10px 10px -4px rgba(0,0,0,.3);}
描述
h-shadow必需,水平阴影位置,允许负值
v-shadow必需,垂直阴影位置,允许负值
blur可选,模糊距离
color可选,阴影颜色

传统网页布局的三种方式:

传统网页布局的三种方式。网页布局的本质,用CSS来摆放盒子,把盒子摆放到相应位置。
CSS提供了三种传统布局方式(就是盒子如何进行排列顺序):普通流(标准流),浮动,定位

普通流(标准流/文档流):就是标签按照规定好的默认方式排列。
标准流是最基本的布局方式。
1.块级元素会独占一行,从上向下顺序排列。
常用元素:div hr p h1~h6 ul ol dl form table
2.行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则会自动换行。
常用元素:span a i em 等。   
实际开发中,一个页面基本都包含着三种布局方式。
为什么需要浮动?
如何让多个块级盒子(div)水平排列成一行?  如何实现两个盒子的左右对齐?
有很多布局效果,标准流没办法完成,此时可用浮动完成布局。
因为浮动可改变元素标签默认的排列方式。浮动最典型应用:可以让多个块级元素一行内排列显示。
网页布局准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。
什么是浮动?
float属性用于创建浮动框,将其移动到一边,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。 
语法:选择器 { float: 属性值; }
属性值	  描述
none	元素不浮动(默认值)
left	元素向左浮动
right	元素向右浮动

1.浮动特性(重难点):加了浮动之后的元素会有很多特性。
1.浮动元素会脱离标准流。
2.浮动的元素会一行内显示并且元素顶部对齐。
3.浮动元素会具有行内块元素特性。
设置了浮动(float)的元素最重要特性:
1.浮动元素会脱离标准流的控制(浮动)移动到指定位置。
2.浮动的盒子不再保留原先的位置。

2.如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对其排列。
注意:浮动的元素是互相贴靠在一起的(不会有缝隙),
如果父级元素宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐。
3.浮动元素会具有行内块元素特性。任何元素都可以添加浮动,不管原先是什么模式的元素,
添加浮动之后具有行内块元素相似的特性。如果行内元素有了浮动,则不需要转换块级,
行内块元素就可以直接给高度和宽度。如果块级盒子没有设置宽度,默认宽度和父级一样宽,
但是添加浮动后,它的大小根据内容来决定。浮动盒子之间没有缝隙的是紧紧挨着一起的。
浮动元素经常和标准流父级搭配使用。
为了约束浮动元素位置,我们网页布局一般采取的策略是:先用标准流的父元素排列上下位置,
之后内部子元素采取浮动排列左右位置,符合网页布局第一准则。

浮动布局注意点:
1.浮动和标准流的父盒子搭配。先用标准流的父元素排列上下位置,之后内部元素采取浮动排列左右位置。
2.一个元素浮动了,理论上其余的兄弟元素也要浮动。一个盒子里面有多个子盒子,如果其中一个盒子浮动了,
那么其他兄弟也应该浮动。浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流。

为什么需要清除浮动?
由于父级盒子很多情况下不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为0时,
就会影响下面的标准流盒子。由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响。

清除浮动的本质:是清除浮动元素造成的影响。清除浮动后,父级就会根据浮动的子盒子自动检测高度。
父级有了高度,就不会影响下面的标准流了。

清除浮动语法:
选择器 { clear: 属性值; }
属性值	  描述
left	不允许左侧有浮动元素(清除左侧浮动影响)
right	不允许右侧有浮动元素(清除右侧浮动影响)
both	同时清除左右两侧浮动的影响


我们实际开发中,只用clear: both; 清除浮动           清除浮动的策略是:闭合浮动。

清除浮动方法:

清除浮动方法:
1.额外标签法也称为隔墙法,是W3C推荐做法。2.父级添加overflow属性
3.父级添加after伪元素。4.父级添加双伪元素。

1.额外标签法也称为隔墙法
额外标签法会在浮动元素末尾添加一个空的标签。
列如<div style=” clear:both”></div>,或者其他标签(如<br />等)。 
优点:通俗易懂,书写方便。缺点:添加许多无意义标签结构性差。
注意:要求这个新的空标签必须是块级元素。

清除浮动本质是:清除浮动元素脱离标准流造成的影响。
清除浮动策略是:闭合浮动,只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子。
额外标签法:隔墙法,就是在最后一个浮动的子元素后面添加一个额外标签,添加清除浮动样式。
实际工作可能会遇到但是不常用。

2.清除浮动,给父级添加overflow属性。将其属性值设置为hidden,auto或scroll。
注意是给父元素添加代码。优点:代码简洁。缺点:无法显示溢出的部分,溢出隐藏。

3.清除浮动,after伪元素法。该方式是额外标签法的升级版,也是给父元素添加。
.clearfix:after {
  Content: “”;
  Display: block;
  Height: 0;
  Clear: both;
  Visibility: hidden;
}
.clearfix { /*IE6,7专有*/
  *zoom: 1;
}
优点:没有增加标签,结构简单。缺点:照顾低版本浏览器。代表网站:百度,淘宝网,网易。

4.清除浮动,双伪元素清除浮动。也是给父元素添加。
.clearfix:before,.clearfix:after {
  Content: “”;
  Display: table;
}  
.clearfix:after {
Clear: both;
}
.clearfix { /*IE6,7专有*/
  *zoom: 1;
}
优点:代码更简洁。缺点:照顾低版本浏览器。代表网站:小米,腾讯。

常见的图片格式:

jpg图像格式:
1.JPG(JPEG)对色彩的信息保留较好,高清,颜色较多,我们产品类的图片经常用JPG格式的。
手机相机拍照就是这种格式。
2.GIF图像格式:GIF格式最多只能存储256色,所以通常用来显示简单图形及字体,
但是可以保存透明背景和动画效果,实际经常用于一些图片小动画效果。
3.PNG图像格式:是一种新兴的网络图形格式,结合了GIF和JPEG的优点,具有存储形式丰富的特点,
能够保持透明背景。如果想要切成背景透明的图片,请选择PNG格式。
4.PSD图像格式:是PS的专有格式,里面可存放图层,通道,遮罩等多种设计稿。
最大优点是,可以直接从上面复制文字,获得图片,还可以测量大小和距离。
JPG相机拍照格式对色彩保留好。GIF制作动画效果。PNG背景透明的图片。
PS切图方式:图层切图,切片切图,PS插件切图等。
图层切图:右击图层,快速导出为PNG。但是很多情况下,我们需要合并图层再导出。
1.选中需要的图层:图层菜单,合并图层。2.右击,快速导出为PNG。
切片切图:利用切片工具手动划出(第三个)。
文件菜单,导出,存储为web设备所用格式,选择我们要的图片格式(JPEG),切片:选中切片,存储。
PS插件切图:Cutterman是一款运行在PS中的插件,能够自动将你需要的图层进行输出,
以替代传统的手工导出web所用格式以及使用切片工具进行挨个切图的繁琐流程。
官网:http://www.cutterman.cn/zh/cutterman 
 注意:Cutterman插件要求你的PS必须是完整版,不能是绿色版。

CSS属性书写顺序:

CSS属性书写顺序:
1.布局定位属性:display/position/float/clear/visibility/overflow
(建议display第一个写,毕竟关系到模式。)
2.自身属性:width/height/margin/padding/border/background
3.文本属性:color/font/text-decoration/text-align/vertical-align/white-space/break-word
4.其他属性(CSS3):content/cursor/border-radius/box-shadow/text-shadow/background-gradient

页面布局整体思路:

页面布局整体思路:
1.必须确定页面的版心(可视区),通过测量可得知。
2.分析页面中的行模块,以及每个行模块中的列模块。就是页面布局第一准则。
3.一行中的列模块经常浮动布局,先确定每个列的大小,之后再确定列的位置。就是页面布局第二准则。
4.制作HTML结构,再有CSS样式。
5.先清楚布局结构再写代码。

为什么需要定位?

为什么需要定位?
1.某个元素可以自由的在一个盒子内移动位置,并且压住其他盒子。
2.当我们滚动窗口的时候,盒子固定在屏幕某个位置的。 
以上效果标准流和浮动都无法快速实现,此时需要定位来实现。
为什么需要定位?
1.浮动可以让多个块级盒子一行没有缝隙排列显示,经常用于横向排列盒子。
2.定位则是可以让盒子自由的在某个盒子内移动位置或者固定屏幕中某个位置,并且可以压住其他盒子。
定位:将盒子定在某一位置,所以定位也是在摆放盒子,按照定位的方式移动盒子。
定位=定位模式+边偏移。
定位模式用于指定一个元素在文档中的定位方式。边偏移则决定了该元素的最终位置。
定位模式:决定元素的定位方式,它通过CSS的position属性来设置,其值可以分为四个:
Static 静态定位。 relative 相对定位。 absolute 绝对定位。 fixed 固定定位。
边偏移:就是定位的盒子移动到最终位置。有top、bottom、left、right  这四个属性。
边偏移属性示例描述
topTop: 80px;顶端偏移量,定义元素相对于其父元素上边线的距离
bottomBottom: 80px;底部偏移量,定义元素相对于其父元素下边线的距离
leftLeft: 80px;左侧偏移量,定义元素相对于其父元素左边线的距离
rightRight: 80px;右侧偏移量,定义元素相对于其父元素右边线的距离
静态定位static(了解),是元素默认定位方式,无定位的意思。
语法:  选择器  {  position:  static;  }
静态定位特点:静态定位按照标准流特性摆放位置,它没有边偏移。静态定位在布局时很少用。
相对定位relative(重要),是元素在移动位置的时候,是相对于它原来的位置来说的。(自恋型)
语法:  选择器  {  position:  relative;  }

相对定位特点:(务必记住)

相对定位特点:(务必记住)
1.它是相对于自己原来的位置来移动的(移动位置的时候参照点是自己原来的位置)。
2.原来在标准流的位置继续占有,后面盒子仍然以标准流的方式对待它。(不脱标,继续保留原来位置)
绝对定位absolute(重要),是元素在移动位置的时候,是相对于它祖先元素来说的。(拼爹型)
语法:  选择器  {  position:  absolute;  }

绝对定位特点:(务必记住)

绝对定位特点:(务必记住)
1.如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位(Document文档)。
2.如果祖先元素有定位,则以最近一级的有定位祖先元素为参考点移动位置。
3.绝对定位不在占有原先的位置(脱标)
子绝父相,子级是绝对定位的话,父级要用相对定位。
1.子级绝对定位,不会占有位置,可放到父盒子里面的任何一个地方,不会影响其他兄弟盒子。
2.父盒子需要加定位限制子盒子在父盒子内显示。
3.父盒子布局时,需要占有位置,因此父亲只能是相对定位。
总结:因为父级需要占有位置,因此是相对定位。子盒子不需要占有位置,则是绝对定位。
固定定位fixed(重要),是元素固定于浏览器可视区的位置,主要使用场景:可在浏览器页面滚动时元素的位置不会改变。   语法:  选择器  {  position:  fixed;  }

固定定位特点:(务必记住)

固定定位特点:(务必记住)
1.以浏览器的可视窗口为参照点移动元素。跟父元素没有任何关系。不随滚动条滚动。
2.固定定位不在占有原先的位置。(脱标)
固定定位小技巧:固定在版心右侧位置。
小算法:1.让固定定位的盒子left:50%  走到浏览器可视区(也可看作版心)的一半位置。
2.让固定定位的盒子margin-left:版心宽度的一半距离,
多走版心宽度的一半位置就可以让固定定位的盒子贴着版心右侧对齐了。
粘性定位sticky(了解),可被认为是相对定位和固定定位的混合。sticky粘性的。
语法: 选择器 { position: sticky;top: 10px; }  
粘性定位特点:
1.以浏览器的可视窗口为参照点移动元素(固定定位特点)
2.粘性定位占有原先的位置(相对定位特点)
3.必须添加top、bottom、left、right其中一个才有效。
跟页面滚动搭配使用。兼容性较差,IE不支持。

定位叠放次序z-index。在使用定位布局时,可能会出现盒子重叠的情况,
可用z-index来控制盒子的前后次序(z轴)。  语法:选择器 { z-index: 1; }
1.数值可以是正整数,负数或0,默认是auto,数值越大,盒子越靠上。
2.如果属性值相同,则按照书写顺序,后来居上。
3.数字后面不能加单位
4.只有定位的盒子才有z-index属性
绝对定位的盒子居中,加了绝对定位的盒子不能通过margin:0 auto水平居中,
但是可通过以下计算方法实现水平和垂直居中。
1.left:50%; :让盒子的左侧移动到父级元素的水平中心位置。
2.margin-left:-100px; : 让盒子向左移动自身宽度的一半。 
定位特殊特性,绝对定位和固定定位也和浮动类似。
1.行内元素添加绝对或者固定定位,可以直接设置高度和宽度。
2.块级元素添加绝对或者固定定位,如果不给高度或者宽度,默认大小是内容的大小。
脱标的盒子不会触发外边距塌陷。
浮动元素,绝对定位(固定定位)元素的都不会触发外边距合并的问题。
绝对定位(固定定位)会完全压住盒子。
浮动元素不同,只会压住它下面标准流的盒子,但是不会压住它下面标准流盒子里面的文字(图片)。
但是绝对定位(固定定位)会压住下面标准流所有的内容。浮动之所以不会压住文字,
因为浮动产生的目的是为了做文字环绕效果的,文字会围绕浮动元素。
网页布局总结:通过盒子模型清除知道大部分html标签是个大盒子。通过CSS浮动,
定位可以让每个盒子排列成为网页。一个完整的网页,是标准流,浮动,定位一起完成布局的。
1.标准流,可让盒子上下排列或左右排列,垂直的块级盒子显示就用标准流布局。
2.浮动,可让多个块级元素一行显示或者左右对齐盒子,多个块级盒子水平显示就用浮动布局。
3.定位,最大特点是有层叠的概念,就是可让多个盒子前后叠压来显示。
如果元素自由在某个盒子内移动就用定位布局。
元素的显示与隐藏。
类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面会重新出现。
本质:让一个元素在页面中隐藏或者显示出来。
1.display显示隐藏  2.visibility显示隐藏   3.overflow溢出显示隐藏
1.display属性用于设置一个元素如何显示。
Display:none; 隐藏对象。  Display:block; 把元素转换成块级元素,还有显示元素的意思。
display隐藏元素后,不再占有原来的位置。搭配JS可作出很多的网页特效。
2.visibility属性用于指定一个元素可见还是隐藏。
Visibility:visible; 元素可视  Visibility:hidden; 元素隐藏
visibility隐藏元素后,继续占有原来的位置。
如果隐藏元素想要原来位置,就用Visibility:hidden; 
如果隐藏元素不想要原来位置,就用Display:none;(用处更多。  重点。)
3.overflow属性指定了如果内容溢出一个元素的框(超过其指定高度及宽度)时。
Overflow:visible; 默认的溢出不做处理,不剪切内容也不添加滚动条。
Overflow:hidden;不显示超过对象尺寸的内容,超出的部分隐藏掉。
Overflow:scroll;不管超出内容否,总是显示滚动条。
Overflow:auto;超出自动显示滚动条,不超出不显示滚动条。
一般我们都不想让溢出的内容显示出来,因为溢出部分会影响布局。
但是如果有定位的盒子,请谨慎使用Overflow:hidden;因为它会隐藏多余的部分。

CSS用户界面样式

CSS用户界面样式     
鼠标样式cursor    语法: li { cursor: pointer; }
设置或检索在对象上移动的鼠标指针采用何种系统预定义的光标形状。
cursor: default;小白箭头,默认的。  cursor: pointer; 小手。
cursor: move; 移动。 cursor: text; 文本。Cursor: not-allowed; 禁止。
清除轮廓线outline   语法: input { outline: none; }
给表单添加outline: 0;或者outline: none;样式之后,就可以去掉默认的蓝色边框。
防止拖拽文本域resize,实际开发中我们文本域右下角是不可以拖拽的。
语法: textarea { resize: none; }

Vertical-align属性应用。
CSS的vertical-align属性使用场景:经常用于设置图片或者表单(行内块元素)和文字垂直对齐。
官方解释:用于设置一个元素的垂直对齐方式,但它只针对行内元素或行内块元素有效。
vertical-align: baseline;默认,元素放置在父元素的基线上。
Vertical-align: top;把元素的顶端与行中最高元素的顶端对齐。
Vertical-align: middle;把此元素放置在父元素的中部。
Vertical-align: bottom;把元素的顶端与行中最低的元素的顶端对齐。
图片,表单和文字对齐。图片表单都属于行内块元素,默认的vertical-align是基线对齐。
此时,将属性设为Vertical-align: middle;就可以让文字和图片垂直居中对齐了。
解决图片底部默认空白缝隙问题。
Bug:图片低侧会有一个空白缝隙,原因是行内块元素会和文字的基线对齐。
主要解决方法有2种:1.给图片添加vertical-align:middle|top|bottom等(提倡使用该种方法)
2.把图片转换成块级元素display:block;
溢出的文字省略号显示:1.单行文本溢出显示省略号。2.多行文本溢出显示省略号。
1.单行文本溢出显示省略号。必须满足三个条件。
1.先强制一行内显示文本。White-space: nowrap;(normal默认的自动换行)
2.超出的部分隐藏。Overflow:hidden;  3.文字用省略号替代超出的部分。Text-overflow:ellipsis;
2.多行文本溢出显示省略号。有较大的兼容性问题,适合于webkit浏览器或移动端。
Overflow: hidden;
Text-overflow:ellipsis;
/*弹性伸缩盒子模型显示*/
Display:-webkit-box;
/*限制在一个块元素显示的文本的行数*/
-webkit-line-clamp: 2;
/*设置或检索伸缩盒子对象的子元素的排列方式*/
-webkit-box-orient: vertical;

HTML5新特性

HTML5的新增特性,增加了一些新的标签,新的表单和新的表单属性等。
这些新特性都有兼容性问题,基本是IE9+以上版本的浏览器才支持,如果不考虑兼容性问题,可大量使用这些新特性。
HTML5新增的语义化标签。
以前布局我们基本用div来做。div对于搜索引擎来说,是没有语义的。
<header>:头部标签  <nav>:导航标签  <article>:内容标签  <section>:定义文档某个区域
<aside>:侧边栏标签  <footer>尾部标签
注意:这种语义化标签主要针对搜索引擎的。这些新标签页面中可使用多次。在IE9中,需要把这些元素转换为块级元素。
HTML5新增多媒体标签。音频:<audio>  和  视频:<video>
使用它们可以很方便的在页面中嵌入音频和视频,而不再去使用flash和其他浏览器插件。
视频:<video>,尽量使用mp4格式。
语法: <video src=”文件地址” controls=”controls”></video>
  音频:<audio>,尽量使用mp3格式。
语法: <audio src=”文件地址” controls=”controls”></audio>
HTML5新增的input表单类型。
属性值说明
Type=”email”限制用户输入必须为email类型
Type=”url”限制用户输入必须为url类型
Type=”date”限制用户输入必须为日期类型
Type=”time”限制用户输入必须为时间类型
Type=”month”限制用户输入必须为月类型
Type=”week”限制用户输入必须为周类型
Type=”number”限制用户输入必须为数字类型
Type=”tel”手机号码
Type=”search”搜索框
Type=”color”生成一个颜色选择表单

重点记住:number,tel,search

HTML5新增的input表单属性。

属性说明
requiredrequired表单拥有该属性表示其内容不能为空,必填
placeholder提示文本表单的提示信息,存在默认值将不显示
autofocusautofocus自动聚焦属性,页面加载完成自动聚焦到指定表单
autocompleteOff/on当用户在字段开始键入时,浏览器基于之前键入的值,应该显示出在字段中填写的选项。默认已经打开,on打开,off关闭,需要放在表单内,同时加上name属性,同时成功提交。
multiplemultiple可以多选文件提交
可以通过以下设置方式修改placeholder里面的字体颜色。
Input::placeholder { color: red; }
CSS3新增特性,新增选择器,盒子模型,及其他特性。
CSS3新增选择器有,属性选择器,结构伪类选择器,伪元素选择器。
CSS3盒子模型,通过box-sizing来指定盒子模型,有2个值,content-box,border-box
1.box-sizing: content-box 盒子大小为width+padding+border(以前默认的)
2.box-sizing: border-box盒子大小为width
如果盒子模型改为了box-sizing: border-box,
那padding和border就不会撑大盒子了(前提padding和border不会超过width宽度)
CSS3其他特性,图片变模糊,CSS3滤镜filter:将模糊或颜色偏移等图形效果应用于元素。
语法:filter: 函数(); 例如:filter: blur(5px); blur模糊处理,数值越大越模糊。
服务器(主机),是提供计算服务的设备,它也是一台计算机。
在网络环境下,根据服务器提供的服务类型不同,服务器可分为,
文件服务器,数据库服务器,应用程序服务器,web服务器等。  
什么是web服务器?  
web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,
可以向浏览器等web客户端提供文档,也可以放置网站文件,让全世界浏览,也可放置数据文件,让全世界下载。
Web 服务器在网络中所在位置不同,可分为本地服务器和远程服务器。
把自己电脑设为服务器就是本地服务器。这样同一个局域网就可以访问了。
在网络中的一台电脑别人的就是远程服务器。要在互联网中访问。
本地服务器主要在局域网中访问。
远程服务器是通常是别的公司为我们提供的一台电脑(主机),
我们只要把网站项目上传到这台电脑上,任何人都可以利用域名访问我们网站了。
将自己的网站上传到远程服务器。注意:一般稳定的服务器都是需要收费的。如,阿里云。
推荐个免费的远程服务器(免费空间),http://free.3v.do/
1.去免费空间网站注册账号。
2.记录下主机名,用户名,密码,域名
3.利用cutftp软件上传网站到远程服务器
4.在浏览器中输入域名,就可以访问了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值