Reputation: 2555
I am looking to display my logo in the middle of my centered top navigational menu. As it stands right now, I have the logo sitting on top of it. Would it be easiest if I split the menu items into different containers and then used margins and padding to accomplish this? Or is there a more efficient way?
Here is a JS Fiddle showing my current scenario. JS Fiddle
Here is my current CSS:
.container {
width:960px;
margin:0 auto;
}
header, main{
display: block;
}
.container-narrow {
margin:0 auto;
width:640px;
}
h1.logo {
width:300px;
margin:0 auto;
text-indent:100%;
overflow:hidden;
white-space:nowrap;
}
body h1 {
background:url(http://placehold.it/300x80) no-repeat;
height:80px;
}
body section.menu,body header.top-section {
background:url(../img/menu-bg.png) repeat;
padding:60px 0;
}
body header.top-section {
padding:40px 0;
position:absolute;
top:0;
left:0;
width:100%;
z-index:50;
}
#menu_container {
letter-spacing: 2px;
font-family:'intro_regular', sans-serif;
font-size: 1.3em;
line-height: 1.3em;
position: fixed;
margin: 0;
/*margin-top: -70px;
position: relative;*/
z-index: 20;
left: 0;
right: 0;
text-align: center;
padding: 6px;
height: 40px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
box-sizing: border-box;
}
#menu_container .nav ul { list-style: none; overflow: auto; }
#menu_container .nav li { float: left; padding: 0.4em 0.8em; font-size: 0.9em; line-height: 1em; cursor: pointer; }
#menu_container .nav li a { text-decoration: none; text-transform: uppercase; }
#menu_container .nav li:hover a,
#menu_container .nav li.active a { color: #fff !important; }
#menu_container .nav li.contact_screen:hover a,
#menu_container .nav li.contact_screen.active a { color: white !important; }
#menu_container .nav li a { color: #000000; }
#menu_container .nav li a { transition: all 400ms; -webkit-transition: all 400ms; }
#menu_links { display: inline-block; }
#menu_button { display: none; color: white; cursor: pointer; text-align: right; padding: 0 0.8em; }
#menu_button i { font-size: 1.3em; margin-right: -0.3em; color:#bc9321;}
#menu_links li:first-child {}
Upvotes: 1
Views: 4283
Reputation: 1
The issue I run into with this setup is that when you want to switch to smaller screens - this wouldnt work as well as your logo is still placed in the middle instead of allowing them stack block...
Upvotes: 0
Reputation: 2160
You could stick your logo class as an li in the middle.
<div id="menu_links" class="nav">
<ul>
<li class="home_link"><a href="#splash_wrapper">Home</a></li>
<li class="menus_link"><a href="#menus_wrapper">Menus</a></li>
<li class="logo">Restauraunt</li
<li class="contact_link"><a href="#contact_wrapper">Contact</a></li>
<li class="reservations_link"><a href="#reservations_wrapper">Reservations</a></li>
</ul>
</div>
Then change h1.logo to li.logo.
Upvotes: -1
Reputation: 5065
Have you considered CSS3 display: flex?
http://css-tricks.com/snippets/css/a-guide-to-flexbox/
Upvotes: 1
Reputation: 1335
I ran into this very scenario recently. I got it working by positioning the logo absolutely, then using :nth-child
selectors to target the elements on either side of the logo and add margins to make room.
:nth-child
is great, but you might want a fallback set of styles for older browsers .
Upvotes: 2