CSS基础知识汇总
前言
原文连接:http://www.cnblogs.com/wanghzh/p/5805678.html
在此基础上又做了大量的扩充
CSS简介
CSS是Cascading Style Sheets的简称,中文称为层叠样式表,用来控制网页数据的表现,可以使网页的表现与数据内容分离。
CSS的引用方式
1.行内式
行内式是在标记的style属性中设定CSS样式。这种方式没有体现出CSS的优势,不推荐使用。
2.嵌入式
嵌入式是将CSS样式集中写在网页的标签对的标签对中。格式如下:
<head>
<style type="text/css">
...此处写CSS样式
</style>
</head>
3.导入式
将一个独立的.css文件引入HTML文件中,导入式使用CSS规则引入外部CSS文件,<style>
标记也是写在标记中,使用的语法如下:
<style type="text/css">
@import"mystyle.css"; 此处要注意.css文件的路径
</style>
4.链接式
也是将一个.css文件引入到HTML文件中<link href="mystyle.css" rel="stylesheet" type="text/css"/>
注意:
导入式会在整个网页装载完后再装载CSS文件,因此这就导致了一个问题,如果网页比较大则会儿出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。这是导入式固有的一个缺陷。使用链接式时与导入式不同的是它会以网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果的,它不会象导入式那样先显示无样式的网页,然后再显示有样式的网页,这是链接式的优点。
CSS选择器(Selector)
“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素
- 基础选择器
选择器类型 | 说明 | 例子 |
---|---|---|
* | 通用元素选择器,匹配任何元素 | * { margin:0; padding:0; } |
E | 标签选择器,匹配所有使用E标签的元素 | p { color:green; } |
.info和E.info | class选择器,匹配所有class属性中包含info的元素 | .info{background:#fff;} p.info{ background:blue; } |
#info和E#info | id选择器,匹配所有id属性等于footer的元素 | #info{background:#fff;} p#info {background:#fff;} |
- 组合选择器
选择器类型 | 说明 | 例子 |
---|---|---|
E,F | 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔 | Div,p{color:#fff;} |
E F | 后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔 | #nav li{display:inline;} li a{font-weight:bold;} |
E > F | 子元素选择器,匹配所有E元素的子元素F | div>strong {color:#fff;} |
E + F | 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F,注意:F为匹配的元素 | p + p {color:#f00;} |
E~F | 匹配任何在E元素之后的同级F元素,与E+F略有不同,这个是匹配同级的所有F元素,E+F只匹配毗邻的那个F | p + a{color: yellow;} |
注意嵌套规则:
块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
块级元素不能放在p里面。
有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
li内可以包含div
- 属性选择器
选择器类型 | 说明 | 例子 |
---|---|---|
E[att] | 匹配所有具有att属性的E元素,不考虑它的值。注意:E在此处可以省略,比如“[checked]”。以下同。) | p[title]{color:#f00;} |
E[att=val] | 匹配所有att属性等于“val”的E元素 | div[class="error"]{color:#f00;} |
E[att~=val] | 匹配所有att属性具有多个空格分隔的值<td class="name passwd"></td> 、其中一个值等于“val”的E元素 |
td[class~="name"]{color:#f00;} |
E[att^="val"] | 属性att的值以"val"开头的元素 | div[id^="nav"]{ background:#ff0;} |
E[att$="val"] | 属性att的值以"val"结尾的元素 | div[id$="nav"]{ background:#ff0;} |
E[att*="val"] | 属性att的值包含"val"字符串的元素 | div[id*="nav"]{ background:#ff0;} |
- 伪类选择器
选择器类型 | 说明 |
---|---|
E:link | (没有接触过的链接),用于定义了未被点击的链接的常规状态。 |
E:hover | (鼠标滑过链接上的状态),用于产生视觉效果。 |
E:visited | (访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。 |
E:active | (在链接上按下鼠标时的状态),用于表现鼠标按下时还没有释放时。 |
E:focus | 匹配获得当前焦点的E元素,一般作用于input类似的输入框,在输入中改变样式 |
E:before | 在每个E元素的内容之前插入内容,注意要有content属性,值为加入的内容 |
E:after | 在每个E元素的内容之后插入内容,注意要有content属性,值为加入的内容 |
E:first-child | 匹配E的父元素的第一个子元素,注意是父元素的第一个子,相当于自己兄弟的第一个元素,同理还有last-child |
E:first-line | 匹配E元素的第一行,这个是在E的子元素里的第一行 |
E:first-letter | 匹配E元素的第一个字母 |
E:enabled | 匹配表单中激活的元素 |
E:disabled | 匹配表单中禁用的元素 |
E:checked | 匹配表单中被选中的radio(单选框)或checkbox(复选框)元素 |
E::selection | 匹配用户当前选中的元素,默认是背景色变蓝,注意是:: |
E:not(s) | 匹配不符合当前选择器E的任何元素,例:div > *:not(p){}, div的所有子元素中,不是p标签的 |
E:nth-child(n) | 匹配其父元素E的第n个子元素,第一个编号为1,例如:a:nth-child(2){color: yellow} |
E:nth-of-type(n) | 与:nth-child()作用类似,但是仅匹配使用同种标签的元素,例如:a:nth-of-type(2){color: yellow},只找到同辈中第二个a标签 |
<style type="text/css">
a:link{
color: red;
}
a:visited {
color: blue;
}
a:hover {
color: green;
}
a:active {
color: yellow;
}
input:focus{color: yellow};
</style>
</head>
<body>
<input>
<input value="22222222">
<a href="http://www.baidu.com" target="_blank">hello-world</a>
</body>
CSS常用属性
- 颜色属性:
<div style="color:blueviolet">ppppp</div>
<div style="color:#ffee33">ppppp</div>
<div style="color:rgb(255,0,0)">ppppp</div>
<div style="color:rgba(255,0,0,0.5)">ppppp</div>
###其他的颜色属性说明:
opacity
元素的透明度,语法:opacity: 0.5;
属性值在0.0到1.0范围内,0表示透明,1表示不透明。
transparent
全透明,使用方式:color: transparent;
- 字体属性
a:first-child{
font-size: 20px|30%|larger; /*字号大小*/
font-family: 'Verdana', serif; /*字体*/
font-weight: lighter|bold; /*调整深浅*/
font-style: oblique; /*斜体*/
}
- 背景属性
a:first-child{
background-color: cornflowerblue; /*背景颜色*/
background-image: url('1.jpg'); /*背景图片*/
background-repeat: no-repeat;(repeat:平铺满);
background-position:-105px -112px; /*多用于一个素材图片可能包含多个图片元素,取得其中所需元素*/
}
注意:如果将背景属性加在body上,要记得给body加上一个height,否则结果异常,这是因为body为空,无法撑起背景图片
- 文本属性
p:first-child{
text-align: center; /*文本位于左中右*/
line-height: 100px; /*文本+上下空白总共占用的高度,与字体大小无关*/
text-transform: uppercase|lowercase|capitalize /*大写|小写|首字母大写*/
letter-spacing: 10px; /*每个字母的间隔*/
word-spacing: 20px; /*每个单词的间隔*/
text-indent: 20px; /*缩进*/
background-position:-105px -112px; /*多用于一个素材图片可能包含多个图片元素,取得其中某个位置所需元素*/
text-decoration: none|underline|overline|line-through /*文本装饰,无|下划线|上划线|中线,常用于a标签去除下划线*/
}
###其他的文本属性说明:
text-overflow: 文本溢出样式,经常和overflow:hidden要配合使用,overflow+width先限定宽度,才有可能出现溢出的情况
clip 修剪文本。
ellipsis 显示省略符号...来代表被修剪的文本。
string 使用给定的字符串来代表被修剪的文本。
text-shadow:文本阴影
第一个参数是左右位置
第二个参数是上下位置
第三个参数是虚化效果
第四个参数是颜色
text-shadow: 5px 5px 5px #888;
white-space: 设置元素中空白的处理方式
normal:默认处理方式。
pre:保留空格,当文字超出边界时不换行
nowrap:不保留空格,强制在同一行内显示所有文本,直到文本结束或者碰到br标签
pre-wrap:保留空格,当文字碰到边界时换行
pre-line:不保留空格,保留文字的换行,当文字碰到边界时换行
word-wrap:自动换行
word-wrap: break-word; /*常和write-space: pre-wrap配合使用,用于长文本在页面的输出*/
- float属性
这个东西比较复杂,专门写了文章深入说明,请移步这里:
http://www.cnblogs.com/caseast/p/5831240.html - position
1.static,默认值 static:无特殊定位,对象遵循正常文档流。
top,right,bottom,left等属性不会被应用。可用margin定位边距 说到这里我们不得不提一下一个定义——文档流,文档流其实就是文档的输出顺序,也就是我们通常看到的由左到右、由上而下的输出形式,在网页中每个元素都是按照这个顺序进行排序和显示的,而float和position两个属性可以将元素从文档流脱离出来显示。默认值就是让元素继续按照文档流显示,不作出任何改变。
2.position:relative & absolute
relative:相对定位,对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。
absolute:绝对定位,对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。 如果设定 position:relative,就可以使用 top,bottom,left和right来相对于元素在文档中应该出现的位置来移动这个元素。[意思是元素实际上依然占据文档中的原有位置,只是视觉上相对于它在文档中的原有位置移动了];当指定 position:absolute 时,元素就脱离了文档[即在文档中已经不占据位置了,使用chrome审查元素,虽然代码上在父元素的relative中,但点击父元素是不包含absolute部分的],可以准确的按照设置的top,bottom,left 和 right来定位了。如果一个元素绝对定位后,其参照物是以离自身最近元素是否设置了相对定位,如果有设置将以离自己最近元素定位,如果没有将往其祖先元素寻找相对定位元素,一直找到html为止。
3.position:fixed
在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。
fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性定义。
注意点: 一个元素若设置了position:absolute或fixed;则该元素就不能设置float。这是一个常识性的知识点,因为这是两个不同的流,一个是“浮动流”,另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流(普通流)。
小结一下:css有3种基本的定位机制(普通流、定位流、浮动流)
普通流:普通流中元素框的位置由元素在XHTML中的位置决定。块级元素从上到下依次排列,框之间的垂直距离由框的垂直margin计算得到。行内元素在一行中水平布置。普通流就是html文档中的元素如块级元素、行内元素依据他们的显示属性按照在文档中的先后次序依次显示。是块级元素就占一行或多行,是行内元素就和其他元素共处一行,没什么好说的,该咋显示咋显示,一个萝卜一个.position:relative和position:static都遵循普通流
定位流:包括position:absolute|fixed,两者区别就是absolute在就近的position:relative里定位,fixed在浏览器里定位。使用了这个流,元素就脱离了普通流的规则。也不能再使用float,float只能作用于普通流,让普通流漂浮到浮动流。
浮动流:同样脱离于普通流,但和定位流又不在一个层次中,详情参考上边详细讲解float的博客
<head>
<style type="text/css">
.pos_left_re
{
position:relative;
top: -20px;
left:-20px;
}
.pos_right_re
{
position:relative;
top: -20px;
left:20px
}
.pos_ab{
position: absolute;
top: 100px;
left: 50px;
}
.pos_fixed{
position: fixed;
top: 250px;
left: 50px;
}
</style>
</head>
<body>
<h2>这是位于正常位置的标题</h2>
<h2 class="pos_left_re">这个标题相对于其正常位置向左移动</h2> <!--首先relative依然会遵循标准流,所以他的相对位置是在标准流的基础上,会被第一个h2挤压到第二行,在此基础上相对运动-->
<h2 class="pos_right_re">这个标题相对于其正常位置向右移动</h2>
<div class="pos_right_re">相对位置中的绝对位置:
<a class="pos_ab">absolute</a>
<div class="pos_ab">重叠的</div> <!--定位流不遵循标准流的位置规则,不存在挤压,会叠在一起-->
</div>
<div class="pos_fixed">fixed</div>
</body>
display属性
这个在html中有过介绍,参考我的这篇博文:http://www.cnblogs.com/caseast/p/5822186.htmlzoom 缩放比例
.zoom {
zoom: 150%;
}
cursor自定义光标
cursor: default; 默认
cursor: none; 无光标
cursor: pointer; 小手光标
cursor: help; 小问号光标
cursor: move; 十字箭头移动光标
cursor: text; I 型光标
cursor: wait; 等待中光标
cursor: url("/static/o_mouse.png"), auto; 自定义图片的光标z-index 元素层叠顺序
z-index 仅在定位元素上有效(例:position:absolute|relative|fixed;)
数字大的覆盖数字小的,可以为负数important 优先级
CSS写在不同的地方有不同的优先级,.css文件中的定义<元素style中的属性,但是如果使用!important,事情就会变得不一样,css定义中的用!important限定的定义却是优先级最高的。overflow溢出
规定溢出元素的首选滚动方法
visible 默认值。内容不会被修剪,会呈现在元素框之外。
hidden 内容会被修剪,并且其余内容是不可见的。
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit 规定应该从父元素继承 overflow 属性的值。边框border
border-style:边框样式solid 默认,实线
double 双线
dotted 点状线条
dashed 虚线
border-color:边框颜色
border-width:边框宽度
border-radius:圆角
>1个参数:四个角都应用
>2个参数:第一个参数应用于 左上、右下;第二个参数应用于 左下、右上
>3个参数:第一个参数应用于 左上;第二个参数应用于 左下、右上;第三个参数应用于右下
>4个参数:左上、右上、右下、左下(顺时针)
border: 简写
>border: 2px yellow solid;
box-shadow:边框阴影
>第一个参数是左右位置
>第二个参数是上下位置
>第三个参数是虚化效果
>第四个参数是颜色
>box-shadow: 10px 10px 5px #888;
用border实现三角图案
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.triangle-one {
display: inline-block; /*同行显示的div*/
border-top: 50px red solid;
border-right: 50px green solid;
border-bottom: 50px yellow solid;
border-left: 50px blue solid;
}
.triangle-two {
display: inline-block;
border-top: 0 red solid;
border-right: 50px green solid;
border-bottom: 50px yellow solid;
border-left: 50px blue solid;
}
.triangle-stree {
display: inline-block;
border-top: 50px red solid;
border-right: 0 green solid;
border-bottom: 50px yellow solid;
border-left: 50px blue solid;
}
</style>
</head>
<body>
<div class="triangle-one"></div>
<div class="triangle-two"></div>
<div class="triangle-stree"></div>
</body>
- margin和padding
这两个很好理解,margin是外边距,padding是内边距
写法:
margin:0 相当于 0 0 0 0 上 右 下 左 顺时针,padding一样
如果是0 auto 就是上下是0,左右是auto
CSS基础知识汇总的更多相关文章
- jquery基础知识汇总
jquery基础知识汇总 一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQu ...
- 前端开发:css基础知识之盒模型以及浮动布局。
前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西? 为什么这个浮动没有效果? 这个问题楼主已经回答了n遍.今天则是把 ...
- CSS基础知识之float
前段时间写过一篇CSS基础知识之position,当时对float的理解不太准确,被慕课网多名读者指出(原文已修正,如有误导实在抱歉).现对float进行更深入的学习,在此把学习心得分享给大家. 浮动 ...
- (转)第一天 XHTML CSS基础知识 文章出处:标准之路(http://www.aa25.cn/div_css/902.shtml)
欢迎大家学习<十天学会web标准>,也就是我们常说的DIV+CSS.不过这里的DIV+CSS是一种错误的叫法,建议大家还是称之为web标准. 学习本系列教程需有一定html和css基础,也 ...
- CSS基础知识之position
最近在慕课网学习了 网页布局基础 和 固定层效果 ,都是由声音甜美的 婧享人生 老师所录制,视频详细讲解了CSS中position的用法,在此把学习笔记分享给大家. CSS定位机制 标准文档流(Nor ...
- 【CSS】 CSS基础知识 属性和选择
css基础知识 html的基本标签都是千篇一律的,为了能够个性化外观,就需要进行样式的调整,而css就是专门用来维护,管理样式的一种格式.在html中定义css有三种方法 1. 为标签添加style属 ...
- CSS基础知识01
一.CSS基础知识介绍 1.css是cascading style sheet层叠式样式表的简写 2.css小用法 加粗:font-weight:bold; 正常用:norma ...
- 〖前端开发〗HTML/CSS基础知识学习笔记
经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> & ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
随机推荐
- 在windows上如何安装python web引擎jinja2
首先要把你的Python文件夹加到环境变量里头去.假设你的Python文件夹位于C:\Python34,那么你需要打开CMD并输入: SETX PATH "%path%;C:\Python3 ...
- ubuntu-14.04.2-desktop使用方法
一.安装VMware Tools 1. 在VMware Workstation11.1.0下安装Ubuntu镜像:ubuntukylin-14.04.2-desktop-amd64.iso 2. 点击 ...
- 一个App完成入门篇-终结篇(八)- 应用收官
经过以上几步的学习,我们终于来到最后一个步骤了,应用APP也接近尾声. 通过之前的几节教程,不知道您对使用DeviceOne开发一个应用是不是已经得心应手了,本节教程将教会大家如何在开发完成之后通过D ...
- A*寻路算法
对于初学者而言,A*寻路已经是个比较复杂的算法了,为了便于理解,本文降低了A*算法的难度,规定只能横竖(四方向)寻路,而无法直接走对角线,使得整个算法更好理解. 简而言之,A*寻路就是计算从起点经过该 ...
- RegSvr32注册OCX时报错
RegSvr32注册OCX时报错. 错误1: 模块“dsoframer2007.ocx”已加载,但对 DllRegisterServer 的调用失败,错误代码为 0x80070005. 有关此问题的详 ...
- [备忘]Redis运行出现Client sent AUTH, but no password is set
原因:程序提供了密码,但是redis.conf中并没有设置密码. 附加问题:如果redis.conf中设置了密码,有可能会导致服务无法启动,报5013错误.可能是访问权限的问题.
- ABP(现代ASP.NET样板开发框架)主题线下交流会(上海)开始报名了!
点这里进入ABP系列文章总目录 ABP主题线下交流会(上海)开始报名了 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称.它是采用最佳实践和流行技术 ...
- Exception:HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
主要错误信息如下: HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...
- KnockoutJS 3.X API 第七章 其他技术(7) 微任务
注意:本文档适用于Knockout 3.4.0及更高版本. Knockout的微任务队列 Knockout的微任务队列支持调度任务尽可能快地运行,同时仍然是异步的,努力安排它们在发生I / O,回流或 ...
- 由于Replication,DBCC Shrink不能收缩Log File
使用Backup创建测试环境之后,发现testdb的Log File过大,达到400GB,由于测试环境实际上不需要这么大的Log Space,占用400GB的Disk Space实在浪费Disk Re ...