web实训——3.19
2019-03-20 12:03
232 查看
主要内容:
继续以案例的方式
1.导航栏(变换菜单 多级菜单)
2.JQuery基础------js框架,简单应用,代码量少。
js10行,JQuery2行搞定。
作业要求:
导航栏
方法一:div方法的实现
完整代码:
[code]<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style type="text/css"> a{ color: #FFFF99; text-decoration: none; } a:hover{ color: #FFFFFF; text-decoration: underline; } #top{ padding: 10px 10px 0; font-size: 12px; font-weight: bold; margin: 1px 0 0; list-style: none; border-bottom: 8px solid #DCE6F4; overflow: hidden; background-color: #33b5e5; } .top-nav{ float: left; margin-right: 1px; background-color: #333333; position: relative; width: 80px; height: 20px; text-align: center; line-height: 20px; } .top-nav span{ position: absolute; visibility: hidden; } .top-nav:hover span{ line-height: 20px; background: #DDDDDD; color: #666666; display: block; width: 80px; text-align: center; padding-top: 2px; visibility: visible; top:0; left: 0; color:#FFFFFF; background:#DC4E1B; } </style> </head> <body> <div id="top"> <div class="top-nav"><a href="123">首页<span class="span">Home</span></a></div> <div class="top-nav"><a href="123">课堂大厅<span class="span">Course</span></a></div> <div class="top-nav"><a href="123">学习中心<span class="span">Learn</span></a></div> <div class="top-nav"><a href="123">关于我们<span class="span">About</span></a></div> </body> <html>
方法二:ul li方法的实现
完整代码:
[code]<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>变换菜单</title> </head> <style type="text/css"> a{ color: #FFFF99; text-decoration: none; } a:hover{ color: #FFFFFF; text-decoration: underline; } .top-nav{ padding: 10px 10px 0; font-size: 12px; font-weight: bold; margin: 1px 0 0 0; list-style: none; border-bottom: 8px solid #DCE6F4; overflow: hidden; background-color: #33b5e5; } .top-nav li{ float: left; margin-right: 1px; } .top-nav li a{ position: relative; z-index: 0; line-height: 20px; text-decoration: none; background: #DDDDDD; color: #666666; display: block; width: 80px; text-align: center; } .top-nav li a span{ position: absolute; visibility: hidden; } .top-nav li a:hover span{ line-height: 20px; text-decoration: none; background: #DDDDDD; color: #666666; display: block; width: 80px; text-align: center; padding-top: 2px; visibility: visible; top:0; left: 0; color:#FFFFFF; background:#DC4E1B; } </style> <body> <div id="top"> <ul class="top-nav"> <li class="top-nav"><a href="#">首页<span>Home</span></a></li> <li class="top-nav"><a href="#">课堂大厅<span>Course</span></a></li> <li class="top-nav"><a href="#">学习中心<span>Learn</span></a></li> <li class="top-nav"><a href="#">关于我们<span>About</span></a></li> </ul> </div> </body> </html>
知识点总结:
css的定位属性:
定位和没有定位:
css的position属性值有static(默认值),relative,absolute,fixed。分为两大类:positioned(relative,absolute,fixed)和unpositioned(static)。
1.static:默认值。表示该元素没有定位。
2.relative:相对定位。如果将元素设置为相对定位,可以作为绝对定位元素的参照物,对象不可层叠。
3.Fixed:固定定位。固定在视窗(即浏览器显示的整个页面)的某个位置,可以通过设置top,bottom,left,right属性设置相对于视窗的位置。
4.absolute:绝对定位。相对于最近的positioned祖先元素偏移(当该元素的父元素都不是positioned,则相对于body元素偏移)。通过设置top,bottom,left,right属性设置偏移。
绝对定位可以这样理解:
|
1.HTML页面是地面,绝对定位的元素则把它从文档流里脱离出来,并且默认盖在HTML页面上面 |
2.当有多个absolute元素重叠时,怎样决定他们的上下级关系,这就需要一个特殊的属性:z-index,可以把它理解成这个绝对定位元素在第几层。默认z-index=0,即该元素就盖在地面上,z-index=1则表示该元素在地面下面,z-index越高,则表示该元素在越高层。 |
relative 相对定位实例:
[code]!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <style type="text/css"> html body { margin: 0px; padding: 0px; } #parent { width: 200px; height: 200px; border: solid 5px black; padding: 0px; position: relative; background-color: green; top: 15px; left: 15px; } #sub1 { width: 100px; height: 100px; background-color: blue; } #sub2 { width: 100px; height: 100px; background-color: red; } </style> </head> <body> <div id="parent"> <div id="sub1"> </div> <div id="sub2"> </div> </div> </body> </html>
这是一个嵌套的DIV,一个父Div Parent, 包含两个子DIV Sub1 和 Sub2,由于两个子DIV没有设置任何Position属性,它们处于它们应当的位置。默认位置如下图:
当我们修改一下Div Sub1 的样式:
[code]#sub1 { width: 100px; height: 100px; background-color: blue; position: relative; top: 15px; left: 15px; }
结果如下图:我们会发现Sub1进行了 20000 偏移,并不影响Sub2的位置,同时遮盖住了Sub2,切记偏移并不是相对于 Div Parent的,而是相对于Sub1 原有的位置。
如果我们把Sub1 的同级Div Sub2 也设置一个相对位置,会产生什么结果?我们来看一下。
[code]#sub2 { width: 100px; height: 100px; background-color: red; position: relative; top: 10px; left: 10px; }
结果如下图:
Sub2也根据原有位置进行了偏移,同时遮盖住了Sub1,也不会影响Sub1的位置。
absolute 绝对定位实例:
绝对定位在使用当中比较容易出错的,有几个需要注意的地方,将上面的代码还原,我们为Sub1 增加一个绝对定位。
[code]#sub1 { width: 100px; height: 100px; background-color: blue; position: absolute; top: 15px; left: 15px; }
结果如下:
我们发现,由于我们对Sub1进行了绝对定位,Sub1的位置发生了偏移,而同级Div Sub2,则占据了Sub1的位置,并且Sub1遮挡了Sub2.
下面,把Sub2 也增加绝对定位:
[code]#sub2 { width: 100px; height: 100px; background-color: red; position: absolute; top: 10px; left: 10px; }
结果如下:
我们会发现,Sub2 也进行了偏移,并且遮盖住了Sub1。
这时候,我们会发现问题,两个子Div 都设置了 绝对定位,他们是相对于哪个元素发生了偏移呢?
这分两种情况:
1、如果Sub1 的父元素或者祖父元素,设置了Position属性,并且属性值为 absolute 或 relative的时候,那么子元素相对于父元素来进行定位。比如我们例子中最外层Div Parent设置了相对定位属性,因此Sub1 和 Sub2 两个Div 就根据 Div Parent 来进行定位。但是根据Parent那个定位点进行定位呢?答案是:如果parent设定了margin,border,padding等属性,那么这个定位点将忽略padding,将会从padding开始的地方(即只从padding的左上角开始)进行定位。
2、如果sub1不存在一个有着position属性的父对象,那么那就会以body为定位对象,按照浏览器的窗口进行定位。
我们将例子中的Parent 的Position 属性删除,再来看一下结果:
由于两个子div没有找到有Position属性的父元素,则以Body进行定位,由于图片原因,请不要误以为是相对于Parent的。
[code]
[code]
[code]