SharePoint 2010 top nav problem on touch devices
You may have noticed that the out of the box SP2010 site nav is not quite usable on a touch screen device like an iPad. The top nav is a list of links, to put it simply. When the links are hovered on, with a mouse, a fly-out menu appears. Since touch devices do not have “hover” the fly-out menu does not appear until the item is clicked. But a click takes you to the target URL of the link so you are unable to choose a link from the fly-out nav.
I have provided the CSS below that fixes the problem. The solution is to create some padding on the right with an arrow where a touch/click can occur that is not a click on the link. While a click on the word on the left is still a click on the link and will take you to the target URL.
This CSS will fix that:
/*makes the menu wrap correctly*/ .s4-tn .menu-horizontal ul.root.static { display: block; white-space: normal; zoom:1; } /*helps with making the menu wrap*/ .s4-tn .menu-horizontal ul.root.static:after { content:"."; display:block; clear:both; height:0; font-size:0; line-height:0; } /*sets the styling for every nav item*/ .s4-tn li.static{ background-color: #eee; border: 1px solid #ccc; border-radius: 5px 5px 5px 5px; margin:2px 0 2px 10px; padding: 2px 0; } /*resets the styling for the first item*/ .s4-tn .root > li.static{ padding:2px 0; background-image:none; background-color:transparent; border:0 none; border-radius:0; margin:00; } /*adds the distance on the right and the custom arrow image*/ .s4-tn li.static.dynamic-children{ background-image: url("/Style%20Library/menudown.gif"); background-position: right center; background-repeat: no-repeat; padding: 2px 35px 2px 1px; position:relative; } /*padding for all top anchors*/ .s4-tn li.static > .menu-item { padding: 0 10px; border:0 none; } /*border to separate link from arrow*/ .s4-tn li.static.dynamic-children > .menu-item { border-right:1px solid #999; } /*resets for the first anchor*/ .s4-tn .root > li.static > .menu-item { padding: 2px 10px; margin:2px 0 2px 10px; border:0 none; background-color:#eee; border: 1px solid #ccc; border-radius: 5px 5px 5px 5px; } /*cancel the styling of selected anchors*/ .s4-toplinks .s4-tn a.selected { background: transparent none; border-color: transparent; margin:0; } /*cancel the default arrow and padding*/ .menu-horizontal a.dynamic-children span.additional-background, .menu-horizontal span.dynamic-children span.additional-background { background-image:none; padding-right: 0; }
Just copy and paste the CSS into your custom css file.
Did you get the picture?
The new arrow image can be downloaded from this location:
https://blogs.perficient.com/files/2012/06/menudown.gif
Be sure to put it in the same location that the CSS points to or modify the location in the CSS.