Reputation: 11383
I have this as my menu bar for the site when viewed on tablet:
The menu icon on the right shows other options when clicked. The code is
<div id="menu">
<a id="metaMenu" href="#">☰</a>
</div>
But I saw on Twitter that the entity (or it may have been the corresponding Unicode characters) is not supported in some Android phones. How can I modify my HTML to have a fallback?
Upvotes: 7
Views: 15563
Reputation: 813
Try using ≡
/ ≡
As of my knowledge, this works most of the time.
Upvotes: 13
Reputation: 194
Here is how I ended up doing it, with an inline SVG element defined in the CSS:
#menu_button {
margin-top: 2vmin;
margin-left: 2vmin;
width: 8vmin;
height: 8vmin;
background-size: 100%;
/* inline SVG element! */
background-image: url('data:image/svg+xml;utf8,<svg viewBox="0 0 120 80" width="40" height="40" version="1.0" xmlns="http://www.w3.org/2000/svg"><rect x="15" width="90" height="15" rx="10"></rect><rect x="15" y="30" width="90" height="15" rx="10"></rect><rect x="15" y="60" width="90" height="15" rx="10"></rect></svg>');
}
Note that the string in url() must be all on one line -- no newline characters. Then pop in your HTML:
<button id="menu_button" type="button" onclick="show_menu()">
</button>
With this method you can make a hamburger image styled exactly as you want it, but without having to load a separate image file from your server.
Upvotes: 0
Reputation: 61
The solution used by Twitter Bootstrap is using spans to construct the Hamburger:
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
The corresponding CSS is:
.navbar-toggle {
position: relative;
float: right;
padding: 9px 10px;
margin-top: 8px;
margin-right: 15px;
margin-bottom: 8px;
background-color: #cccccc;
border: 1px solid transparent;
border-radius: 4px;
}
.navbar-toggle .icon-bar {
display: block;
width: 22px;
height: 2px;
background-color:#000000;
border-radius: 1px;
}
.navbar-toggle .icon-bar+.icon-bar {
margin-top: 4px;
}
Upvotes: 4
Reputation: 5367
Image is a wrong way to go about this - as is an entity, in my opinion. As this one is not well supported at all. No Android, renders weird on Windows Chrome, Internet Explorer, etc.
Go the CSS3 route. This is supported by every major browser - and all modern mobile devices.
jsFiddle here: http://jsfiddle.net/328k7/
Use CSS3 as below. Edit where you see fit...
div {
content: "";
position: absolute;
left: 0;
display: block;
width: 14px;
top: 0;
height: 0;
-webkit-box-shadow: 1px 10px 1px 1px #69737d,1px 16px 1px 1px #69737d,1px 22px 1px 1px #69737d;
box-shadow: 0 10px 0 1px #69737d,0 16px 0 1px #69737d,0 22px 0 1px #69737d;
}
Upvotes: 8