The CSS opacity property changes the opacity for the an element and its children. Instead, use rgba colors (with a fallback) for the background so that only the header background is transparent.
#header {
background-color: black; /* Old browsers that don't support rgba */
background-color: rgba(0, 0, 0, 0.75);
}