On Friday I was contacted by a member of the IE7 team regarding my previous blog entry asking for specifics regarding the problems I’m having with IE7.
Cool. Whoever got the IE7 guy(s) to see that post, thanks.
So I put together a very quick demo of dropdown menus targeted at IE7. I stripped out all the CSS hacks and other misc. crap that wasn’t needed so that it’s just the relevant CSS.
If you want to follow along you’ll need to have the latest copy of IE7 (RC1) installed on your machine.
In the stylesheet is a section titled Test/Debug Menus and is the only CSS in the whole stylesheet specifically targetted at the individual menus. All other CSS is shared across all four menus.
Menu 1 has gaps between a couple of the menu items. These gaps also exist in the submenus. They seem to be caused by the presence of the hidden submenu. These submenus are absolutely positioned; that should remove them entirely from the flow of the document. It seems this is not entirely the case. Z-indexing seems to be broken as well since the menus pop below the LI elements that do not have focus.
However in Menu 2 I float the LI elements and the gaps go away and the z-index problem is fixed. Floating the ULs doesn’t seem to do anything. So what do you suppose that means?
In Menu 3 the LI widths are set to auto; the default value. This means they should go as wide as they can (as they are block objects). The parent UL element has a fixed width applied to it (10ems) so the LIs are going to be 10ems (or so). Well that works, except the side borders on the LI elements aren’t being rendered. Furthermore, if you mouse over all the top-level menu items you’ll notice everything below menu 3 will jog up 1 pixel. If you scroll all the way up, then all the way down, and do this again, everything including and above menu 3 jogs up 1 pixels. It’s a really odd bug that I’ve encountered quite a lot in IE7.
In Menu 4</strong I try to tackle a bug present in all 4 menus. It seems that the flag which sets whether an element is visible or hidden isn’t being propagated correctly. This leads to an empty third-level menu popping while your mouse is only on a top-level menu item. Here’s how you generate the bug:
- mouse over the “Layouts” menu item
- mouse over the “Skidoo” submenu item
- mouse out of the menu by moving your mouse up the screen to an empty space above the “Skidoo” menu item
- mouse over “Layouts” again
You should now see three levels of the menu instead of 2. The third level is empty.. just a bunch of blank boxes. Now if you were to mouse out of the menu system by going back up to the “Layouts” menu item and then off the menu, that blank third-level menu won’t appear when you mouse over “Layouts” again.
Your guess is as good as mine in trying to figure out what causes this. In menu 4 I’ve included CSS to explicitly hide UL elements 2 levels below the LI that currently has focus. This doesn’t resolve the issue. So.. .I duno.
My biggest, most insignificant gripe with IE7 is the inability to change the vertical position of the menu bar. Menu bar is the whole “file/edit/view/etc..” text menu bar that’s commonly found at the top of any/every windows application. IE7 hides this bar by default. I want my menu bar because it gives quick access to the more advanced features of IE7. However if I enable it the menu bar appears below the navigation bar (bar with previous/next/reload/stop buttons and the address bar). There is an option to lock (and unlock) the toolbars to position them. However the navigation bar has a static position and cannot be repositioned.
Now why should anyone care about such an insignificant thing as where a menu bar is placed? Well, my first response is, if it doesn’t matter why is there any option at all to change how menu bars are positioned in any of the countless Microsoft applications in which that customization feature is available?
My second argument is that there’s a certain amount of “muscle memory” involved. We’re so use to the standard windows application UI that it’s almost an unconscious act to locate the “X” to close an application, or to find the FILE menu to save a document. By changing the position of the menu bar you disrupt this ‘automated’ process we have. This can cause sutble/momentary confusion and frustration as we now have to ‘actively’ search for the menu bar.
My third argument is aesthetic value. The visual consistency across windows applications where you have a title bar along the top with some solid or gradient color over a text-based menu system provides a level of comfort and eases the process of learning a new application because of that familiarity. It’s like meeting a new person. Sure there are lots of things that are different, but there’s a lot that we are already familiar with… eyes, nose, a mouth, hair, ears, arms, legs, etc… this gives us a base to more easily form a relationship with the person.
I think I know why Microsoft is doing this. I think they’re trying to keep the address of the page you’re viewing visible while browsing the menu. Or it’s because that’s not a real menu bar. If I right-click on open areas of the menu bar I get a context menu with menu-oriented options. If I do this on the navigation bar I get the system menu (the thing you get when you click on the application’s icon in the upper-left of the window or it’s button on the task bar). So methinks a shortcut was taken to implement that navigation bar and it simply is impossible to move. Either way, I want to move the damn thing!
So there you go. That’s a good chunk of the gripes I’m having with IE7. If you’ve got others toss them in the comments.