用 CSS 创建一个大的超级菜单

Posted

技术标签:

【中文标题】用 CSS 创建一个大的超级菜单【英文标题】:Creating a large Mega Menu with CSS 【发布时间】:2012-07-26 16:55:39 【问题描述】:

我正在尝试创建一个类似于http://rackspace.com 的大型菜单。我已经尝试过在其他一些问题中给出的教程,但是其中一个使用了很多图像,其中一个不适用于他们链接到的 jQuery 版本。我想保留所有 CSS,但如果必须,我可以使用一些 javascript

我不明白如何制作复杂的大型菜单,而只会制作简单的下拉菜单。如果有人可以为我提供此代码,我将非常高兴。我现在正在学习 CSS,我认为这也可以让我提高自己的知识。

谢谢,

斯科特

【问题讨论】:

What have you tried? 我查看的另一个问题中有这个 JS Fiddle,但是当将它复制到我的实际页面时,它不起作用,另外,它使用 标签,如果我会添加很多链接,因为那会很烦人。无论如何,这里是 JS Fiddle:jsfiddle.net/hgZGS 那个fiddle使用jquery库;您确定在您的文档中包含该库吗? 【参考方案1】:

这是一个非常漂亮的解决方案,一个快速的谷歌搜索出现了。自己没有尝试过,但看起来很有希望:http://net.tutsplus.com/tutorials/html-css-techniques/how-to-build-a-kick-butt-css3-mega-drop-down-menu/

【讨论】:

我将它用于我的其他网站之一。这很好,但我正在寻找一个只有功能的空白。【参考方案2】:

你的问题太笼统了。我们可以在这里编写的简单 HTML 和 CSS 代码不会实现您想要实现的目标。

所以你可能对这个 jQuery 插件和 CSS 框架感兴趣: https://myflashlabs.github.io/24component-bars/

它可以帮助您快速轻松地创建具有许多功能的响应式大型菜单、页眉、侧边栏和页脚...这正是您想要的 :)

当已有解决方案时,您无需从一开始就自己编写代码!

【讨论】:

【参考方案3】:

您需要做的快速示例:

http://jsfiddle.net/KqZd4/

我知道这看起来不像那些,但这确实是您需要的所有功能。只需展开下拉列表中的内容

【讨论】:

对此的快速提问。当我使用它并将“.sub li”的宽度设置为 1000px 时,它会移动下一个菜单图标,如下图所示:i.imgur.com/YbUY3.png 我如何防止这种情况发生?【参考方案4】:
<li class="main_list">Electronics
<ul>
<p class="category_header">Buy Any Electronics Item And Get Flat 50% OFF</p>
<ol>
<li>Mobiles</li>
<li>Item1</li>
<li>Item2</li>
</ol>

<ol>
<li>Tablets</li>
<li>Item1</li>
<li>Item2</li>
</ol>

</ul>
</li>

添加更多你想要的

那么简单的样式

#main_menu

background-color:#1C1C1C;
float:left;
padding:0px;
width:700px;
height:50px;
line-height:50px;
margin-left:140px;
border-radius:5px;

#main_menu .main_list

color:white;
list-style-type:none;
float:left;
border-left:1px solid #666;
padding-left:27px;
padding-right:27px;


#main_menu .main_list:hover

color:#2E9AFE;

.main_list ul

background-color:white;
width:600px;
position:absolute;
left:150px;
width:700px;
padding:0px;
float:left;
padding-bottom:10px;

.main_list ul p

color:white;
background-color:#2E9AFE;
margin:0px;
text-align:left;
padding-left:10px;
font-size:20px;
font-weight:bold;

.main_list ul ol

float:left;
padding:0px;
list-style-type:none;
margin-left:30px;

.main_list ul ol li

line-height:25px;
font-weight:bold;
font-size:16px;
color:#2E9AFE;

如果你有任何问题理解这里是一个完整的教程 http://talkerscode.com/webtricks/mega-dropdown-menu-like-ecommerce-using-css.php

【讨论】:

【参考方案5】:

试试这个

@import url('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css');
* 
  box-sizing: border-box;
  font-family: sans-serif;


body 
  margin: 0;


/* Style Navigation bar */
.navbar 
  display: -webkit-flex;
  display: flex;
  background-color: #e3e3e3;


.navbar a 
  display: block;
  text-decoration: none;
  color: black;
  padding: 1.1em 1em;
  font-size: 1.1em;
  border-bottom: 3px solid transparent;
  transition: 0.1s;


.navbar > a:hover, .dropdown > a:hover 
  border-bottom-color: #FA7D19;


/* Style Mega Menu */
.dropdown-content 
  display: none;
  position: absolute;
  width: 90%;
  left: 5%;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
  overflow: hidden;


.dropdown-content .header 
  padding: 16px;
  color: #777;
  background: white;


.dropdown:hover .dropdown-content 
  display: block;


/* Create three equal columns that stacks next to each other */
.row 
  display: -webkit-flex;
  display: flex;


.column 
  width: 100%;
  padding: 10px;
  background: #f8f8f8;


.column a 
  color: black;
  padding: 16px;
  text-decoration: none;
  display: block;
  text-align: left;


.column a:hover 
  background-color: #ddd;


/* Makes the three columns stack on top of each other instead of 
   next to each other (when screen width is 600px or less) */
@media screen and (max-width: 600px) 
  .row 
    flex-direction: column;
  
<div class="navbar">
  <a href="#">Home</a>
  <div class="dropdown">
    <a href="#">Dropdown <i class="fa fa-caret-down"></i></a>
    <div class="dropdown-content">
      <div class="header">
        <h2>Mega Menu</h2>
      </div>   
      <div class="row">
        <div class="column">
          <h3>Category 1</h3>
          <a href="#">Link 1</a>
          <a href="#">Link 2</a>
          <a href="#">Link 3</a>
        </div>
        <div class="column">
          <h3>Category 2</h3>
          <a href="#">Link 1</a>
          <a href="#">Link 2</a>
          <a href="#">Link 3</a>
        </div>
        <div class="column">
          <h3>Category 3</h3>
          <a href="#">Link 1</a>
          <a href="#">Link 2</a>
          <a href="#">Link 3</a>
        </div>
      </div>
    </div>
  </div> 
  <a href="#">Pricing</a>
</div>

<div style="padding:10px 15px;">
  <h1>Create a Mega Menu</h1>
  <p>Hover over the "Dropdown" link to see the mega menu.</p>
</div>

参考:How To Create a Mega Menu

【讨论】:

以上是关于用 CSS 创建一个大的超级菜单的主要内容,如果未能解决你的问题,请参考以下文章

左侧菜单栏折叠展开效果-超级简单

具有动态内容的 Flexbox 响应式超级菜单

TailWindCSS 超级配置

超级块的定义

ext系统的超级块

eclipse 编译时间很长 工程蛮大的 但是一点点小改动编译时间就超级长~