0

I know this question has been asked a lot but I can't find any fix working for my sample.

I read and tried solutions stated in alignment tutorial.

I tried playing with display: inline-block; and vertial-align: middle; as much as I could.

My HTML:

<div id="header_container">
    <div id="logo"></div>                   

    <div id="menu_and_social_icons_container">
        <div id="menu_container">
            <ul>
                <li>Portfolio</li>
                <li>About</li>
                <li>Contact</li>
            </ul>
        </div><!--//menu_container-->

        <div id="social_icons_container">
            <div id="twitter_icon"></div>
            <div id="pinterest_icon"></div>
        </div><!--//social_icons_container-->
    </div><!--//menu_and_social_icons_container-->
</div><!--//header_container-->

My CSS:

/* Header */
#header_container { padding: 10px 0 30px; width: 100%; height: auto; padding-top: 3%; border-bottom: 1px solid #CBCBCB; display: inline-block; }

#logo { background: #aaa; width: 200px; height: 100px; float: left; vertical-align: middle; }

#menu_and_social_icons_container { float: right; display: inline-block; vertical-align: middle; }

#menu_container { text-transform: uppercase; font-size: 1.3em; font-style: bold; float: left; font-family: 'Lato', sans-serif; vertical-align: middle; }
#menu_container ul { list-style-type: none; }
#menu_container ul li { display: inline-block; margin-left: 20px; text-decoration: none; color: #4e918b; }
#menu_container ul li:hover { font-weight: 900; }

#social_icons_container { float: right; vertical-align: middle; }
#social_icons_container div { width: 50px; height: 50px; float: left; margin-left: 25px; }

#twitter_icon { background: #555; }
#pinterest_icon { background: #888; }

Here is a JSFiddle to make things easier.

Community
  • 1
  • 1
Arthur Rey
  • 2,990
  • 3
  • 19
  • 42

2 Answers2

1

Vertical-align won't work with Floated elements.

Remove float and try to do it with inline-block alone.

Here is the solution fiddle. http://jsfiddle.net/yvxb1os1/11/

/* Header */
#header_container { padding: 10px 0 30px; width: 100%; height: auto; padding-top: 3%; border-bottom: 1px solid #CBCBCB; display: inline-block; }

#logo { background: #aaa; width: 200px; height: 100px; display: inline-block; vertical-align: middle; }

#menu_and_social_icons_container { display: inline-block; vertical-align: middle; width: calc(100% - 204px); }

#menu_container { text-transform: uppercase; font-size: 1.3em; font-style: bold; font-family: 'Lato', sans-serif; vertical-align: middle;  display: inline-block;}
#menu_container ul { list-style-type: none; }
#menu_container ul li { display: inline-block; margin-left: 20px; text-decoration: none; color: #4e918b; }
#menu_container ul li:hover { font-weight: 900; }

#social_icons_container { float: right; vertical-align: middle;}
#social_icons_container div { display: inline-block; width: 50px; height: 50px; float: left; margin-left: 25px; }

#twitter_icon { background: #555; }
#pinterest_icon { background: #888; }
Bhuvana
  • 184
  • 5
0

Thanks to "Vertical-align won't work with Floated elements." from @user387249, I found the best solution in my case. See Justin Drury's answer for more details.

Most important change:

#logo_container:after, #menu_container:before, #social_icons_container:before { height: 100%; content: ''; font-size: 0; vertical-align: middle; display: inline-block; }

And height: 100% on my 3 floated div.

Here is the updated JSFiddle.

Community
  • 1
  • 1
Arthur Rey
  • 2,990
  • 3
  • 19
  • 42