本姑凉已掌握的css基础整理
层叠样式表,简称为样式表,全称是Cascading Style Sheets
插入到HTML文件头部
注意:内部样式表必须定义在
之间,页面所有样式都可以写在
之间
link
链接到HTML文件头部*link:
<link rel='stylesheet' href='样式表路径及全称' type='text/css' />
注意:
rel=‘stylesheet’ 指这个 link 和其href 之间的关联样式 为 样式表文件
type=‘text/css’ 指文件类型是 样式表文件
@import:
<style type='text/css'>
@import url('样式表路径及全称');
</style>
link和import引入的区别
- 老祖宗的差别,link属于xhtml标签,@import完全是css提供的一种方式,只能加载css,link标签除了能加载css还可以做很多其他的事情,比如定义RSS、定义rel连接属性等
- 加载顺序的差别,当一个页面被加载的时候,link引用的css会同时被加载,而@import引用的css会等到页面被全部下载完再被加载,所以有时候@import加载css的页面时开始会没有样式
- 兼容性的差别,@import是css2.1提出来的,所以老浏览器不支持,@import只在IE5以上的才能识别,而link没有此问题
- 使用dom控制样式时的差别:当使用JavaScript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。
语法:
<标签 style="属性:属性值; 属性:属性值"></标签>
例如:
<div style="width:599px; height:208px; background:red"></div>
样式表的作用域
行内样式的作用域是当前标签,
内部样式的作用域是当前文件,
外部样式表的作用域是所有关联的所有文件。
内嵌样式表的优先级别最高。内部样式表和外部样式表的优先级,跟他们的先后顺序有关,谁在后面谁优先。
CSS样式由两部分组成,分别是选择符
和声明
。
声明由属性和属性值组成
,所以css语法 :选择符{属性:属性值;}
选择符表示要定义样式的对象,可以是元素本身,也可以是一类元素或者制定名称的元素。大概有十种左右
1. 类型选择符
语法:标签名称 {
属性:属性值;}
用法:CSS:p{
color:red}
说明:使用类型选择符统一页面中某个元素的显示样式时,使用类型选择符
2. Id选择符
语法:#id名 {
属性:属性值;}
用法: CSS: #top{
font-size:12px;color:blue}
HTML: <div id='top'></div>
说明:Id选择符可对元素进行一个ID名称的指派。id的基本作用是对每一个页面中的唯一出现的元素进行样式定义。
3. 类(class)选择符
语法:.类(class)名 {
属性:属性值;}
用法:CSS: .txt{
font-size:12px;color:blue;background:red}
HTML:<div class='txt'>111</div>
<div> 222</div>
<p class='txt'>333</p>
4. 通配符
语法:* {
属性:属性值;}
说明:通配选择符的写法是“*”,其含义就是所有元素。
用法:常用来重置样式。
*{
margin:0; padding:0} //取消外边界和内填充,css文件先写这个
Margin:0 auto; //使元素居中(谁居中给谁加)
5. 群组选择符
语法:选择符1,选择符2,选择符3… {
属性:属性值;}
说明:对一组元素进行相同的样式指定,
用法:CSS:h1,h2,h3,p{
font-size:12px;color:blue;}
6. 包含选择符
语法:父元素 子元素 …… {
属性:属性值;}
说明:包含选择符指选择符组合中前一标签包含后一个标签,之间用空格空开。
利用包含选择符可以减少使用class及id的设置,并且直接对所需要设置的元素进行了样式设置。
7. 子选择符
语法:父元素>子元素 {
属性:属性值;}
说明:不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素
用法:
CSS: <style type="text/css">
div span{
color:#C3F;}
div>span{
color:green;}
</style>
HTML: <div>
<p>zhe
<span>li</span></p>
<span>shi</span>
</div>
8. 伪类选择器(伪类选择符)
语法: a:link {
属性:属性值;}超链接的初始状态;
a:visited {
属性:属性值;}超链接被访问后的状态;
a:hover {
属性:属性值;}鼠标划过超链接时的状态;
a:active {
属性:属性值;}即鼠标按下时超链接的状态;
说明:
1)当这4个超链接伪类选择符联合使用时,应注意他们的顺序,
正常顺序为:`lvha`:a:link,a:visited,a:hover,a:active, 错误的顺序有时会使超链接的样式有些部分失效;
2)为了简化代码,可以把伪类选择符中相同的声明提出来放在a选择符中;
常用:表示超链接的三种状态都相同,只有鼠标划过变颜色。
a{
color:red;}
a:hover{
color:green;}
9. 注释
html <!--注释内容-->
css /*注释内容*/
10.伪元素选择符 见文末
CSS组成:选择符+声明(属性+属性值),选择符上面已经介绍过了,下面看看属性吧
属性:
属性是指定选择符所具有的属性,它是css的核心,css2共有150多个属性属性值:
属性值包括法定属性值(颜色英语)及常见的数值加单位,如25px,或颜色值等。
声明语句:
声明语句必须要包含在{ }号之中;
如果一个属性有多个值,则每个属性值之间用空格分隔开。
当有多个属性时,用“;”进行区分;
在书写属性时属性之间使用空格、换行等,并不影响属性的显示;
1. font-size:
设置字体大小: 网页的字体大小默认为16px,即 1em
默认情况:1em=16px,0.75em=12px;
单位还可以是pt,9pt=12px; 常用单位是px
例:body{
font-size:12px;}
//使用绝对大小关键字
// xx-small=9px x-small=10px small=13px medium=16px large=18px x-large=24px xx-large=32px
2. font-style:设置字体正斜风格:设置字体正常/斜体语法: font-style:normal/italic/oblique
3. font-weight:设置字体加粗:设置字体正常/加粗语法: font-weight:normal/100-900/bold/bolder(不加单位)
4. font-family:设置字体样式名称:例如: .nav{
font-family: "幼圆" , "微软雅黑" , "黑体" ;}
1、当你的字体为汉字时,需加双引号。
2、当你的字体为一个单词组成时,不需要加双引号。
3、当你的字体为多个英文单词组成时,需要加双引号。
4、标点符号必须为英文状态。
5、当一段代码已经使用过双(单)引号之后,里面只能使用单(双)引号
6. text-align:设置水平对齐: 语法:text-align:left/right/center/justify
7. line-height:设置行高、设定行距。值为数值或倍数。文字一定会出现行高的(值)最中间
8. 单行文本水平垂直居中:text-align:center;line-height:(容器(父元素)高度)行高=容器高度
9. vertical-align:设置垂直对齐: vertical-align:top/bottom/middle; 只针对内联块元素有用
10. text-decoration:设置文本划线。值有:none/underline/overline/line-through
// none:没有修饰 underline:添加下划线 overline:添加上划线 line-through:添加删除线
11. text-indent:设置文本缩进。值为数值,常用单位有px
// 1)text-indent可以取负值;2)text-indent属性只对第一行起作用。
12. letter-spacing:设置文本字间距,控制英文字母或汉字的字距。
13. word-spacing:控制英文单词词距
14. text-transform 大小写切换 none 默认。定义带有小写字母和大写字母的标准的文本。
15. capitalize 文本中的每个单词以大写字母开头
16. uppercase 定义仅有大写字母 lowercase 定义仅有小写字母
17. font-variant:normal/small-caps/inherit 小型大写字母 规定从父元素继承 font-variant 属性的值
文字属性的缩写
用法:font:weight style size/ line-height family; //粗斜大高体
注意: 文字缩写属性必须要在font-size和font-family同时存在时才会生效
其中font-weight 和font-style没有会使用缺省值。
font-size和line-height必须以"/"(反斜杠)连接。
文字属性的简写必须按照此顺序。粗斜大高体
文本颜色
用法:`color : 颜色值` ; (没有font)
用十六进制表示颜色值:
颜色值的缩写:
当表示三原色的三组数字同时相同时,可以缩写为三位;
当用十六进制表示颜色值时,需要在颜色值前加“#”:#ff0000/#f00
宽度属性(width): 值为数值,单位为px/%,宽度不写默认为100%;
高度属性(height): 值为数值,单位为px/%,高度不写就没有高度,其高度是内容撑出来的高度
》如果继承的是body和html, 需要先写上:html,body{
height:100%;}
定义列表符号样式:
1)list-style-type:disc(实心圆)/circle(空心圆)/square(实心方块 )none(去掉列表符号);
2)使用图片作为列表符号:list-style:url('../img/123.jpg');
3)定义列表符号位置:list-style-position:outside/inside;
》简写: list-style:none;
为元素设定背景色:background-color
为元素设定背景图:background-image
写法:.nav{
background-image:url(背景图片的地址及全称)}
背景图片的显示原则
1)容器尺寸等于图片尺寸,背景图片正好显示在容器中;
2)容器尺寸大于图片尺寸,背景图片将默认平铺,直至铺满元素;
3)容器尺寸小于图片尺寸,只显示容器/元素/范围以内的背景图。
1.背景重复属性 background-repeat 和背景图搭配使用,设置背景图是否平铺
值有:repeat/repeat-x/repeat-y/no-repeat
2.背景定位属性 :background-position 和背景图搭配使用,设定背景图片显示的位置
通过方向或者数值来设置: Left top ; 0px 0px
》注意事项: 第一个值是水平位置,第二个值是垂直位置,默认值是左上角 0 0。(50% 50%中心位置)
如果仅规定了一个值,另一个值将是50%。 如果您仅规定了一个关键词,那么第二个值将是"center"。
3.背景附着属性 :background-attachment 和背景图搭配使用,设定图片是否跟随内容滚动
值:scroll/fixed
4.背景简写属性 background: 背景属性的综合属性
语法:background:背景颜色 背景图像 背景位置 背景重复 背景附着 (空格分开)
例如:background:#f00 url(img/tu.jpg) right no-repeat fixed;
浮动的框可以向左或向右移动,语法:float:none/left/right 全部浮动会在一行 只有一个浮动就会重叠
规定元素的哪一侧不允许其他浮动元素,语法: clear: left/right/both/none
none:默认值,允许浮动元素出现在两侧
left:在左侧不允许浮动元素
right:在右侧不允许浮动元素。(clear和float浮动方向保持一致 才生效)
both:在左右两侧均不允许浮动元素。
父元素不写高度时,子元素写了浮动后,父元素会发生高度塌陷(浮动元素父元素高度自适应)
hack1:给父元素添加声明overflow:hidden;(原因 bfc)
hack2:在浮动元素下方添加空div,并给该元素添加声明:clear:both;height:0;overflow:hidden;
hack3:万能清除浮动法 选择符 :after{content:“.”;display:block; clear:both; height:0; overflow:hidden; visibility:hidden ;}
margin:类似 快递和快递之间的距离
border:类似 快递盒
padding:类似 填充物
content:类似 买的东西
内间距\内补丁、内边距
margin
设定页面中一个元素所占空间的边缘(边框)到相邻元素边框之间的距离。
margin
属性值的4种方式:
padding
1.设定元素内容到元素的边缘(边框) 之间的距离
2.设定子元素与父元素的位置关系
说明:
padding是添加在原有的大小之上的,若想保持元素大小不变,需从元素的原有大小上减去后添加的。
padding
属性值的4种方式:
border
边框属性 border
语法:border : 边框宽度 边框风格 边框颜色
例如:border : 5px solid #f00; border : solid 1px yellow;
边框风格 border-style : 风格不写,整个边框不显示。别的不写,会默认缺省值。
值有 : none(无)/solid(实线)/dotted(点划线)/dashed(虚线)/ double双线
边框宽度 border-width : 设定边框宽度,数值,单位为px 边框颜色 border-color : 设定边框色
边框类型:groove3D凹槽边框、ridge3D垄状边框、inset outset3D边框(都取决于边框颜色)
//margin-top的三种解决办法
1.给父元素添加 overflow:hidden
2.给父元素添加盒模型相关属性,比如 border:solid 1px
3.给其中一个元素浮动 float:left
浏览器窗口
是所有元素的根元素
,也就是说html是最大的盒子
,也有浏览器把body
看作是最大的盒子
。 .box{
width:200px;
height:200px;
padding:20px;
border:solid 1px;
margin:20px;
}
/**占空间
*宽=width+左右padding+左右border+左右margin
*高=height+上下padding+上下border+上下margin
* 200+20*2+1*2+20*2=282 真正计算的时候是没有margin的
*/
4位的数字来表示权重,权重的表达方式:如0,0,0,0
选择符 | 权重 | 选择符 | 权重 |
---|---|---|---|
类型选择符 | 0001 | 类(CLASS)选择符 | 0010 |
ID选择符 | 0100 | 子选择符(E>F) | 0000 |
属性选择符 | 0010 | 伪类选择符 | 0010 |
伪元素选择符 | 0001 | 包含选择符 | 包含的选择符权重值之和 |
内联样式 | 1000 | 继承的样式 | 0000 |
!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
!important 作用是提高指定CSS样式规则的应用优先权
- 层叠与权重的关系:
- 层叠是css的一个特性,如果两个相同的属性作用于同一标签,它们会发生层叠;
如果多个复合选择器,同时作用于我们的同一标签,优先级就不好计算了,就要计算权重,通过比较权重,来先出优先级最高的选择器。
visible:默认值,内容不会被修剪,会呈现在元素框之外;
hidden:内容会被修剪,并且其余内容是不可见的;
scroll:内容会被修剪,但是浏览器会显示滚动条,以便查看其余的内容;
auto:如果内容被修剪,则浏览器会显示滚动条,以便查看其他的内容;
Inherit:规定应该从父元素继承;
overflow 属性值(ie浏览器不支持此属性值).
该属性用来设置如何处理元素内的空白;
normal:默认值,空白会被浏览器忽略,
pre:空白会被浏览器保留,其行为方式类似HTML中的pre标签;
pre-wrap:保留空白符序列和换行符,但是正常的进行换行(碰到边缘);
pre-line:合并空隔符,但是保留换行符;
nowrap:文本不会换行,文本会在同一行上继续,直到遇到<br/>标签为止;
inherit:规定应该从父元素继承White-space属性的值;(ie浏览器不支持此属性值)
clip:不显示省略号(...),而是简单的裁切;
ellipsis:当对象内文本溢出时,显示省略标记;
text-overflow属性仅是...,当文本溢出时是否显示省略标记,并不具备其它的样式属性定义。
display:block
再规定:1.容器宽度: width:value
2.强制文本在一行内显示:white-space:nowrap
3.溢出内容为隐藏: overflow:hidden
4.溢出文本显示省略号:text-overflow:ellipsis
根据css显示分类,HTML元素被分为两种类型 : 块状元素,内联元素。
1.默认独占一行
2.没有宽度时,默认撑满一排(块状元素默认宽度为100%)
3.可以定义自己的宽度和高度
4.常见的块状元素有:div ul li h1-h6 p ol dl form table
1.多个内联元素可以同一行显示
2.高和宽由内容撑开
3.写不上宽高
4.不支持上下的margin 不支持margin 可以用行高
5.常见的内联元素有:a br strong em span 图片和表单控件
1.内联块元素、行内块元素img, input等。
2.多个元素可以在同一行显示,可以设置width/height属性的这类元素
3.只有这一个元素类型支持vertical-align属性
4.内联块元素他们区别一般inline元素:
常见的img、input、select、textarea(多行文本域)、button等有内在尺寸。
1.需要根据上下文关系确定该元素是块元素或者内联元素
2.直接写上是没有任何作用的,所显示的内容需要浏览器根据元素的属性去判断:(比如src type)
3.常见的元素:img input textarea audio video
display
盒子模型可通过display属性来改变默认的显示类型
display
:block/inline/inline-block/none/list-item/table-header-group/table-footer-group
…
作用:该属性设置或检索对象元素应该生成的盒模型的类型。
各属性值的作用
1)Block 块状显示:使内联元素具备"块属性标签"的特性
2)inline 内联显示:使行块属性标签具备"内联元素"的特性
3)Inline-block 行内块元素显示:元素的内容"以块状显示,并且与行内的其他元素显示在同一行", 支持宽高,
没有宽度的时候由内容撑开宽度, 只有这一个元素类型"支持vertical-align属性(img,input)"
4)none: 此元素不会被显示
5)list-item: 将元素转换成列表, li的默认display类型
6)当"元素设置了float"属性后,就相当于给该元素加了"display:block"属性,且宽度为内容撑出来的宽度。
opacity:value
(value的取值范围0-1,0.1,0.2,0.3-----0.9),缓慢出现缓慢消失必须用这个
visibility:hidden/visible 隐藏/可见
visibility:hidden 和 display:none 以及 opacity的****区别
元素消失,不占位置 display:none
元素消失,占位置 visibility:hidden opacity:0
元素显示 display:block visibility:visible opacity:1
收集了3种banner扩展方法
NO.1
HTML:
<div>
<img src="../img/banner.jpg" alt="banner" title="banner" />
</div>
<div class="partner"></div>
CSS:
.banner{
height:457px;
background:pink;
}
.banner img{
margin-left:-147px;
}
NO2.
HTML:
<div class="wrapbanner">
<div class="banner">
<img src="../img/banner.jpg" alt="banner" title="banner" />
</div>
</div>
CSS:
.wrapbanner{
height:457px;
background:pink;
}
NO3.
HTML:
<div class="banner" style="widt:100%;height:457px" >
<img src="../img/banner.jpg" alt="banner" title="banner" />
</div>
1. 水平居中 text-align:center
2. 垂直居中
(1)写一个空标签span当做参照物
(2)span的宽度为0,高度100%,转成inline-block类型
(3)span写上vertical-align:middle以中线对齐
(4)img图片写上vertical-align:middle 以中线对齐
1.水平居中 margin:0 auto
2.水平垂直居中
// 四种方法,前两种不用知道宽高,后两种需要知道宽高
position
语法:position:static/relative/absolute/fixed/sticky/unset/initial/inherit
检索对象的定位方式
取值:
1、static:默认值,无特殊定位;
2、relative:相对定位 `right:`; `top:`; `left:`; `bottom:`;
// 1.占位置 2.根据原来的位置进行移动 相对自己原来的位置偏移
3、absolute:绝对定位,将对象从文档流中拖离出来,使用`left/right/top/bottom`等属性相对其最接近的一个
并有定位设置的父元素进行绝对定位;如果不存在这样的父对象,则依据html(根元素),
// 1.脱离文档流 2.不占位置 3.根据父元素(参考物)进行位置移动而其层叠通过z-index属性定义;
4、fixed:固定定位
5、sticky(粘性定位)
(1)在sticky元素到达 距离相对定位的元素顶部50px的位置时固定,不再向上移动。
(2)让sticky属性生效的条件有以下两点:1.一个是元素自身在文档流中的位置 2.另一个是该元素的父容器的边缘
6、Inherit: 继承
initial 关键字用于设置 CSS 属性为它的默认值,可作用于任何 CSS 样式。(IE 不支持该关键字)
7、unset:unset 关键字我们可以简单理解为不设置。
// 其实,它是关键字 initial 和 inherit 的组合。
(1)如果该属性是默认继承属性,该值等同于 inherit
(2)如果该属性是非继承属性,该值等同于 initial
这里罗列一下默认为inherited:Yes的属性
`包含块是`绝对定位的`基础`,包含块就是为绝对定位元素提供坐标,偏移和显示范围的`参照物`;
1、父元素上面`没有`定位属性,根据html进行位置移动
2、父元素上`有`定位属性,找最近的一个含有定位属性的父元素进行位置的移动 、
`定义`元素为`包含块`: `给绝对定位元素的父元素`添加声明`position:relative`;
如果我们的父元素设置了`position:absolute`;那么子元素也会相对父元素来定义自己的位置。
z-index : auto | number检索或设置对象的层叠顺序。
auto: 默认值,遵从其父对象
number: 无单位的整数值,可为负数
此属性仅仅作用于 position 属性值为 relative 或 absolute,fixed 的对象。
定义:在同一页面内的不同位置进行跳转。
命名锚点链接的应用:
1)给元素定义命名锚记名 语法:<标签 id="命名锚记名"> 标签>
2)命名锚记连接 语法:
扩展
flash
1): after 与content属性一起使用,定义在对象后的内容
div:after{
content:url(logo.jpg);}
div:after{
content:"文本内容";}
2): before 与content属性一起使用,定义在对象前的内容。
如 div:before{
content:"在其前放内容";}
3): first-letter 定义对象内第一个字符的样式。
4): first-line 定义对象内第一行的样式。
说明: *(该伪元素只能用于块级元素。) *ie6以下版本浏览器不支持伪对象选择符。