盒子模型1

来源:互联网 发布:网络优化大师下载 编辑:程序博客网 时间:2024/04/27 23:49

①父子选择器

类选择器和id选择器都可以有父子选择器

总结:
1.父子选择器可以有多级(但是实际开发中不要超过三层)
2.父子选择器有严格的层级关系
3.父子选择器不局限于什么类型选择器
比如:
#id span span
.s1 #id span
div #id .s2

②一个元素可以同时有id选择器和类选择器

对一个元素而言,不能有多个id选择器,只能有一个id选择器。
<span class="s1" id="news_specail">新闻一</span>

③一个元素可以同时有id选择器和类选择器
当id选择器和类选择器发生冲突时,id选择器优先级高于类选择器
优先级:id选择器>类选择器
比如:id选择器指定字体为红色,而类选择器指定字体为蓝色,则页面显示红色。

④一个元素最多有一个id选择器,但是可以有多个类选择器

<元素 class="类选择器1 类选择器2" />
<span class="cls1 s1">新闻三</span>

细节:
(1)一个元素既有类选择器,又有id选择器,id选择器的优先级高
(2)一个元素有两个类选择器,当发生属性冲突的时候,以谁为准呢
如:<span class="s1 cls1">新闻三</span>
.s1有 color:black;
.cls1有 color:blue;
不以class="s1 cls1"的先后顺序为准
而是以css文件中.s1和.cls1,谁在文件最后出现,以谁的属性为准。即在css文件出现的先后顺序,谁后出现以谁为准。
特别注意:当两个类选择器发生冲突了,则以写在css文件中的后面的那个类选择器为准。

⑤当一个元素被id选择器,类选择器,html选择器同时限定时,优先级是:id选择器>类选择器>html选择器>通配符选择器

demo.html

[html] view plaincopy
  1. <html>  
  2.     <head>  
  3.         <link rel="stylesheet" type="text/css" href="demo.css" />  
  4.     </head>  
  5.     <body>  
  6.         <span class="s1" id="news_specail">新闻一</span>  
  7.         <span class="s1">新闻二</span>  
  8.         <span class="s1 cls1">新闻三</span>  
  9.         <span class="s1">新闻四</span>  
  10.         <span class="s1">新闻五</span>  
  11.     </body>  
  12. </html>  

demo.css

[html] view plaincopy
  1. .s1{  
  2.     background-color: pink;  
  3.     font-size: bold;  
  4.     font-size: 16px;  
  5.     color: black;  
  6. }  
  7. /*对新闻一做一个特别的修饰*/  
  8. #news_specail{  
  9.     color: red;  
  10.     font-style: italic;  
  11. }  
  12. /*给新闻三再配置一个class选择器*/  
  13. .cls1{  
  14.     font-style: italic;  
  15.     text-decoration: underline;  
  16.     color: blue;  
  17. }  

⑥在css文件中,如果多个类/id选择器它们都有相同的部分,我们可以把相同的css样式放在一起。

注意:浏览器会向服务器发出请求,单取这个css文件,和取一个图片没什么区别的,都是取资源。css文件本身也会被浏览器从服务器下载到本地,才能显示效果。

案例代码

[html] view plaincopy
  1. /*招生广告*/  
  2. .ad_stu{  
  3.     width: 136px;  
  4.     height: 196px;  
  5.     background-color: #FC7E8C;  
  6.     margin: 5px 0 0 6px  
  7.     float: left;  
  8. }  
  9.   
  10. /*广告2*/  
  11. .ad_2{  
  12.     background: #7CF574;  
  13.     height: 196px;  
  14.     width: 457px;  
  15.     float: left;  
  16.     margin: 5px 0 0 6px  
  17. }  
  18.   
  19. /*房地产广告*/  
  20. .ad_house{  
  21.     background: #7CF574;  
  22.     height; 196px;  
  23.     width: 152px;  
  24.     float: left;  
  25.     margin: 5px 0 0 6px  
  26. }  
  27.   
  28. /*把各个类选择器的公共部分,单独抽取写一份,好处是可以减少css的冗余*/  
  29.   
  30. /*招生广告*/  
  31. .ad_stu{  
  32.     width: 136px;  
  33.     background-color: #FC7E8C;  
  34. }  
  35. /*广告2*/  
  36. .ad_2{  
  37.     background: #7CF574;  
  38.     width: 152px;  
  39. }  
  40. /*房地产广告*/  
  41. .ad_house{  
  42.     background: #7CF574;  
  43.     width: 152px;  
  44. }  
  45. .ad_stu, .ad_2, .ad_house{  
  46.     height: 196px;  
  47.     float: left;  
  48.     margin: 5px 0 0 6px  
  49. }  


块元素和行内元素——区别

1.行内元素只占内容的宽度,块元素内容不管内容多少都要占全行。
2.行内元素只能容纳文本和其它行内元素,块元素可以容纳文本,行内元素和块元素。(与浏览器类版本和类型有关)
3.一些css属性对行内元素不生效,比如margin,left,right,width,height.建议尽可能使用块元素div定位。(与浏览器版本和类型有关)

块元素和行内元素——概念
行内元素(inline element),又叫内联元素:
内联元素只能容纳文本或其他内联元素,常见内联元素<span><a>

块元素(block element):
块元素一般都从新行开始,可以容纳文本,其它内联元素和其它块元素,即使内容不能占满一行,块元素也要把整行占满。常见块元素<div><p>
★★★这个概念非常的重要★★★

从上面可以看出,行内元素它只占能显示自己内容的宽度,而且他不会占据整行,而块元素他不管自己的内容有多少,会占据整行,而且会换行显示。
常见的行内元素:<a> <span> <input>
常见的块元素有:<div><p>

块元素和行内元素——相互转换
请注意:行内元素和块元素可以相互转换
display:inline ->转为行内元素(比如div)
display:block  ->转为块元素(比如a)


css不区分大小写,但是统一为好。

demo2.html

[html] view plaincopy
  1. <html>  
  2.     <head>  
  3.         <link rel="stylesheet" type="text/css" href="demo2.css" />  
  4.     </head>  
  5.     <body>  
  6.         <!--行内元素以能够显示自己为目标-->  
  7.         <span class="s1">span1</span>  
  8.         <span class="s1">span1</span>  
  9.         <!--input元素也是行内元素-->  
  10.         <span class="s1">span1</span><input type="text" name="username" />  
  11.   
  12.         <!--虽然只有3个字母,但是以沾满整行为目的-->  
  13.         <!--块元素以占据整行为目标,不会因为内容少,而只占据那么一部分-->  
  14.         <!--给div设置宽度,设置的窄一些,默认情况下,下面的div也不会上来,不会因为自己变窄了,就不占据一行了-->  
  15.         <div class="s2">div</div><input type="text" name="hello" />  
  16.         <!--div老霸气了,除非上面的div左浮动,虽然上面的div右边是空白,但是input元素还是被挤到下一行-->  
  17.         <div class="s3">div</div>  
  18.         <!--p元素也是块元素-->  
  19.         <p style="background-color: silver">这是一个段落</p>  
  20.   
  21.         <!--此时的行内元素转成块元素显示,并占据整行,input元素被挤到下一行,上面的情况做对比-->  
  22.         <span class="s4">span1</span><input type="text" name="pigname" />  
  23.         <!--此时的行内块元素转成行内元素显示,紧跟着上面的input元素,自身后面的input元素也没有换行显示,和上面的情况形成对比-->  
  24.         <div class="s5">div</div><input type="text" name="hello" />  
  25.     </body>  
  26. </html>  

demo2.css

[html] view plaincopy
  1. .s1{  
  2.     background-color: pink;  
  3. }  
  4. .s3{  
  5.     background-color: gray;  
  6. }  
  7. .s2{  
  8.     background-color: pink;  
  9.     width: 100px;  
  10. }  
  11. .s4{  
  12.     background-color: pink;  
  13.     display: block; /*把使用s4类选择器的元素,按照块元素显示*/  
  14. }  
  15. .s5{  
  16.     background-color: gray;  
  17.     display: inline; /*把使用s5类选择器的元素,按照行元素显示*/  
  18. }  


CSS文件的相互引用
a.css b.css c.ss
如果希望在a.css中使用到b.css c.css的选择器
可以通过@import指令来完成

@import url("被引用的css文件")

如果希望在html或者php文件中引用某个xxx.css也可以在<style>标签中
<style>
@impurt url("某个css文件")
</style>

把公共的部分提取出来


★★★一个非常重要的概念★★★


标准流/非标准流
流:
在现实生活中就是流水,在网页设计中就是指元素(标签)的排列方式。(html元素在网页中显示的顺序)
标准流:元素在网页中就像流水,排在前面的元素(标签)内容前面出现,排后面的元素(标签)内容后面出现。
非标准流:当某个元素(标签)脱离了标准流[比如因为相对定位]排列,我们统称为非标准流排列。关于非标准流,将在定位小结讲解。

盒子模型——概念(★★★★★css核心内容)
要搞清楚盒子模型,就必须先明白下面几个概念:

在网页设计中常听的属性名:内容(content)、填充(padding)、边框(border)、边界(margin),css盒子模型都具备这些属性。

形象理解:把div看做一个盒子,里面装了一个古董花瓶(内容content),为防止被撞坏了就在盒子里填充了泡沫之类紧紧包裹着花瓶,泡沫就是padding,盒子和墙边的距离就是margin。

亲自动手绘制下图,就会理解清楚了。




盒子模型——经典案列 (必须掌握★★★★★★)
从简单盒子到复杂盒子

一点点引出知识点,知识点不可能一步到位的讲解。
<!DOCTYPE>
声明位于文档中的最前面的位置,处于<html>标签之前。此标签可告知浏览器文档使用哪种HTML或XHTML规范。
该标签声明三种DTD类型,分别表示严格版本,过渡版以及基于框架的HTML文档。
国内门户网站用的多为
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

注意:图片也是盒子,想把图片压下来该怎么处里?
如果是在div中设置margin:5px 0px 0px 5px;虽然把图片向下压了,但是div也随着变长了,div自适应的增长了。在div img中设置margin-top: 5px;把img也当做盒子,div的内边距,就是img的外边距,这样就不会出现盒子被撑破自增长了,对比上面的。详细看css文件,自己实际操作下就会明白。
★★★辩证的看,div的内边距就是img的外边距★★★

素材


====


box.html

[html] view plaincopy
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html>  
  3.     <head>  
  4.         <link rel="stylesheet" type="text/css" href="box.css" />  
  5.     </head>  
  6.     <!--在IE浏览器下,会发现body被包全了,并没有按照css文件中的width:600px;,height:500px;显示,这时候需要引入<!doctype标签>-->  
  7.     <body>  
  8.         <div class="div1">  
  9.             <img src="m4.jpg" />  
  10.         </div>  
  11.     </body>  
  12. </html>  

box.css

[html] view plaincopy
  1. body{  
  2.     /*边框粗细,边框,边框颜色*/  
  3.     border: 1px solid red; /*1px表示边框的宽度 solid实线 red表示颜色*/  
  4.     width: 600px;  
  5.     height: 500px;  
  6.     /*如何让body自动局中*/  
  7.     margin: 0 auto;/*第一个用于上-下,第二个用于左-右 auto表示自动局中*/  
  8. }  
  9. /*盒子模型 margin ,padding,border,content*/  
  10. .div1{  
  11.     width: 90px;  
  12.     height: 90px;  
  13.     border: 1px solid blue;  
  14.     /*margin-top: 5px;  
  15.     margin-left: 5px;*/  
  16.     margin: 5px 0px 0px 5px;  
  17.     /*虽然把图片向下压了,但是div也随着变长了,div自适应的增长了*/  
  18.     /*padding-top: 20px;*/  
  19.   
  20. }  
  21.   
  22. .div1 img{  
  23.     width: 80px;  
  24.     height: 80px;  
  25.     /*把img也当做盒子,div的内边距,就是img的外边距,这样就不会出现盒子被撑破自增长了,对比上面的*/  
  26.     margin-top: 5px;  
  27.     margin-left: 5px;  
  28. }  

如果把,css中的div img属性设置为margin-left: 35px;则图片要离盒子而去,所以事先要测量好。

修改的css代码

[html] view plaincopy
  1. .div1 img{  
  2.     width: 80px;  
  3.     height: 80px;  
  4.     /*把img也当做盒子,div的内边距,就是img的外边距,这样就不会出现盒子被撑破自增长了,对比上面的*/  
  5.     margin-top: 5px;  
  6.     margin-left: 35px;  
  7. }  
0 0