小白web前端开发--学习笔记三
2017-06-26 10:59
876 查看
css基础知识
css简介
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。要深刻理解层叠样式表,样式表说明css是负责美化网页的;而层叠表示网页可以定义多层样式,样式可以被覆盖而不会被干掉。
css样式的3种用法
在标签中使用style属性,如下:<h1 style="color:red;">Hello,World</h1>
在头部的style标签中定义:
<style> p { color: blue; } </style>
在头部通过link标签引用外部css文件,如:
<link rel="stylesheet" href="01.css">
css的3种基础选择器
1. html选择器
用法:在style属性中直接利用标签进行设置,如下:p { color: red; }
需要注意的点:
通过html标签名来选择元素
所有的html标签都可以当做选择器
无论标签藏多深都会被选中
选择的是所有的标签而不是具体某个标签。所以说我们通过html标签选择器来设置的都是一些共性问题。
2. . class选择器
用法:对标签的class名进行设定。.class{ color:blue; }
需要注意的点:
1.任何的标签都可以使用class属性(class属性也是一个全局属性)
2.class属性名可以重复使用
3.一个class属性中,可以有多个class属性值。
3. id选择器
用法:利用标签的id属性进行设定:#id{ color:blue; }
需要注意的点:
任何的标签都可以有id属性和属性值(因为id是一个全局属性)。id命名不能随意的命名。
大小写敏感 ,id的名字中可以有数字字母下划线,但是要以字母开头。
驼峰命名法分为小驼峰命名和大驼峰命名 。
testHeader是小驼峰,TestHeader是大驼峰,或test-header也行
id名不能重复,id名是唯一的。
综合选择器
后代选择器
如:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> /*后代选择器,选中所有的后代的span标签*/ .d1 span { color: blue; } </style> </head> <body> <div class="d1"> <span>我是儿子span</span> <div class="son"> <span>我是孙子span</span> <div class="d2"> <span>我是重孙span</span> </div> </div> </div> </body> </html>
设定div标签的所有p标签为红色。
交集选择器
例:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> /*选中div,并且这个div的class名叫d1*/ div.d1 { color: red; } </style> </head> <body> <div class="d1">我是第一个div</div> <div class="d1">我是第二个div</div> </body> </html>
选中div标签中有特定名字的div标签
并集选择器
例:<html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .d1,p,em { color: red; } </style> </head> <body> <div class="d1">我是div标签</div> <em>我是em标签</em> <p>我是p标签</p> </body> </html>
选定需要设置相同样式的所有标签
子元素选择器
例:<html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #fa>em { color: red; } </style> </head> <body> <div id="fa"> <em>我是二级em</em> <div class="son"> <em>我是三级em</em> <div> <em>我是四级em</em> </div> </div> </div> </body> </html>
序列选择器
例:<!DOCTYPE html> <html lang="en"> <head> meta charset="UTF-8"> title>Document</title> <style> ul li:first-child { color: red; } ul li:last-child { color: blue; } </style> </head> <body> <ul> <li>li1</li> <li>li2</li> <li>li3</li> <li>li4</li> <li>li5</li> </ul> </body> </html>
相邻兄弟选择器和普通兄弟选择器
例:<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
/*相邻兄弟选择器*/
div + p { color: red; }/*普通兄弟选择器*/
div ~ p { color: red; }</style>
</head>
<body>
<div>我是div</div>
<p>我是p标签</p>
<p>我是第二个p标签</p>
</body>
</html>
继承和层叠
.继承:父元素的某些css属性会被子元素无条件的继承过去。关于文字的css属性都可以进行继承,如color,text-,line-,font-等
层叠:层叠解决的是css冲突的问题。
比较权重来解决层叠问题。
!important 能够把”单独属性”的权重变为无限大。 尽量少用。
选择器冲突
html选择器,class选择器,id选择器的权重是id>class>html。因此单个的这3中选择器发生冲突时以id属性定义的样式为准。如下:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> /*谁更精确就听谁的*/ div { color: blue; } #test { color: green; } .d1 { color: red; } </style> </head> <body> <div class="d1" id="test">我是div标签</div> </body> </html>
此时显现的颜色为green。
当这3种选择器的数量不一样,则将id,class,html这3种选择器的数量依次进行比较,权重大者获胜。如:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> /*id class html选择器的权重比较*/ #box1 .hei2 p { /* 1 1 1*/ color: red; } div div #box3 p { /*1 0 3*/ color: green; } div.he1 div.he2 div.he3 p { /*0 3 4 */ color: blue; } </style> </head> & 4000 lt;body> <div class="he1" id="box1"> <div class="he2" id="box2"> <div class="he3" id="box3"> <p>文字颜色</p> </div> </div> </div> </body> </html>
经过权重比较后,文字颜色为red。
若权重相同,则采用覆盖原理,写在后面的样式会覆盖前面的样式。
如:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
/*两种样式的权重一样,后面的会覆盖前面的*/
#box1 .he2 p { color: red; }#box2 .he3 p {
color: blue;
}
</style>
</head>
<body>
<div class="he1" id="box1">
<div class="he2" id="box2">
<div class="he3" id="box3">
<p>文字颜色</p>
</div>
</div>
</div>
</body>
</html>
此时文字颜色为blue。
若选择器没有直接选中,则谁描述的详细谁获胜,如:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> #he3 { color: blue; } #he1 #he2 { color: red; } </style> </head> <body> <div class="box" id="he1"> <div class="box" id="he2"> <div class="box" id="he3"> <p>猜猜这是什么颜色?</p> </div> </div> </div> </body> </html>
此时虽然#he1 #he2的权重大于#he3,但#he3描述的更详细。因此文本颜色为blue。
综上:选择器的选择问题可以用下图表示:
权重比较
块级元素和行内元素
行内元素部不能够设置宽度和高度。行内元素的宽度和高度是标签内容的宽度和高度。块级元素可以设置宽度和高度。块级元素会独占一行。而行内元素却不能够独占一行,只能和其他的行内元素共用一行。
如果块级元素不设置宽度,那么块级元素会自动的占满父元素的全部宽度。
常用的块级元素有div, form, table, header, aside, section, article, figure, figcaption, h1~h6, nav, p, pre, blockqoute, canvas, ol, ul, dl。常用的行内元素有span, a, img, label, input, select, textarea, br, i, em, strong, small, button, sub, sup, code。
行内元素和块级元素之间的转换
行转块–>block
块转行–>inline
行内块元素–>inlin-block
如下代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> .d0 { width: 300px; height: 300px; background-color: red; /*背景颜色*/ display: inline; /*把块级元素变成了行内元素*/ } .s1 { width: 300px; height: 300px; background-color: blue; display: block;/*将行内元素变成块级元素*/ } em { width: 300px; height: 300px; background-color: green; display: inline-block; /*行内块元素*/ } .d1 { width: 300px; height: 300px; background-color: red; display: inline-block; /*float: left;浮动*/ } .d2 { width: 300px; height: 300px; background-color: blue; display: inline-block; /*float: left;*/ } body { background-color: #000; } </style> </head> <body> <div class="d0">Hello,Div</div> <span class="s1">hello,Span</span> <em>hello,Em</em> <a href="##">百度</a> <hr> <div class="d1"></div> <div class="d2"></div> </body> </html>
相关文章推荐
- Web前端开发学习笔记(二)
- Web前端开发学习笔记(一)
- web前端开发学习笔记
- web前端开发vue笔记学习
- Web前端开发修炼之道——学习笔记一
- 开始学习web前端开发知识,小白的路一步步走
- Android开发学习笔记之浅谈WebView
- 前端学习笔记一:关于一个新页面的开发
- web开发-前端设计学习日志
- IPhone 开发笔记WebView 学习
- struts学习笔记3接收web前端前台传来的数据
- 步步为营 SharePoint 开发学习笔记系列 十、SharePoint web service 开发(下)
- 学习笔记:使用Web Service Software Factory开发简易留言本服务以及Mobile调用实现-1.创建Service
- Asp.net控件开发学习笔记(七)----WebControl基类
- Android开发学习笔记:浅谈WebView
- Android开发学习笔记:浅谈WebView
- 步步为营 SharePoint 开发学习笔记系列 九、SharePoint web service 开发(上)
- web前端学习笔记1
- 北京.Net学习活动:本周六【6月26日】- VS2010敏捷开发和Web前端开发,欢迎参加!
- 做了四年的winfrm,最近开始开发web程序,学习笔记如下: