I am trying to customise the horizon dashboard(openstack). In dashboard there is one Nov-accordians menu(please see the following image), I want to hide it and show only if mouse hovered over menu area it. Here nav_accordion is css class. Please tell me what code should be added in following css file to get above effect.
I want to show the following menu only if we hovering mouse overit. This menu is on top-left.
When hovering mouse over menu area menu should appear.
Following code is from github openstack(icehouse)
accordians_nav.css
@accordionBorderColor: #e5e5e5;
.outline(@outline) {
outline: @outline;
-moz-outline-style: @outline;
}
.nav_accordion {
//N: hide the nav accordion menu
display:none;
background-color: #f9f9f9;
color: #6e6e6e;
margin: 0px 0px;
dt, dd {
padding: 10px 0 10px 0;
line-height: 18px;
h4 {
border: 1px solid #BBBBBB;
border-right: 0;
border-bottom: 0;
background-color: #f0f0f0;
background-repeat: no-repeat;
background-position: 96% center;
background-image: url(/static/dashboard/img/right_droparrow.png);
padding: 10px 0 10px 0;
line-height: 16px;
margin-top: 0;
color: #6e6e6e;
font-weight: bold;
text-rendering: optimizelegibility;
max-width: 193px;
padding-right: 16px;
cursor: pointer;
div {
color: #6e6e6e;
font-size: 14px;
margin: 0 0 0 14px;
display: block;
font-weight: bold;
.outline(none);
overflow: hidden;
text-overflow: ellipsis;
max-width: 177px;
}
}
h4.active {
border-bottom: 1px solid #BBBBBB;
background-image: url(/static/dashboard/img/drop_arrow.png);
}
// N: This will change in the look of list
a {
color: #6e6e6e;
font-size: 16px;
margin: 0 0 0 14px;
padding: 0;
display: block;
font-weight: bold;
.outline(none);
text-decoration: none;
}
// TH
ul {
list-style: none outside none;
margin: 10px 0 0;
width: 222px;
}
// This is list for showing dashboard and panel
li {
a {
width: 185px;
padding: 10px;
display: block;
line-height: 18px;
margin-left: 20px;
font-weight: normal;
font-size: 13px;
}
a.active {
background: #fff;// this will change the color of active panel
border-top: 2px solid @accordionBorderColor;
border-left: 4px solid #d93c27;// this will change the color of left side of active panel
border-bottom: 2px solid @accordionBorderColor;
margin-left: 18px;// It will shift the panel rightside, so please check all the panel are aligned or not
.border-radius(5px 0 0 5px);// this will round the corner of panel
//for more info http://css3pie.com/demos/border-radius/
}
a:last-child {
margin-bottom: 8px;
}
}
}
dd {
padding: 0;
font-size: 12px;
}
dt {
border-top: 1px solid #BBBBBB;
background-color: @accordionBorderColor;
background-repeat: no-repeat;
background-position: 96% center;
background-image: url(/static/dashboard/img/right_droparrow.png);
padding-right: 16px;
max-width: 217px;
cursor: pointer;
div {
color: #6e6e6e;
font-size: 14px;
margin: 0 0 0 14px;
padding: 0;
font-weight: bold;
.outline(none);
overflow: hidden;
text-overflow: ellipsis;
max-width: 201px;
}
}
dt.active {
background-image: url(/static/dashboard/img/drop_arrow.png);
}
dt:first-child {
border-top: 0;
}
dt a {
text-decoration: none;
}
}
_accordion_nav.html
{% load horizon i18n %}
{% load url from future %}
<div>
<dl class="nav_accordion">
{% for dashboard, panel_info in components %}
{% if user|has_permissions:dashboard %}
{% if dashboard.supports_tenants and request.user.authorized_tenants or not dashboard.supports_tenants %}
<dt {% if current.slug == dashboard.slug %}class="active"{% endif %}>
<div>{{ dashboard.name }}</div>
</dt>
{% if current.slug == dashboard.slug %}
<dd>
{% else %}
<dd style="display:none;">
{% endif %}
{% for heading, panels in panel_info.iteritems %}
{% with panels|has_permissions_on_list:user as filtered_panels %}
{% if filtered_panels %}
{% if heading %}
<div><h4><div>{{ heading }}</div></h4>
{% endif %}
<ul>
{% for panel in filtered_panels %}
<li><a href="{{ panel.get_absolute_url }}" {% if current.slug == dashboard.slug and current_panel == panel.slug %}class="active"{% endif %} >{{ panel.name }}</a></li>
{% endfor %}
</ul>
{% if heading %}
</div>
{% endif %}
{% endif %}
{% endwith %}
{% endfor %}
</dd>
{% endif %}
{% endif %}
{% endfor %}
</dl>
</div>
Since you're saying you want the menu to show when you hover the area it uses to be, you should try this.
.nav_accordion {
opacity: 0;
}
.nav_accordion:hover {
opacity: 1;
}
Be sure to remove your display: hidden;
because hover won't apply on hidden elements.
Example: https://jsfiddle.net/qx7c3p72/ ( move your mouse to the upper left corner of the result window )