当前位置:   article > 正文

响应式菜单--@media screen的应用_@media screen用法

@media screen用法

在不同分辨率的窗口下,菜单显示不同的样式

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. <style type="text/css">
  9. @font-face{
  10. font-family:'icon-font';
  11. src: url('font/flat-ui-icons-regular.ttf'), url('font/flat-ui-icons-regular.eot'), url('font/flat-ui-icons-regular.woff'), url('font/flat-ui-icons-regular.svg');
  12. }
  13. *{
  14. margin: 0%;
  15. padding: 0%;
  16. }
  17. body{
  18. background: #FFF;
  19. margin: 5%;
  20. font-family:"Helvetica Neue", sans-serif;
  21. }
  22. #page-nav{
  23. position: relative;
  24. }
  25. #page-nav-list li{
  26. display: block;
  27. float: left;
  28. width: 16.66%;
  29. }
  30. #page-nav-list li a{
  31. display: block;
  32. text-decoration: none;
  33. /* 文字垂直居中,高度为定值*/
  34. text-align: center;
  35. font-size: 1.2em;
  36. line-height: 4em;
  37. color:#FFF;
  38. }
  39. #page-nav-list li a::before{
  40. font-family: 'icon-font';
  41. margin-left: -1em;
  42. margin-right: 1em;
  43. /*content分开写*/
  44. }
  45. #page-nav-list li:nth-child(1) a{
  46. background:#1ABC9C;
  47. }
  48. #page-nav ul li:nth-child(2) a{
  49. background:#2ECC71;
  50. }
  51. #page-nav ul li:nth-child(3) a{
  52. background:#F1C40F;
  53. }
  54. #page-nav ul li:nth-child(4) a{
  55. background:#E67E22;
  56. }
  57. #page-nav ul li:nth-child(5) a{
  58. background:#E74C3C;
  59. }
  60. #page-nav ul li:nth-child(6) a{
  61. background:#9B59B6;
  62. }
  63. #page-nav ul li a:hover{
  64. background:#333;
  65. }
  66. #page-nav ul li:nth-child(1) a::before{
  67. content:"\e62e";
  68. }
  69. #page-nav ul li:nth-child(2) a::before{
  70. content:"\e62a";
  71. }
  72. #page-nav ul li:nth-child(3) a::before{
  73. content:"\e631";
  74. }
  75. #page-nav ul li:nth-child(4) a::before{
  76. content:"\e644";
  77. }
  78. #page-nav ul li:nth-child(5) a::before{
  79. content:"\e62d";
  80. }
  81. #page-nav ul li:nth-child(6) a::before{
  82. content:"\e629";
  83. }
  84. /* 添加媒体查询,屏幕宽度小于980时,图标显示在文字的上方
  85. after元素转换为块元素,调整高度*/
  86. @media screen and (max-width: 979px) {
  87. #page-nav ul li a::before{
  88. display:block;
  89. margin: 0 auto;
  90. line-height: 1;
  91. padding-top: 2em;
  92. }
  93. }
  94. /* 当屏幕宽度小于768像素时,隐藏文字,只显示图标,并将菜单的图标从动态的4em变为
  95. 固定的80px,此时图标的文字大小也不能使用em了,因为在父元素li的font-size为0的
  96. 情况下,任何大小的em的数值均为0,在此将其设置为20px*/
  97. @media screen and (max-width: 767px){
  98. #page-nav ul li a{
  99. font-size: 0;
  100. height: 80px;
  101. }
  102. #page-nav ul li a::before{
  103. font-size: 20px;
  104. line-height: 80px;
  105. text-align: center;
  106. margin: 0%;
  107. padding: 0%; /*继承padding-top: 2em;重置*/
  108. }
  109. }
  110. /* 480px时,将菜单显示为一个菜单图标,点击时展开全部的图标,使用JS动态吃哈如图标*/
  111. /* 默认情况下不显示*/
  112. #menutoggle{
  113. display:none;
  114. }
  115. @media screen and (max-width: 480px) {
  116. #menutoggle{
  117. display:block;
  118. width: 100%;
  119. height: 60px;
  120. text-align: left;
  121. text-indent: 60px;
  122. font-size: 1.5em;
  123. color: #FFF;
  124. cursor: pointer;
  125. background:#000;
  126. border:none;/*去掉button的边框*/
  127. position: relative;/* 用于按钮图标的定位*/
  128. }
  129. /* 绘制menu之前的三条横线*/
  130. #menutoggle::after{
  131. content: '';
  132. width:22px;
  133. box-sizing: border-box;
  134. box-shadow: 0 10px 0 2px #FFF, 0 20px 0 2px #FFF, 0 30px 0 2px;
  135. position: absolute;
  136. left: 20px;
  137. top: 10px;
  138. }
  139. /*隐藏列表,并将li横向显示*/
  140. #page-nav-list{
  141. display: none;
  142. }
  143. #page-nav-list li{
  144. width: 100%;/* 继承上一步的样式,只有图标纵向排列*/
  145. }
  146. /* 显示图标和文字,图标在左,文字在右*/
  147. #page-nav ul li a{
  148. text-align:left;
  149. font-size:1.2em;
  150. text-indent:3.5em;
  151. }
  152. #page-nav ul li a::before{
  153. position:absolute;
  154. left:-2em;
  155. }
  156. /* + 代表相邻, 创建显示类,点击menu之后菜单显示或者消失*/
  157. #menutoggle.active + ul{
  158. display: block;
  159. }
  160. }
  161. </style>
  162. </head>
  163. <body>
  164. <nav id="page-nav">
  165. <ul id="page-nav-list">
  166. <li><a href="" id="home">Home</a></li>
  167. <li><a href="" id="photo">Photo</a></li>
  168. <li><a href="" id="user">User</a></li>
  169. <li><a href="" id="document">Document</a></li>
  170. <li><a href="" id="chat">Chat</a></li>
  171. <li><a href="" id="video">Video</a></li>
  172. </ul>
  173. </nav>
  174. <script type="text/javascript">
  175. var nav = document.getElementById('page-nav');
  176. var navlist = document.getElementById('page-nav-list');
  177. nav.insertAdjacentHTML('afterBegin','<button id = "menutoggle">Metu</button>')
  178. var menutoggle = document.getElementById('menutoggle');
  179. menutoggle.onclick = function() {
  180. //navlist.style.display只能判断将dispaly直接写于标签的情况,如<ul style="display :none">
  181. //而后者可以对该元素的所有的css样式进行计算之后加以判断,匹配所有none的情况
  182. if(window.getComputedStyle(navlist).display === "none"){
  183. menutoggle.className = "active";
  184. }else{
  185. menutoggle.className = "";
  186. }
  187. }
  188. </script>
  189. </body>
  190. </html>





声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/335225
推荐阅读
相关标签
  

闽ICP备14008679号