css:用来控制网页数据的表现,可以使网页的表现与数据内容分离。
一、css的四种引入方式
1.内行式:是在标记style属性中设定css样式,(这种方式没有体现出css的优势,不推介使用)
2.切入式:将css样式集中写在网页的<head></head>标签对<style></style>标签对中。
格式如下:<head>
<style type="text/css">
此处写css样式
</style>
</head>
3.导入式:讲一个独立的.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文件,因此显示出来的网页从一开始就带样式效果的,它不会像导入式那样,这就是链接式的优点。
二、css的选择器(seceltor)
“选择器”指明了{}"样式"的作用对象,也就是“样式”作用于网页的哪些元素
1.基础选择器:
* : 通过元素选择器匹配任意元素
E: 标签选择器,匹配所有使用E标签的元素P
.info 和 E.info class 选择器,匹配所有class 属性中包含info的元素
#info 和 #Einfo id 选择器,匹配所有id属性等于 foote r的元素
2.组合选择器:
E,F 多元素选择器,同时匹配所有E元素和F元素,E和F之间用逗号分隔
EF 后代元素选择器,匹配所有属于E元素后代的F元素,E 和 F 之间用空格分隔
E>F 子元素选择器,匹配所有E元素的子元素F
E+F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F
注意嵌套规则:1.块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素
2.块级元素不能放在P里面
3.有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如:h1、h2、h3、h4、h5、h6、p、dt
4.li 内可以包含 div
5.块级元素与块级元素并列,内联元素与内联元素并列。
3.属性选择器:
E(att) 匹配所有具有att 属性的E元素,不考虑其它的值。(注意E 在此处可以省略,)
E(att=val) 匹配所有att属性等于“val”的E元素
E(att~=val) 匹配所有att属性具有多个空格分隔的值,其中一个值等于“val”E的元素
E(att |=val) 匹配所有att属性具有多个连字号分隔的值,其中一个值等于“val”E的元素,主要用于lang属性
E(attr^=val) 匹配属性值以指定值开头的每个元素
E(attr$=val) 匹配属性值以指定值结尾的每个元素
E(attr*=val) 匹配属性值中包含指定值的每个元素
P:before 在每个p元素的内容之前插入内容
P:after 在每个p元素的内容之后插入内容
4.伪类选择器:
伪类选择器:专用于控制链接的显示效果,伪类选择器
a:link(没有接触过链接),用于定义链接的常规状态
a:hover(鼠标放在连接时的状态),用于产生视觉效果
a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接
a.active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态
伪类选择器:伪类指的是标签的不同状态
三、css常用属性:
1.颜色属性:<div style="color:blueviolet"> pppppppp </div>
<div style="color:#ffee33"> pppppp </div>
<div style="color:rgb(255.0.0)"> ppppppp </div>
<div style="color:rgba(255.0.0.0.5)"> ppppp </div>
2.字体属性:font_size:20p X /50%/ larger
font_family:'Lucida Bright'
font_weight:lighter/blod/border/
<h1 style ="font_style:oblique">李</h1>
3.背景属性:background-color:cornflowerblue
background-image:url('1.jpg');
background-repeat:no-repeat;(repeat:平铺满)
background-position:right top(20px 20px);(横向:left center right 纵向:top center buttom)
注意:如果讲背景属性加在body上,要记得给body加上一个height,否则结果异常表,这是因为body为空,无法撑起背景图片,
另外,如果此时要设置一个width=100xp,也看不出效果,除非设置html
4.文本属性:font-size:10px
text-align:center;横向排列
line-height:200px 文本行高,通常讲,文本高度加上 文字上下的空白区域的高度的50%:基于字体大小的百分比
p
{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;
5.边框属性:
border-style:solid;
border-color:char treuse;
border-20px;
简写:border30px rebeccapurple solid;
6.列表属性:
ul,ol{list-style:decimal-leading-zero;
list-style:none;list-style:circle;
list-style:upper-alpha;
list-style:disc;}
7.dispaly属性:
none block inline
8.盒子模型:
padding:用于控制边框与内容之间的距离。
margin:用于控制元素与元素之间的距离;margin最基本的用图就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
内边距会影响盒子的大小,外边距不会影响盒子的大小,需要设置;分别通过设置padding、margin将小盒子移到大盒子中间。
注意:1.边框在默认情况下会定位于浏览器窗口的左上角,但并没有紧贴着浏览器的窗口的边框,这是因为body本身也是一个盒子(外层还有html),在默认情况下,body
距离html会有若干像素的margin,具体数值因各个浏览器不尽相同,所以,body中的盒子不会紧贴浏览器窗口的边框
2.margin collapse(边框塌陷或者边框重叠)
外边距的重叠只产生在普通流文档的上下外边距之间,这个规则看起来奇怪,但有其现实意义。当我们上下排列一系列规则的块级元素时,那么块元素之间由于外边
距重叠的存在,段落之间就不会产生双倍的距离。
9.float
div是块级元素,在页面中独占一行,自上而下排列,也就是流。(如果一行中显示多个div元素,浮动可以理解为让某个元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次)
float:left 左浮动,漂浮起来靠左排列
float:right 有浮动。漂浮起来靠右排列 (靠左、靠右是指页面的左右边缘)
假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后面(如果一行放不下两个元素,那么A元素会被挤到下一行);如果A元素的上一个元素是标准流中的元素,
那么A的相对垂直位置不会改变,也就是说A的顶部会跟上一个元素的底部对齐。
div顺序是HTML中div的顺序决定的。
靠近页面边缘的一端是前,远离页面边缘的一端是后。
元素浮动之前,也就是标准流中,是竖向排列的,而浮动以后可以理解为横向排列。(清除浮动可以理解为打破横向排列)
清除浮动的关键字是clear
语法:clear:none/left /night/both
取值:
none:默认值,允许两边都可以有浮动对象
left:不允许左边有浮动对象
right:不允许右边有浮动对象
both:不允许两边有浮动对象
对于css清除浮动,这个规则只能影响清除元素的本身,不能影响其它元素。
10.position
1.static,默认static:无特殊定位,对象遵循特殊文档流。(文档流就是文档的输出顺序,也就是常说的由左到右、由上到下输出形式,在网页中每个元素都是按照这个顺序进行和显示的
而float和position两个属性可以将元素从文档中脱离出来显示,默认值就是让元素继续按照文档流显示,不做任何改变)
top、left、bottom、right等属性不会被应用。
2.position:relative
relitive:对象遵循正常文档流,但将依据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可以,因为它原本所占的空间仍然占据文档流)