<div class="nav">
<ul>
<li><a href="#">栏目一</a></li>
<li><a href="#">栏目二</a></li>
<li><a href="#">栏目三</a></li>
<li><a href="#">栏目四</a></li>
<li><a href="#">栏目五</a></li>
</ul>
</div>
现在为nav添加样式,首先去掉默认的margin和padding,再去掉<ul><li>标签的list-style样式和<a>标签的默认下划线。接下来再添加适当的样式(根据实际需要添加)进行美化,如一下样式:
<style type="text/css">
* { margin:0padding:0}
ul, li { list-style:none}
a { text-decoration:none}
.nav { border:2px solid #cccborder-right:noneoverflow:hiddenfloat:leftmargin:100px 0 0 300px}
.nav ul li { float:left}
.nav
ul li a
{ width:120pxheight:40pxtext-align:centerline-height:40pxdisplay:blockborder-right:2px
solid #cccbackground:#eeecolor:#666}
.nav ul li a:hover{ color:#f00}
</style>
像这样,一个菜单横向菜单就建好了,下面给栏目一,栏目二,栏目三,添加二级下拉菜单
<div class="nav">
<ul>
<li><a href="#">栏目一</a>
<ul>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
</ul>
</li>
<li><a href="#">栏目二</a>
<ul>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
</ul>
</li>
<li><a href="#">栏目三</a>
<ul>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
<li><a href="#">二级栏目</a></li>
</ul>
</li>
<li><a href="#">栏目四</a></li>
<li><a href="#">栏目五</a></li>
</ul>
</div>
添加完二级栏目后,现在开始添加css样式,首先给<li>标签下的<ul>标签添加相对定位,再去除之下<li>标签的做浮动样式,再适当修改<a>标签,如一下样式:
.nav ul li ul { position:absolute}
.nav ul li ul li { float:none}
.nav ul li ul li a { border-right:noneborder-top:1px dotted #cccbackground:#f5f5f5}
接下来隐藏掉二级下来菜单,并给它添加鼠标滑动效果,使得当鼠标滑动到主栏目时,二级下来菜单显示,样式如下:
.nav ul li ul { position:absolutedisplay:none}
.nav ul li ul li { float:none}
.nav ul li ul li a { border-right:noneborder-top:1px dotted #cccbackground:#f5f5f5}
.nav ul li:hover ul{ display:block}
至此,横向二级下拉菜单就制作完成了,这里附加上全部代码
具体解释见这里:http://www.w3school.com.cn/css/pr_class_position.asp
下面我从实际使用中说一下:
【static】定位模式用的不多,既然他的意思是没有定位,通常就不实用他。但css是层叠样式表,所谓层叠,意思就是哪个属性离当前html元素最近就执行那个属性。所以,同级选择器时css的行越往下权重越高。id比class的权重高。行内css权重大于页内css大于文件css。那么,如果起初定义过定位属性,后面又需要取消定位属性,在保证css结构的情况下,可以用这个属性来重置定位(取消起初定义的定位)。
【绝对定位absolute】绝对定位的意思是,不使用外边距和内边距修饰的定位。所以,你可以看到外边距是:margin-【left、right、top、bottom】,内边距是padding-【left、right、top、bottom】,而绝对定位只有【left、right、top、bottom】,所以就是绝对定位,绝对定位默认情况下是参照浏览器的窗口大小的。但,如果其父级元素有定位属性,则参照其父级元素的左上角。绝对定位会丢失元素自身的宽高值和原始位置,漂浮于其他层上方或下方。
【相对定位relative】相对定位是参照附近的元素进行定位,他可以使用内外边距,也可以使用绝对的方位值,和绝对定位不同的是,相对定位会保留元素自身的尺寸位置,而不浮动定位。
【关于绝对定位和相对定位】通常建议:
如果是全屏内容,可以直接使用绝对定位,如弹窗、浮动回到顶部、客服等
如果是希望固定区域内自由布局,则需要对父级指定相对定位属性(或者绝对定位属性)。
绝对定位的元素和其他元素出现了遮挡,可以为其他元素设置相对定位属性,同时设置z-index的值。
【固定定位fixed】fixed是把某个元素按照固定的位置呈现,它也是参照浏览器窗口的,和绝对定位差不多,但又不同,不同之处在于,他不随窗口的滚动移动位置。常用于固定导航条和回到顶部等模块中。
具体的,你可以写一个练习文件,中间放置一个960*960的div,设置下背景色,居中对齐,里面放置9个小div,设置宽度高度,外面放置4个div,也设置宽高。
中间的大div给予相对定位属性,里面的9个小div设置绝对定位,分别调整9个div为左上角、顶部居中、右上角、右侧垂直居中、右下角、底部居中、左下角、左侧垂直居中和绝对居中。
外部的四个div分别尝试使用绝对定位、相对定位和固定定位。
最后使用static重置一下。然后找一个游戏界面(自由零散布局),大致看下他的界面布局,理解下如何布局,然后看一些UI界面(自由规矩布局),理解下,最后回到网页(绝对规矩布局)。理解了这些,就可以用html当PS玩了。
float两个元素绝对靠紧,需要使用到margin和padding重置(有专门的css reset,来重置html元素的默认属性,html默认是有属性的,每个浏览器都不一样),重置后试试,实在不行尝试下使用 * {margin:0padding:0}(不建议使用)。