纯CSS制作的响应式折叠菜单分享

不合身的衣服我可以凑合着穿,不合适的人我却不能勉强去留。早安!新的一天,好运正在派件,请保持心情舒畅,早安。

这个菜单能居左、居中和居右对齐,不像之前文章提到的菜单需要靠点击在显示和隐藏之间进行切换。它也有一个标记显示激活/当前菜单项,并且它能作用在所有移动平台和包括IE在内的所有桌面浏览器。

首先,看看Demo的效果:Demo
一、 目的

本好代码教程的目的是展示如何将规律的列表菜单变成一个较小的显示下拉菜单。

这个技巧在由许多链接组成的导航上非常有用,例如下面的截图,可以将所有按钮压缩成一个优雅的下拉。

二、Nav HTML标记

XML/HTML Code复制内容到剪贴板
  1. <navclass="nav">
  2. <ul>
  3. <liclass="current"><arel="nofollow noopener noreferrer" href="#">Portfolio</a></li>
  4. <li><arel="nofollow noopener noreferrer" href="#">Illustration</a></li>
  5. <li><arel="nofollow noopener noreferrer" href="#">WebDesign</a></li>
  6. <li><arel="nofollow noopener noreferrer" href="#">PrintMedia</a></li>
  7. <li><arel="nofollow noopener noreferrer" href="#">GraphicDesign</a></li>
  8. </ul>
  9. </nav>

三、CSS

CSS Code复制内容到剪贴板
  1. /*nav*/
  2. .nav{
  3. position:relative;
  4. margin:20px0;
  5. }
  6. .navul{
  7. margin:0;
  8. padding:0;
  9. }
  10. .navli{
  11. margin:05px10px0;
  12. padding:0;
  13. list-style:none;
  14. display:inline-block;
  15. }
  16. .nava{
  17. padding:3px12px;
  18. text-decoration:none;
  19. color:#999;
  20. line-height:100%;
  21. }
  22. .nava:hover{
  23. color:#000;
  24. }
  25. .nav.currenta{
  26. background:#999;
  27. color:#fff;
  28. border-radius:5px;
  29. }

四、居中和右对齐

正如前面提到的,可以同过text-align属性改变对齐方式。

CSS Code复制内容到剪贴板
  1. /*rightnav*/
  2. .nav.rightrightul{
  3. text-align:rightright;
  4. }
  5. /*centernav*/
  6. .nav.centerul{
  7. text-align:center;
  8. }

五、IE的支持

在IE 8以及更早版本中,是不支持HTML5的nav标签和媒体查询。引入css3-mediaqueries.js(或 respond.js) 和 html5shim.js 提供后备的兼容处理。如果你不想用html5shim.js,可以用div代替nav

CSS Code复制内容到剪贴板
  1. <!--[ifltIE9]>
  2. <scriptsrc="http://css3-mediaqueries-js.googlecode.com/files/css3-mediaqueries.js"></script>
  3. <scriptsrc="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
  4. <![endif]—>

六、响应式

现在有趣的部分来了——媒体查询菜单的响应性。如果你对响应式设计不熟悉,可以阅读之前我写的关于responsive design (后续翻译)and media query的文章。

在600 px断点,我把nav元素设置成相对定位,这样,我就能对ul元素进行绝对定位了。通过display:none,我隐藏了所有的li元素,但保持当前的li元素以块元素显示。然后,当鼠标悬浮于nav元素时,将所有li添加display:block.为了标记当前的li元素,我会添加一个图标。对于居中和右对齐,对定位的ul元素使用left和right属性。看看最终的Demo效果:

CSS Code复制内容到剪贴板
  1. @mediascreenand(max-width:600px){
  2. .nav{
  3. position:relative;
  4. min-height:40px;
  5. }
  6. .navul{
  7. width:180px;
  8. padding:5px0;
  9. position:absolute;
  10. top:0;
  11. left:0;
  12. border:solid1px#aaa;
  13. background:#fffurl(images/icon-menu.png)no-repeat10px11px;
  14. border-radius:5px;
  15. box-shadow:01px2pxrgba(0,0,0,.3);
  16. }
  17. .navli{
  18. display:none;/*hideall<li>items*/
  19. margin:0;
  20. }
  21. .nav.current{
  22. display:block;/*showonlycurrent<li>item*/
  23. }
  24. .nava{
  25. display:block;
  26. padding:5px5px5px32px;
  27. text-align:left;
  28. }
  29. .nav.currenta{
  30. background:none;
  31. color:#666;
  32. }
  33. /*onnavhover*/
  34. .navul:hover{
  35. background-image:none;
  36. }
  37. .navul:hoverli{
  38. display:block;
  39. margin:005px;
  40. }
  41. .navul:hover.current{
  42. background:url(images/icon-check.png)no-repeat10px7px;
  43. }
  44. /*rightnav*/
  45. .nav.rightrightul{
  46. left:auto;
  47. rightright:0;
  48. }
  49. /*centernav*/
  50. .nav.centerul{
  51. left:50%;
  52. margin-left:-90px;
  53. }
  54. }

到此这篇关于纯CSS制作的响应式折叠菜单分享就介绍到这了。青春啊,永远是美好的,可是真正的青春,只属于这些永远力争上游的人,永远忘我劳动的人,永远谦虚的人。更多相关纯CSS制作的响应式折叠菜单分享内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
css让页脚保持在底部位置的四种方案

Flex布局史上最简单使用语法教程

新的CSS 伪类函数 :is() 和 :where()示例详解

纯CSS打字动画的如何实现示例

CSS浮动引起的高度塌陷问题