现在我们想要调试这个标题的层级关系。试着使用如下的 CSS 作用于所有的元素。
这样我们所有的元素都会添加一个边框。可以方便的看到不同元素的位置关系。
我们再对这个样式进行改进,添加 color 和 background,并且使用 !important 来修饰(我们只在 debug 的时候用到该样式,!important 是个不错的选择,来大大减少样式冲突的可能)。
修改后的标题样式如上所示。给所有元素的 color 和 background 设置一个半透明的蓝色使得 debug 界面更加清晰,而且使用半透明的颜色有一个好处是多级嵌套的地方颜色会变深(更白或更蓝)这样我们可以知道更多的细节。
我们还可以更具自己的情况对这个 debug 样式做调整,比如标题中现在用了阴影,对视觉上有一定的影响我们可以强制去掉,还有不希望显示矢量图,最终我们获得如下的样式:
工具/材料notepad++
浏览器
打开Notepad++,先输入个页面框架<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<hade>
</hade>
<body>
</body>
框架好了,那么就该定义页面的title,关键词keyword,和描述description<meta charset="UTF-8" content="text/html" http-equiv="content-type">
<title>纯css二级导航下拉菜单</title>
<meta name="keyword" content="搜狗略懂">
<meta name="description" content="描述">
这些内容只能在<head></head>中完成。
定义页面使用的css样式,也是需要在<head>里定义的。<style type="text/css">
* {
margin:0
padding:0
}
.jiao ul li a:hover{
color:#red
}
ul, li {
list-style:none
}
a {
text-decoration:none
}
.jiao {
border:5px solid #pink
border-right:none
overflow:hidden
float:left
margin:200px 0 0 600px
}
.jiao ul li ul li a {
border-right:solid
border-top:2px dotted #666
background:#black
}
.jiao>ul>li { float:left}
.jiao ul li a { width:150pxheight:80pxtext-align:centerline-height:100pxdisplay:blockborder-right:5px solid #redbackground:#redcolor:#red}
.jiao ul li ul { position:absolutedisplay:none}
.jiao ul li:hover ul{ display:block}
.jiao>ul>li>ul>li { float:none}
<!--nav>ul只选择nav下一级里面的ul元素
nav ul选择nav内所包含的所有ul元素
nav>ul比nav ul限定更严格,必须后面的元素只比前面的低一个级别。
这里根据你的需求来自己定义。
-->
</style>
添加一个DIV标签,在页面中划分出一个块来,用来显示。div中所用的样式为刚才咱们声明的样式“jiao”这个盒子来描述
然后使用无序标签<ul>+样式<li>来实现模块。<div class="jiao">
<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>
</div>
放上全部的代码吧,可以参考一下啊,<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml">//允许你通过一个网址来识别你的标记
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />
<meta name="keyword" content="利用css实现下拉菜单">
<meta name="description" content="搜狗略懂、css分享">
<title>css实现下拉导航栏菜单</title>
<style type="text/css">
* {
margin:0
padding:0
}
.jiao ul li a:hover{
color:#red
}
ul, li {
list-style:none
}
a {
text-decoration:none
}
.jiao {
border:5px solid #pink
border-right:none
overflow:hidden
float:left
margin:200px 0 0 600px
}
.jiao ul li ul li a {
border-right:solid
border-top:2px dotted #666
background:#black
}
.jiao>ul>li { float:left}
.jiao ul li a { width:150pxheight:80pxtext-align:centerline-height:100pxdisplay:blockborder-right:5px solid #redbackground:#redcolor:#red}
.jiao ul li ul { position:absolutedisplay:none}
.jiao ul li:hover ul{ display:block}
.jiao>ul>li>ul>li { float:none}
<!--nav>ul只选择nav下一级里面的ul元素
nav ul选择nav内所包含的所有ul元素
nav>ul比nav ul限定更严格,必须后面的元素只比前面的低一个级别。
这里根据你的需求来自己定义。
-->
</style>
</head>
<body>
<div class="jiao">
<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>
</ul>
</div>
</body>
</html>
如果要添加更多的菜单,只需要后边继续添加<ul>/<li>即可
特别提示写代码过程中一定要记得换行,开头留空,否则过后找东西,连你自己都不知道写的是什么。何谈从哪里找起?
上一小节给大家分享了平行四边形的实现方法,此时我们来说一下切角效果的实现方法。实现切角效果需要掌握的几个点包括: css渐变、background-size、条纹背景
直角切角
先实现一个简单的,比如让一个矩形,右下角切掉。实现该功能可以使用强大的渐变功能,有了渐变基础,应该不难理解。
注:background: #58a不是必须的,加上它是为了将其作为回退机制。
实现两个切角,左右下角各一个。一层渐变肯定不行,需要两层。按想法一步步实现,首先可能会这样写,想学习更多案例效果的小伙伴可以加我Q群:142991222,一起探索更多前端干货。
可以看到,效果并没有实现,原因是两层渐变都会填满整个元素,因此它们会相互覆盖。需要让它们缩小一点,使用background-size让每层渐变分别只占据整个元素的一半。
依然没有达到效果,这是因为没有添加background-repeat属性,因而每层渐变图案各自平铺了两次。
好了,现在实现了。如果要四个角的话,就要四层渐变了。
就这样一个切角效果就实现了,后还会补充更多多边形效果,大家多多支持,多多鼓励!