好吧,css如何下手还真有点迷茫。。。那我就从如何引入css说起吧!
css的引入方式
css:层叠样式表单有三种引入方式,分别是:
- 行间样式(优先级别是最高的,一般不建议这么使用)
- 内部引入(在header部分用下列代码引入)
<style type="text/css">...</style>
- 外部引入(在header部分用下列代码引入)
<link rel='stylesheet' type="text/css" href="css的路径"/>
各自优缺点、场景、优先级
- 行间样式—优点:优先级最高,不会被其他样式覆盖影响,缺点:不利于代码维护,没有行为样式内容分离、不可通用、影响阅读体验
- 外部引入—内容样式分离,利于样式复用,修改需要警慎,增加了一次请求
- 内部引用—优点:不利于复用,适用于单一页面
- @import url()—会发生一次请求,该方法不常用,了解就好,不建议使用
important的优先级别>行间样式的优先级别
!important 为某些样式设置最高权值
注释方法:
/…/
一、css样式
1、width、height
块级元素可以设置width、height,但是行级元素只可以设置width,不能直接设置height
2、background
- background-color:背景颜色
颜色值:
1、关键词:浏览器支持140种颜色、css合法17标准颜色:aqua fuchsia lime olive red white black gray maroon orange silver yellow blue green navy purple teal
2、16进制:
3、rgb:红绿蓝、0~255、黑~白
4、rgba:(IE8以下不支持)
5、hsl:(IE8以下不支持)色调、饱和度(0~100%)、亮度(0~100%)
6、hsla:(IE8以下不支持) - background-image:url():背景图片,该属性不会撑开容器
- background-position:背景图片位置
- background-size:背景图片的大小
- background-repeat:no-repeat/repeat-x/repeat-y/repeat;
background-position:0px 0px;
background-size:100px 100px;
background:red url() 0px 0px no-repeat;//复合写法
3、font
font-family:字体,如Tohoma,serif,sans-serif
font-size:字体大小,一般浏览器的默认字体大小是16px;
color:字体颜色
font-weight:加粗(bold/bolder/normal)
font-style:字体样式,如italic(斜体)、normal(默认样式)、oblique
text-decoration:line-throw(中划线)/underline(下划线,默认样式)/none(无)/overline(上划线)/blink/inherit(继承)
line-hight:基线到基线的距离
(补充行距:基线到下一行的顶线的距离)
这里字体颜色单位见上文2、background
font:font-weight,font-size/line-height,font-family;//复合写法
font:bold,14px/1.5,Tohoma,sans-serif;
这里字体:
按顺序查找字体,如果都没有,以缺字符代替,一般是小正方形。
加引号时保留空格字符。
为了防止不能阅读,以sans-serif或serif结尾。
4、列表的样式
list-style-type:序列号
5、表格的样式
待续
7、轮廓
待续
二、css定位
1、position
- 相对定位:relative
- 绝对定位:absolute
- 固定定位:fixed
具体的可以移步:http://wj1213180604.github.io/2015/11/26/float-position/
2、float
清除浮动等具体的可以移步:http://wj1213180604.github.io/2015/11/26/float-position/
三、css盒子模型
1、margin
- margin-top、margin-right、margin-bottom、margin-left是margin的四个属性值。
margin: top right bottom left;//复合写法,单位是px或者%
2、padding
- padding-top、padding-right、padding-bottom、padding-left是padding的四个属性值。
padding: top right bottom left;//复合写法,单位是px或者%
3、border
- border-color:默认与字体颜色一样
- border-width:不可以为负数,默认是3px
- border-style:
solid(实线)/dotted(点状线,IE6不兼容)/dashed(虚线)/double(双边线) - border-radius:圆角边,单位是px或者%
有属性border-right-width,可以以此类推
4、类选择器(.class)
5、分组选择器(,,,,,)
偏重于代码优化,减少css体积
6、通配选择器(*)—无兼容问题
态度:尽量不要用
7、伪类选择器—a链接的四种状态
:link、:hover、:active、:visited
遵循lovehate法则,顺序最好不要打乱
8、伪元素选择器(css3)::
继承:
待续
单位:
单位有
1、px
2、%(百分比,根据父级的width、height来确定自身的宽高)
3、em(倍数,根据父级的大小来确定自身的大小)
4、rem(倍数,根据html标签层级的大小来确定自身的大小,更加便捷计算和控制!其中字母r是指root,根)
5、视窗单位vh/vw(vh=viewport/100、vw=viewport/100)
BFC:
FC:Formatting Content.格式化上下文
BFC:Block Formatting Content.块级格式化上下文
IFC:Inline Formatting Content.行级格式化上下文
BFC的生成条件:(此处我也很迷糊!!!)
1、float值不为none
2、overflow值不为visible
3、display的值为inline-block、table-cell、table-caption
4、position的值是absolute、fixed
BFC的约束规则:
1、生成BFC元素的子元素会一个接一个的放置。垂直方向上他们的起点是一个包含块的顶部,两个相邻子元素之间的垂直距离取决于元素的margin特性。在BFC中相邻的块级元素外边距会折叠。
2、生成BFC元素的子元素中,每一个子元素做外边距与包含块的左边界相接触,(对于从右到左的格式化,右外边距接触右边界),即使浮动元素也是如此(尽管子元素的内容区域会由于浮动而压缩),除非这个子元素也创建了一个新的BFC(如它自身也是一个浮动元素)。
有道友对它做了分解,我们直接拿来:
1、内部的Box会在垂直方向上一个接一个的放置
2、垂直方向上的距离由margin决定。(完整的说法是:属于同一个BFC的两个相邻Box的margin会发生重叠,与方向无关。)
3、每个元素的左外边距与包含块的左边界相接触(从左向右),即使浮动元素也是如此。(这说明BFC中子元素不会超出他的包含块,而position为absolute的元素可以超出他的包含块边界)
4、BFC的区域不会与float的元素区域重叠
5、计算BFC的高度时,浮动子元素也参与计算
6、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面元素,反之亦然
在一个BFC容器里,里面任何一个子元素,不会对外部造成影响。
再次认识font
http://www.cnblogs.com/fsjohnhuang/p/4310533.html#a32
盒模型
标准盒模型

外盒模型
元素空间宽度 = content width + padding + border + margin的宽度
元素空间高度 = content width + padding + border + margin的高度
内盒模型
元素宽度 = content height + padding + border的宽度
元素高度 = content height + padding + border的高度
- IE盒模型 当IE6~8处于怪异模式下就会使用IE盒子模型,否则将使用W3C标准盒子模型。

外盒模型
元素空间宽度 = content width + margin的宽度
元素空间高度 = content height + margin的高度
内盒模型
元素宽度 = content width
元素高度 = content height
-box-sizing 启动IE盒子模型,IE8+,需要特定的环境
box-sizing有三个值,默认是content-box(表示元素使用W3C盒子模型),而border-box(表示元素使用IE盒子模型),inherit(从父元素上继承)
-float 浮动
具有包裹性 本意作用是做文字环绕 float布局只是歪打正着的产物
- 清除浮动
-使用带clear属性的空元素
-使用CSS的overflow属性 给浮动元素的容器添加overflow:hidden;该方法不够通用
或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。
在添加overflow属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。
-给浮动的元素的容器添加浮动
给浮动元素的容器也添加上浮动属性即可清除内部浮动,但是这样会使其整体浮动,影响布局,不推荐使用。
-使用邻接元素处理 给浮动元素后面的元素添加clear属性。
-使用CSS的:after伪元素 结合 zoom
结合 :after 伪元素(注意这不是伪类,而是伪元素,代表一个元素之后最近的元素)和 IEhack ,可以完美兼容当前主流的各大浏览器,这里的 IEhack 指的是触发 hasLayout。
给浮动元素的父级容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。
.clearfix:after{
content: ".";
display: block;
height: 0; <!--line-height:0-->
/* 隐藏这个after的 */
clear: both;
visibility: hidden;
}
.clearfix {
/* 触发 hasLayout */
zoom: 1;
}
老古董!!!
- IE hack 有IE就有hack hack主要是针对IE浏览器,解决兼容性
所有 IE{property:value\9;}
大于或等于 IE 8{property:value\0;}
小于或等于 IE 7{*property:value;}
.IE 8/9{property:value\0;}
.IE 9{property:value\9\0;}
.IE 7{+property:value;}
.IE 6{_property:value;}(经典的BUG:双倍margin—解决方法:zoom)
非 IE{property//:value;}
.box{
color:red;
*color:green;//<=IE7
_color:blue;//IE6
}
- zoom 定义缩放比例。不允许负值 有兼容问题 主要用于IE67浏览器 触发haslayout 达到清除浮动等功能
在现代浏览器作用是放大!
zoom:1
.box{
width:200px;
height:200px;
background:blue;
border:10px solid red;
padding:10px;
zoom:2;//1是原始比例,所有的包括宽高边框字体padding等都放大2倍
}
- 垂直居中
- 使用绝对定位垂直居中
兼容性最好 absolute结合margin 需要知道尺寸
http://www.cnblogs.com/dojo-lzz/p/4419596.html
-自动换行
word-wrap 是控制换行的
break-word 是将强制换行
word-break 表明是否断开单词换行 面对长度较长单词
break-all 允许断开单词换行
white-space
pre :空白会被浏览器保留。其行为方式类似 HTML 中的
标签
nowrap: 文本不会换行,文本会在在同一行上继续,直到遇到
标签为止
pre-wrap: 保留空白符序列,但是正常地进行换行
当文本溢出包含元素时发生的事情
- text-overflow: clip|ellipsis|string;
clip默认值 超出裁剪
ellipsis 超出显示…
-单行文本溢出显示省略号(…)
width:200px;//移动端可以不加单位
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap; //不换行
部分浏览器 需要带上width
-多行文本溢出显示省略号(…) 仅支持webkit内核浏览器 移动端(IE10以下不支持)
display: -webkit-box; //将对象作为弹性伸缩盒子模型显示
-webkit-box-orient: vertical; //伸缩盒对象的子元素的排列方式
-webkit-line-clamp: 3; //用来限制在一个块元素显示的文本的行数
overflow: hidden;
也可以利用 after
p{position: relative; line-height: 20px; max-height: 40px;overflow: hidden;}
p::after{content: "..."; position: absolute; bottom: 0; right: 0; padding-left: 40px;
-Opacity属性用来设置一个元素的透明度,取值范围是0~1之间,不可为负值。opacity取值为1是完全不透明,取值为0是完全透明。IE不能识别
opacity:0.5;
filter:alpha(opacity=50);/* IE 4+ */ ||
filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=50);
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; /*i e 8+*/
-Overflow
overflow属性有四个值:visible (默认),
hidden 将所有超出盒子的所有内容都给隐藏掉。
scroll 始终出现滚动条
auto 现代浏览器的默认属性 有超出内容 才有滚动条
overflow-x
overflow-y