css
内部样式
语法:<style type="text/css"></style>
*方法一:外部样式表的创建:
<link rel="stylesheet" type="text/css" href="目标文件的路径及文件名全称" />
*方法二:外部样式表的导入
<style type="text/css">
@import url(目标文件的路径及文件名全称);
</style>
四、两种引入外部样式表link和import之间的区别
差别1:本质的差别:link属于XHTML标签,而@import完全是CSS提供的一种方式。
差别2:加载顺序的差别:当一个页面被加载的时候(就是被浏览者浏览的时候),link引用的CSS会同时被加载,而@import引用的CSS会等到页面全部被下载完再被加载。所以有时候浏览@import加载CSS的页面时开始会没有样式(就是闪烁)。
差别3:兼容性的差别:@import是CSS2.1提出的,所以老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。
差别4:使用dom(document object model文档对象模型 )控制样式时的差别:当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的.
六、CSS选择符(选择器)
CSS选择符包括4大类:类型选择符、id选择符、class选择符(类选择符)、特殊选择符;
类型选择符,id选择符,class选择符,通配符,群组选择符,包含选择符,伪类选择符(伪类选择符CSS中已经定义好的选择器,不能随便取名),伪元素选择符(设置在对象后发生的内容。用来和content属性一起使用 )
1) 元素选择符/类型选择符(element选择器 )
语法:元素名称{属性:属性值;}
2) id选择器
语法:#id名{属性:属性值;}
B)id选择符的语法格式是“#”加上自定义的id名
C) 起名时要取英文名,不能用关键字:(所有的标记和属性都是关键字)
D)一个id名称只能对应文档中一个具体的元素对象,因为id只能定义页面中某一个唯一的元素对象。
E) 最大的用处:创建网页的外围结构。
3)class选择器
语法:.class名{属性:属性值;}
用法:class选择符更适合定义一类样式;
4)*通配符
语法:*{属性:属性值;}
说明:通配选择符的写法是“*”,其含义就是所有元素。
用法:常用来重置样式。
5)群组选择器
语法:选择符1,选择符2,选择符3{属性:属性值;}
6) 包含选择器
语法:选择符1 选择符2{属性:属性值;}
7) 伪类选择器(伪类选择符)
语法 :
:link{属性:属性值;}超链接的初始状态;
:visited{属性:属性值;}超链接被访问后的状态;
:hover{属性:属性值;}鼠标悬停,即鼠标划过超链接时的状态;
:active{属性:属性值;}超链接被激活时的状态,即鼠标按下时超链接的状态;
要让他们遵守一个爱恨原则LoVe/HAte,也就是Link--visited--hover--active。
说明:
A)当这4个超链接伪类选择符联合使用时,应注意他们的顺序,正常顺序为:
a:link,a:visited,a:hover,a:active,错误的顺序有时会使超链接的样式失效;
B)为了简化代码,可以把伪类选择符中相同的声明提出来放在a选择符中;
例如:a{color:red;} a:hover{color:green;} 表示超链接的三种状态都相同,只有鼠标划过变颜色。
七、CSS选择符的权重
css中用四位数字表示权重,权重的表达方式如:0,0,0,0
类型选择符的权重为0001
class选择符的权重为0010
id选择符的权重为0100
子选择符的权重为0000
属性选择符的权重为0010
伪类选择符的权重为0010
伪元素选择符的权重为0001
包含选择符的权重:为包含选择符的权中之和
内联样式的权重为1000
继承样式的权重为0000
.demo的权重是10
* 相同权重的选择符,样式遵循就近原则:哪个选择符最后定义,就采用哪个选择符样式。 (注意:是css样式中定义该选择符的先后,而不是html中使用先后)
八、浮动属性的简单应用
语法:float:none/left/right;
left:元素活动浮动在文本左面
right:元素浮动在右面
none:默认值,不浮动。
1、文字大小{font-size:value;}
b、单位还可以是pt; 9pt=12px;
c、为了减小系统的字体显示差异,IE、Netscape Mozilla的浏览器制作商于1999年召开会议,共同确定16px/ppi为标准字体大小,默认值即1em,默认情况下,1em=16px, 0.75em=12px;
d、使用绝对大小关键字
xx-small =9px
x-small =11px
small =13px
medium =16px
large =19px
x-large =23px
xx-large =27px
2、文本颜色:{color:#colorValue;}
3、文本字体:{font-family:字体;}
Windows中文版本操作系统下,中文默认字体为宋体或者新宋体,英文字体默认为Arial.
当字体是中文字体时,需加双引号;
当英文字体中有空格时,需加双引号如(“Times New Roman”)
当英文字体只有一个单词组成是不加双引号;如:(Arial);
设置多个字体的语法:{font-family:字体1,字体2,字体3;}
注:当同时设置中英文字体的时候,中文字体要写在英文字体之后;
说明:浏览器首先会寻找字体1、如存在就使用改字体来显示内容,如在字体1不存在的情况下,则会寻找字体2,如字体2也不存在,按字体3显示内容,如果字体3 也不存在;则按系统默认字体显示;
4、加粗:{font-weight:bolder(更粗的)/bold(加粗)/normal(常规)/100—900;}
说明:在css规范中,把字体的粗细分为9个等级,分别为100——900,其中100对应最轻的字体变形,
而900对应最重的字体变形,
一般400=normal,700=bold。
100-500 常规显示
600-900 加粗显示
5、倾斜:font-style:italic(倾斜度小)/oblique(倾斜度大)/normal(取消倾斜,常规显示);
6、设置小型的大写字母 {font-variant:normal/ small-caps ;}
取值为:normal(正常的字体)
small-caps(小型的大写字母字体)
说明: 对小写英文内容起作用。
7、首行缩进:{text-indent:Value;}
说明:(1)text-indent可以取负值;
(2)text-indent属性只对第一行起作用。
8、水平对齐方式{text-align:left / right / center / justify;}
9、垂直对齐方式{vertical-align:top/bottom/middle;}上 下 居中
10、行高{line-height:normal/value;}
说明:
(1)当单行文本行高等于容器高时,可实现单行文本在容器中垂直中齐效果;
(2)当单行文本的行高小于容器高时,可实现单行文本在容器中垂直中齐以上任意位置定位;
(3)当单行文本的行高大于容器高时,可实现单行文本在容器中垂直以下任意位置定位。
倍行高:{line-height:2;} 2倍 ,{line-height:1.5em;}1.5倍;注:当使用倍行高时,单位不加PX
11、复合式写法:{font:style variant weight size/line-height family;}
style variant weight size/ line-height family
倾斜 小型大写字母 加粗 字号 / 行高 字体
说明:按以上顺序;size 、line-height和family固定不可和其他属性位置互换;
注:当字号大小,字体和行高缩写时,字号和行高要用斜杠合并成一个属性值,且同时有字号大小和字体时,才能缩写。
font:字号/行高 字体
12、控制英文大小写 {text-transform:none(默认值)/capitalize(每个单词首字母大写)/uppercase (都为大写字母) /lowercase ( 都为小写字母 ) }
13、文本修饰:
{text-decoration: ;}
说明:
none:没有修饰(取消修饰)
underline:添加下划线
overline:添加上划线
line-through:添加删除线
blink:闪烁(高版本浏览器不支持blink属性)
underline overline line-through这三个属性值是可以同时存在的,用空格分隔;
14、字间距{letter-spacing:Value;}控制字间距;
15、词间距{word-spacing:Value;}控制英文单词词间距
16、文本流控制{layout-flow:horizontal/vertical-ideographic;}(只支持IE浏览器)
说明:
(1)horizontal 自左向右;
(2)vertical-ideographic;自上而下;
B、关于列表的css声明
1、定义列表符号样式:
list-style-type:disc(实心圆)/circle(空心圆)/square(实心方块)/none(去掉列表符号);
2、使用图片作为列表符号:
list-style-image:url(所使用图片的路径及全称);
3、定义列表符号的位置:
list-style-position:outside(外边)/inside(里边);
关于列表的属性语法(缩写)list-style:属性值1 属性值2 属性值3;
例:{list-style:url(images/aa.jpg) inside;}
list-style:none; 取消列表符号
C、关于背景的css声明
1、背景颜色
background-color:#colorValue;
2、背景图片的设置
语法:background-image:url(背景图片的路径及全称);
说明:
(1)网页上有两种图片形式:插入图片、背景图;插入图片为网页内容,背景图为网页的表现;默认情况下,背景图上面可以显示其他内容和图片,而插入图片上面是不能显示其他内容和图片的。
(2)背景图片的显示方式
a、背景图片大小小于元素大小,默认平铺;
b、背景图片大小等于元素大小,完全显示;
c、背景图片大小大于元素大小,只显示元素范围大小的背景图;
3、背景图平铺设置
语法:background-repeat:no-repeat(不平铺)/repeat(平铺)/repeat-x(横向平铺)/repeat-y(纵向平铺);
4、背景图片的位置
语法:background-position:right/left/center(水平方向上的对齐方式) top/center/bottom(垂直方向上的对齐方式) 或数值
5、 背景图的固定
语法:background-attachment:scroll(滚动)/fixed(固定);
背景属性的缩写语法:background:属性值1 属性值2 属性值3;
例:background:url(背景图片的路径及全称) no-repeat center top;
6、网页上常用的图片格式(压缩图片)
(1)jpg:有损压缩格式,靠损失图片本身的质量来减小图片体积,适用于颜色丰富的图像;
(2)gif:有损压缩格式,靠损失图片的色彩来减小图片体积,支持透明,支持动画,适用于颜色数量
少的图像;
(3)png:有损压缩格式,靠损失图片的色彩数量来减小图片的体积,支持透明,是fireworks的源文件格式,适用
于颜色数值少的图像(一般用于透明图
语法:float:none/left/right;
left:元素左浮动
right:元素右浮动
none:默认值,不浮动。
浮动的目的:就是让竖着的元素进行横向排列,也就是能让元素和元素并排显示
浮动的显示规则:浮动对象会像左或者右移动直到遇到边框(border)、填充值(padding)、外边界(margin)或者另一个块元素为止。
float:定义网页中其它文本如何环绕该元素显示
清除浮动语法:
clear : none | left | right | both
none:默认值。允许两边都可以有浮动对象
left:不允许左边有浮动对象
right : 不允许右边有浮动对象
both : 不允许有浮动对象
对于CSS的清除浮动(clear),一定要牢记:这个规则只能影响使用清除的元素本身,不能影响其他元素
清除浮动可以理解为打破横向排列。
有三种情况float:不生效
1)当宽+宽大于父级元素的宽时;
2)只给一个元素加了float时;
3)单词写错
盒模型
六、盒模型
盒模型概念:
盒模型是css布局的基石,它规定了网页元素如何显示以及元素间相互关系,css定义所有的元素都可以像盒子一样的外形和平面空间
,即包含内容区、填充区(padding)、边框(border)、边界(margin),这就是盒模型。
1、填充(padding):padding是指在内容与边框的空白区域,也称补白。
作用:
(1) 用来调整子元素在父元素的位置关系;
(2) 调整内容在容器中的关系;
注:padding写在父元素上
补充:1、padding属性处于内容与边框之间,我们可以利用该属性设置图片与边框间的空隙;
2、背景图不受padding值得影响;
2、边界:margin,在边框外边的空白区域,被称为边界。
margin:0 auto; 定义元素上下边界为0,且在浏览器中横向居中;
margin可以写负值
3、边框:border
作用:网页中很多修饰性的线条都是由边框来实现;
边框宽度:border-width:2px;
边框样式:border-style:solid(实线)/ dotted(点)/ dashed(虚线)/ double(双边线)/none(取消边框);
边框颜色:border-color:#ff0f0f;
border:1px solid #f00;
可单独设置一方向边框:
上边框 border-top:width style color;
左边框border-left:width style color;
右边框border-right:width style color;
下边框 border-bottom:width style color;
缩写(复合式写法):border:width style color;
补充:border:none; 取消边框
盒子实际占有宽度区域
宽 =左右margin + 左右border + 左右padding + width
盒子实际占有高度的区域
高 =上下margin + 上下border + 上下padding + height
一、文本溢出属性:
text-overflow:clip /ellipsis
取值:
clip:不显示省略标记(...),而是简单的裁切。
ellipsis:当对象内文本溢出时显示省略标记(...)
说明:
text-overflow属性仅是注解当文本溢出时是否显示省略标记。并不具备其它的样式属性定义。要实现溢出时产生省略号的效果还须定义:
1.容器宽度;width:value;
2.强制文本在一行内显示 , white-space:nowrap
3.溢出内容为隐藏, overflow:hidden
4.溢出文本显示省略号,text-overflow:ellipsis;
二、关于文本溢出:
1. 溢出属性:
overflow :visible/hidden/scroll/auto/inherit
值描述
visible
默认值。内容不会被修剪,会呈现在元素框之外。
hidden
内容会被修剪,并且其余内容是不可见的。
scroll
内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto
如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit
规定应该从父元素继承 overflow 属性的值。
overflow-x:hidden; 隐藏横向滚动条
overflow-y:hidden; 隐藏纵向滚动条
2.空余空间属性 (该属性用来设置如何处理元素内的空白;)
white-space:normal/pre/nowrap/pre-wrap /pre-line /inherit
normal:默认值,空白会被浏览器忽略,
nowrap:文本不会换行,文本会在同一行上继续,直到遇到标签<br />为止
pre:空白会被浏览器保留,其行为方式类似HTML中的pre标签;
pre-wrap:保留空白符序列,但是正常的进行换行;
pre-line:合并空白符序列,但是保留换行符;
inherit:规定应该从父元素继承White-space属性的值;(ie浏览器不支持此属性值)
1、块状元素:(block element)
2、内联元素:(inline element 称内嵌元素,行内元素,直进式元素等;)
4)内联元素也会遵循盒模型的规则,也可以定义padding、border、margin属性,但部分内联元素需要特殊处理后才能正确显示;
3、可变元素
4、元素转换
display:none/block/inline/inline-block/list-item/table/ table-cell/table-header-group/table-footer-group
none :此元素不会被显示(隐藏该元素)
block :此元素将显示为块状元素;(显示该元素)
inline :默认值,此元素会被显示为行内元素(内联元素);
inline-block:行内块元素
list-item:将元素转换为列表格式; li
1、大部分块元素的display属性的默认值为block,其中列表(li)的默认值为list-item;
2、大部分内联元素的display属性为inline,其中input和img等默认类型为inline-block;
*Html中的非置换元素与置换元素
大部分的内联元素的元素类型为inline,其中有类特殊的元素:如img|input|select|textarea|button等,他们被称为可置换元素(Replaced element)。他们区别一般inline元素
,这些元素拥有内在尺寸(intrinsic dimensions),他们可以设置width/height属性。他们的性质同设置了display:inline-block的元素一致。
补充:内联元素添加浮动后(float);自动转换成(行内)块元素;在没有设置宽高的前提下,块元素添加浮动后(float);体积与内容同宽;
visibility:inherit/visible/collapse/hidden;
设置或检索对象是否显示
取值:
a)inherit:默认值,继承父对象的特征;
b)visible:对象显示;
c)collapse:未支持,主要隐藏表格的行或列;能够被其他内容使用,对于表格外的其他对象不起作用,等于hidden;
d)hidden:对象隐藏。
display:none与visibility:hidden 的区别
display:none;元素内容及占有的位置全部隐藏,
visibility:hidden;元素内容隐藏,但位置保留。
*Html中的非置换元素与置换元素
其中有类特殊的元素:如img|input|select|textarea|button等,他们被称为可置换元素(Replaced element)。他们区别一般inline元素(相对而言,称non-replaced element)
是:这些元素拥有内在尺寸(intrinsic dimensions),他们可以设置width/height属性。他们的性质同设置了display:inline-block的元素一致。
或许有朋友对非置换元素(non-replaced element)有点疑惑,稍微帮助大家理解一下。非置换元素,W3C 中没有给出明确的定义,但我们从字面可以理解到,非置换元素对应着置换元素(replaced element),也就是说我们搞懂了置换元素的含义,就懂了非置换元素。置换元素,W3C中给出了定义:
“An element that is outside the scope of the CSS formatter, such as an image, embedded document, or applet”
从定义中我们可以理解到,置换元素(replaced element)主要是指 img, input, textarea, select, object 等这类默认就有 CSS 格式化外表范围的元素。进而可知,非置换元素(non-replaced element)就是除了 img, input, textarea, select, object 等置换元素以外的元素。
置换元素/替换元素
1.1. 一个 内容 不受CSS视觉格式化模型控制,CSS渲染模型并不考虑对此内容的渲染,且元素本身一般拥有固有尺寸(宽度,高度,宽高比)的元素,被称之为置换元素。
1.2. 替换元素就是浏览器根据元素的标签和属性,来决定元素的具体显示内容。
1.3. 例如浏览器会根据img标签的src属性的值来读取图片信息并显示出来,而如果查看(X)HTML代码,则看不到图片的实际内容;又例如根据input标签的type属性来决定是显示输入框,还是单选按钮等。
1.4. HTML中的img、input、textarea、select、object都是替换元素。这些元素往往没有实际的内容,即是一个空元素。
非置换元素/不可替换元素
2.1. HTML 的大多数元素是不可替换元素,即其内容直接表现给用户端(例如浏览器),如:
<!-- span是非置换元素 因此 hello word 被展示出来 而不是被替换成其他内容 --> <span>hello word</span>
行内级置换的宽度定义
若宽高的计算值都为 auto 且元素有固有宽度,则 width 的使用值为该固有宽度
典型的例子是:拥有默认宽高的 input 当宽度的计算值为auto时,则宽度使用值为其默认的固有宽度
若宽度的计算值为 auto 且元素有固有宽度,则 width 的使用值为该固有宽度
例子同上
若宽度的计算值为 auto 且高度有 非auto 的计算值,并且元素有固有宽高比,则 width 的使用值为 高度使用值 * 固有宽高比
典型的例子:img 当只定义了其高度值时,其宽度将会根据固有宽高比进行等比设置,这也是为什么img是行内元素,但可以设置宽高的原因
除此之外,当 width 的计算值为 auto 时,则宽度的使用值为 300px
典型的例子:比如iframe, canvas
行内级置换的高度定义
若宽高的计算值都为 auto 且元素有固有高度,则 height 的使用值为该固有高度;
若高度的计算值为 auto 且元素有固有高度,则 height 的使用值为该固有高度;
若高度的计算值为 auto 且宽度有 非auto 的计算值,并且元素有固有宽高比,则 height 的使用值为:宽度使用值 / 固有宽高比;
若高度的计算值为 auto 且上述条件完全不符,则 height 的使用值 不能大于150px,且宽度不能大于长方形高度的2倍
行内级非置换元素的宽度定义
宽度设置是无效的,如:
<!-- 设置宽度无效 ,span的宽度默认为其内容的宽度 --> <span>hello word</span>
行内级非置换元素的高度定义
高度设置无效,如:
<!-- 设置高度无效 ,span的高度默认为其内容的高度 --> <span>hello word</span>
position 定位属性,检索对象的定位方式;
一、语法:position:static (无特殊定位)/absolute(绝对定位)/relative(相对定位)/fixed(固定定位)/sticky: 粘性定/inherit继承父元素的属性
1、static:默认值,无特殊定位,对象遵循HTML原则;
2、absolute:绝对定位,将对象从文档流中拖出,使用left/right/top/bottom等属性相对其最接近的一个并有定位设置的父元素进行绝对定位;如果不存在这样的父
对象,则依据窗口对象定位,而其层叠通过z-index属性定义;
3、relative :相对定位,将依据right,top,left,bottom(相对定位)等属性在正常文档流中偏移位置;
4、fixed:(固定定位),相对浏览器的定位,是相对于浏览器窗口的指定坐标进行定位。此元素的位置可通过 "left"、"top"、"right" 以及"bottom" 属性来规定。不论窗口滚动与否,元素都会留在那个位置。
5、inherit:继承父元素的position属性,但需要注意的是IE8以及以前的版本都不支持inherit属性。
6、sticky: 粘性定位:设置了sticky的元素,在屏幕范围(viewport)时该元素的位置并不受到定位影响(设置是top、left等属性无效),当该元素的位置将要移出偏移范围时,定位又会变成fixed,根据设置的left、top等属性成固
定位置的效果。
可以知道sticky属性有以下几个特点:
该元素并不脱离文档流,仍然保留元素原本在文档流中的位置。
当元素在容器中被滚动超过指定的偏移值时,元素在容器内固定在指定位置。亦即如果你设置了top: 50px,那么在sticky元素到达距离相对定位的元素顶部50px的位置时固定,不再向上移动。
元素固定的相对偏移是相对于离它最近的具有滚动框的祖先元素,如果祖先元素都不可以滚动,那么是相对于viewport来计算元素的偏移量
二、包含块的概念及作用
原文:https://www.cnblogs.com/wangwenjie98/p/11597996.html