CSS基础

CSS基础
Tomcss基础1
层叠样式表,用来表现HTML等文件样式的计算机语言。
CSS版本
- CSS1: 1996年12月17日成为W3C推荐标准,该版本中提供了有关文字、颜色、位置和文本属性等基本信息。
- CSS2: 1998年5月,样式单得到了更多的充实。
- CSS3: 1999年开始制订,2001年5月23日W3C完成了CSS3的工作草案。各浏览器厂商对CSS3的支持也在不断的完善中。
HTML中使用CSS有三种方式:
- 标签中使用
style属性。行间样式也叫作内联样式。 - 使用
<style>标签。通常我们把<style>标签放在<head>标签中,也叫作内部样式。 - 外部
.css文件,使用<link rel="stylesheet" href="">引入到HTML文档中。推荐使用
CSS 三大特性
- 继承性:给父元素设置的属性,子孙元素也可以使用。
- 层叠性:层叠性只有在多个选择器中选择同一个标签,然后又设置了相同的属性,才会发生层叠。
- 优先级:当多个选择器选择同一个标签,并且给同一个标签设置属性时,如何层叠由优先级来决定.
各引入方式优先级: 内联样式 > 内部样式 - 外部样式 > 浏览器默认样式
导入外部样式表到当前
@import
1 | @import url("global.css"); |
CSS语法
为HTML标签设置一组样式也可以叫作设置CSS规则。CSS规则中必须包含选择器和一条及以上的声明。
- 在CSS中可以使用
/* */为样式添加注释。
CSS规则会有叠加的效果,优先级高的规则将覆盖优先级低的规则。同等优先级情况下后面的将覆盖前面的。
CSS选择器
要为HTML标签元素设置样式需要先选中该元素,使用css选择器可以选中HTML标签。
基础选择器
标签选择器(元素选择器)
E以HTML中元素名称作为选择符1
2
3h2{background:red;}
p{background:red;}
div{background:blue;}
ID选择器
#以HTML标签中id属性的值作为选择符(唯一)。1
2#box1{color:red;}
#box2{color:red;}
类别选择器
.以HTML标签中class属性的值作为选择符(可匹配多个)。1
2.box1{color:green;}
.box2{color:green;}
属性选择器
[att]具有att属性的元素[att="val"]选择具有att属性且属性值等于val的E元素。[att~="val"]选择具有att属性且属性值为一用空格分隔的字词列表,其中一个等于val的元素。[att|="val"]选择具有att属性且属性值为以val开头并用连接符”-“分隔的字符串的E元素,如果属性值仅为val,也将被选择。
通配符 *
通配符 * 选定所有HTML标签
复合选择器
复合选择器有两个及以上的选择器组合而成,也叫作组合选择器。
关系选择器
E F后代选择器(间接子级):匹配那些由第一个元素作为祖先元素的所有第二个元素(后代元素) ,不需要相匹配元素之间要有严格的父子关系。E>F子元素选择器(直接子级):匹配那些作为第一个元素的直接后代(子元素)的第二元素.E+F相邻兄弟选择器:当第二个元素紧跟在第一个元素之后,并且两个元素都是属于同一个父元素的子元素,则第二个元素将被选中。
选择器优先级:描述越具体优先级越高
!important 提升指定样式条目的应用优先权
单位取值
长度
px像素。绝对长度单位in英寸。绝对长度单位cm厘米。绝对长度单位mm毫米。绝对长度单位q1/4毫米。绝对长度单位pt点。绝对长度单位。pc派卡。绝对长度单位。相当于我国新四号铅字的尺寸
1in = 2.54cm = 25.4 mm = 101.6q = 72pt = 6pc = 96px 。绝对长度单位在使用时需要慎重。常用的绝对长度单位是
px因为在前端的视觉稿 .psd 通常都是以像素为单位绘制的。
em相对于当前对象内文本的字体尺寸。 相对长度单位rem相对于根元素(即html元素)font-size计算值的倍数。相对长度单位
颜色
Color Name用颜色关键字来指定颜色。如:black、white、red、green…HEX十六进制记法。如:#rrggbb或#rgbRGBrgb(R,G,B),三个参数,正整数值的取值范围为:0 - 255。百分数值的取值范围为:0.0% - 100.0%。RGBArgba (R,G,B,A) 在rgb基础之前增加了A 。A: Alpha透明度。取值0 - 1之间。
常用属性
继承性:CSS中部分为HTML标签设置属性样式给继承给子级标签。
背景
background设置标签的背景。简写属性- 标签可以使用颜色或图片作为背景
background-color设置标签的背景颜色。background-image设置标签的背景图像。
在 CSS属性中有大量的 简写属性也叫作复合属性,这些简写属性可以将多条样式规则合并为一条,以提高书写效率,让编码更加简洁。
边框
border定义元素边框的外观特性。简写属性
文本
文本颜色
color 指定颜色。
- 常用取值:Color Name、HEX、RGB
文字大小
font-size 定义元素的字体大小
字体
font-family 定义元素文本的字体名称序列
字体的粗细
font-weight 定义元素文本字体的粗细
- normal: 正常的字体。相当于数字值400
- bold: 粗体。相当于数字值700。
- bolder: 定义比继承值更重的值
- lighter: 定义比继承值更轻的值
- 用数字表示文本字体粗细。取值范围:100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900
文本简写属性
font 简写属性。定义元素的文本特性。
- 语法:
font:[ [font-style||font-variant||font-weight||font-stretch]?font-size[ /line-height]?font-family] | caption | icon | menu | message-box | small-caption | status-bar - 使用font属性参数必须按照如上的排列顺序,且font-size和font-family必须填写。每个参数仅允许有一个值。
文本转换大小写
text-transform 定义元素的文本如何转换大小写
none: 无转换capitalize: 将每个单词的第一个字母转换成大写uppercase: 将每个单词转换成大写lowercase: 将每个单词转换成小写
文本换行行为
white-space 指定元素是否保留文本间的空格、换行;指定文本超过边界时是否换行。
文本水平对齐
text-align 定义元素内容的水平对齐方式
文本垂直对齐
vertical-align 定义行内元素在行框内的垂直对齐方式
文本缩进
text-indent 定义块内文本内容的缩进
文本装饰
text-decoration 定义元素文本装饰
列表
list-style 设置列表项目相关内容
表格
border-collapse 设置或检索表格的行和单元格的边是否合并在一起
盒子模型
CSS盒模型有:内容(Content)、内边距(Padding)、边框(Border)、外边距(Margin)组成。
为元素设置宽、高
width设置元素宽度min-width最小宽度max-width最大宽度height设置元素高度min-height最小高度max-height最大高度
内外边距
margin 为元素设置上右下左的外边距 ,复合属性。
- 四个参数:上、右、下、左
- 三个参数:上、左右、下
- 两个参数:上下、左右
- 一个参数:上右下左
margin参数取值:auto 根据父级容器自动计算位置。多用左右两侧边距计算。可以让元素居中显示。
1 | /* box元素将在父元素中居中显示 */ |
margin-top设置元素上外边距margin-bottom设置元素下外边距margin-right设置元素右外边距margin-left设置元素左外边距
padding为元素设置所有四个方向(上右下左)的内边距,复合属性
padding的值为四、三、二、一个时规则与margin一至。
padding-top设置元素上内边距padding-bottom设置元素下内边距padding-right设置元素右内边距padding-left设置元素左内边距
定行宽度,超出文本显示为 …
1 | p{ |
多行显示,超出部分显示…
-webkit-line-clamp CSS 属性 可以把 块容器 中的内容限制为指定的行数.
1 | p { |
css基础2
块元素与内联元素
块元素
- 独占一行,默认情况下,其宽度自动填满其父元素宽度
- 可以设置
width,height属性 - 可以设置
margin和padding属性
内联元素
- 相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容而变化
- 不支持设置
width,height - 除了
margin-top、margin-bottom`,不支持外其它的内外边距都是支持的。
- 常用块元素:
1 | <div> <h1> <h2> <h3> <h4> <h5> <h6> |
- 常用内联元素
1 | <a> <s> <b> <input> <i> <span> |
修改标签类型:
displaydisplay:block;指定对象为块元素display:inline;指定对象为内联元素
内联块:
display:inline-block;- 块元素在一行显示。
- 内嵌元素支持宽高。
- 不设置宽高时内容撑开宽高。
- 换行会被解析为一个空格。
- 在IE6,IE7下不支持块标签。
要去除
display:inline-block;元素间的间隙有两种方式:1. 删除换行和空格。2. 设置父级元素font-size: 0;,然后再单独设置当前字体大小。
1 | /* 去除 内联块 元素间 间隙示例*/ |
显示/隐藏元素
标签元素显示或隐藏有三种方式
display:none;隐藏元素,不保留元素所占的空间。visibility:hidden;隐藏元素,保留元素所点空间。visible:visible设置元素可见。
opacity:<number>;设置元素透明度。 取值 0~1。0全透明,1不透明。
opacity:0也可以使元素隐藏,但需要它只是通过调整元素的透明度来实现,元素还在,还是可以点击的,而上面两种则不可以点击,使用时需要注意。
元素滚动行为:overflow
标签元素处理溢出内容的方式
overflow: hidden;当内容超出时隐藏超出部分。overflow: scroll;设置元素有滚动条。无论是否超出内容滚动条都会出现overflow: auto;当内容超出时呈现滚动条,反之则没有滚动条。相比于overflow: scroll;用户体验更好。overflow: visibleoverflow的默认取值,对超出部分不作任何处理。
也可以c通过
overflow-x,overflow-y设置X,Y轴的滚动行为。
浮动
最初,引入 float 属性是为了能让 web 开发人员实现简单的布局,包括在一列文本中浮动的图像,文字环绕在它的左边或右边。你可能在报纸版面上看到过。但 Web 开发人员很快意识到,任何东西都可以浮动,而不仅仅是图像,所以浮动的使用范围扩大了。浮动曾被用来实现整个网站页面的布局,它使信息列得以横向排列
想要将元素排列到一行可以使用
display:inline-block;但是内联块会存在间隙的问题。这里可以选择浮动的方式将元素排列到一行。
浮动为左浮动float:left;和右浮动float:right;
浮动的特点
- 块元素在一行显示。
- 内嵌元素支持宽高。
- 不设置宽高时内容撑开宽高。
- 脱离文档流。
- 按照给定的方向移动位置。
- 直到遇到父级元素边界或另外一个浮动元素停止移动。
- 提升元素层级(浮动元素后面的元素就占用了浮动元素的位置,但元素中内容不会移动)
清浮动
清浮动是由于浮动时提升元素的层级,脱离了文档流破坏了文档流结构。
清浮动有以上6种常用方式:
给父级也添加浮动
父级元素中如果有
margin: 0 auto;左右居中的效果将失去作用给父级添加
display: inline-block;父级元素中如果有
margin: 0 auto;左右居中的效果也将失去作用。在浮动元素下添加空标签清除浮动
1
2
3
4
5
6
7
8
9
10<style>
.box1{width: 100px;margin: 0 auto;border: 5px solid red;}
.box2{width: 100px;height: 100px;background: blue; float: left;}
.clear{clear:both;}
</style>
<div class="box1">
<div class="box2"></div>
<div class="clear"></div>
</div>IE6下会有最小高度问题(IE6下高度小于19px的元素,高度会被设置为19px,解决方案设置font-size:0,但仍然会有2px的高度。),IE5下margin: 0 auto;不起作用。
浮动元素下添加
标签清除浮动1
2
3
4
5
6
7
8
9<style>
.box1{width: 100px;margin: 0 auto;border: 5px solid red;}
.box2{width: 100px;height: 100px;background: blue; float: left;}
</style>
<div class="box1">
<div class="box2"></div>
<br clear='all'>
</div>这样写不符合工作中:结构、样式、行为三者分离的原则。代码有耦合。
::after伪类清除浮动1
2
3
4
5
6
7
8
9
10<style>
.box1{width: 100px;margin: 0 auto;border: 5px solid red;}
.box2{width: 100px;height: 100px;background: blue; float: left;}
.clear:after{content: '';display: block;clear: both;}
.clear{zoom:1; }
</style>
<div class="box1 clear">
<div class="box2"></div>
</div>IE5/6/7下不支持:after伪类。但IE5/6/7下只要触发hasLayout就不需要清除浮动。使用zoom:1;触发 hasLayout 这样会对其它代码造成的干扰降到最低。
overflow: hidden;清浮动1
2
3
4
5
6
7
8<style>
.box1{width: 100px;margin: 0 auto;border: 5px solid red;overflow: hidden;}
.box2{width: 100px;height: 100px;background: blue; float: left;}
</style>
<div class="box1">
<div class="box2"></div>
</div>IE5/6下不支持。解决为法:配合
zoom:1;使用
定位 position
position 定位允许您从正常的文档流布局中取出元素,并使它们具有不同的行为,例如放在另一个元素的上面,或者始终保持在浏览器视窗内的同一位置。
定位分类
position: static;静态定位- 对象遵循常规流,默认定位选项
position: relative;相对定位position: absolute;绝对定位- 定位上下文:绝对定位元素的父元素的position属性。
position: fixed;固定定位- 定位上下文:偏移定位是以窗口为参考。
移动位置
top, bottom, left, 和 right 来精确指定要将定位元素移动到的位置。
定位层级
使用z-index属性,可以更改定位堆叠顺序。
z-index 的值为数字,数字越大堆叠在顶层,数字越小堆叠在底层。
伪类
伪类只有在一定的条件下才能作用到标签上。
超链接的4种状态
a:link {color:#FF0000;}/ 未访问的链接 /a:visited {color:#00FF00;}/ 已访问的链接 /a:hover {color:#FF00FF;}/ 鼠标划过链接 /a:active {color:#0000FF;}/ 已选中的链接 /
注意: 在CSS定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
注意: 在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。
E:focus设置对象在成为输入焦点时的样式。E:first-child匹配第一个子元素E:last-child匹配最后一个子元素
CSS(Sprites)精灵图(雪碧图)
CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的background-image,background-repeat,background-position的组合进行背景定位,background-position可以用数字精确地定位出背景图片的位置。
优点:
- 减少网页的http请求,从而加快了网页加载速度,提高用户体验。
- 减少图片的体积,因为每个图片都有一个头部信息,把多个图片放到一个图片里,就会共用同一个头信息,从而减少了字节数。
- 解决了网页设计师在图片命名上的困扰,只需对一张集合的图片上命名就可以了,不需要对每一个小元素进行命名。
- 更换风格方便,只需要在一张或少张图片上修改图片的颜色或样式,整个网页的风格就可以改变。
缺点:
- 在宽屏,高分辨率的屏幕下的自适应页面,你的图片如果不够宽,很容易出现背景断裂。
- CSS Sprites在开发的时候,要通过photoshop或其他工具测量计算每一个背景单元的精确位置。
- 在维护的时候比较麻烦,如果页面背景有少许改动,一般就要改这张合并的图片。
- 精灵图不能随意改变大小和颜色。改变大小会失真模糊,降低用户体验,现在一般用字体图标代替精灵图。
精灵图使用属性
background-image使用图像作为背景background-repeat背景图像如何填充background-position指定背景图像在元素中出现的位置
字体图标库
可以像使用字体一样使用图片。可以通过font-size设置图片大小。通过color设置图片颜色。
cssreset
重置HTML标签的默认样式。HTML标签会有默认情况下不同浏览器中都会有一定的样式属性这些样式也可能会因为不同的浏览器所不同,这些样式并不是程序所需要的,所以在程序一开始就需要先将这些默认样式给清除掉。











