Layout issues with WordPress header elements using CSS floats in Internet Explorer

I’m trying to arrange three header components horizontally using CSS float properties but running into problems. Here’s what I want to achieve:

  1. Company logo positioned on the left side
  2. Main menu (created as an HTML ul element) placed next to the logo
  3. Newsletter signup section on the far right with text above and input field below

Each element has its own container div, but I can’t get the floating to work correctly. Right now I’m using absolute positioning but it breaks when users resize their browser window. I’ve temporarily added a table inside the div but I really want a clean CSS-only approach.

The logo floats left fine and the signup form floats right without issues. The problem is with the middle navigation menu. When I float it left, it either sticks to the very left edge or if I add a clear property, it drops down below the other elements instead of staying in the middle.

Has anyone dealt with this kind of three-column header layout before? What’s the best way to handle this?

Three column float layouts are a pain, especially across different screen sizes. Skip wrestling with CSS floats - automate the whole header layout instead.

You’re manually positioning elements that should adjust dynamically based on content and screen size. You need a system that detects your WordPress header structure and applies positioning rules automatically.

I’ve built similar headers for multiple sites using automated workflows that monitor page structure and adjust CSS in real time. The workflow catches overlapping or broken elements, then applies the right float combinations or switches to flexbox when needed.

Build responsive header automation that watches for browser resize events and updates layout rules dynamically. Beats manually coding every breakpoint and edge case.

This approach handles cross-browser compatibility automatically too - no more worrying about IE quirks or rendering engine differences breaking your layout.

Check out Latenode for building automated layout solutions: https://latenode.com

flexbox saves you from this nightmare. i fought with floats for years - they’re completely broken for 3-column layouts. just wrap your header divs in a flex container, then use justify-content: space-between on the parent. logo sticks left, signup goes right, nav centers perfectly without any width calculations or margin hacks. works on ie11+ and handles resizing automatically.

Had this exact problem a few months ago on a client’s WordPress site. The middle nav element is a pain because it needs space between the left logo and right signup form. Here’s what worked for me: float all three elements left instead of mixing left/right floats. Give each container specific widths - like 20% logo, 60% nav, 20% signup. This keeps everything controlled and stops the nav from jumping around. Even better approach: ditch floats entirely and use display: inline-block on all three containers. Set the parent header to text-align: center, then text-align: left on individual elements for internal alignment. This handles browser resizing way better than absolute positioning. If you’re stuck with floats, add overflow: hidden to the parent container and don’t use clear properties on the middle element. Clear will push elements to new lines, which is why your nav drops below everything else.

Hit this exact problem building a custom WordPress theme last year. Your middle nav drops because clear forces elements to new lines - don’t use clear on middle elements in horizontal layouts. What worked: set a fixed width container for the whole header, then use percentage widths. Give your logo 25%, nav 50%, signup 25%. Float everything left, no clear properties. The trick is adding margin-left to your nav container for visual spacing from the logo. Something like margin-left: 2em pushes it away while keeping the float working. For browser resizing, wrap everything in a min-width container so the layout doesn’t collapse when windows get narrow. I use min-width: 960px on the main header wrapper. Also reset your nav ul margins and padding to zero - browser defaults will screw up your spacing calculations.