Carsten Andersen Carsten Andersen - 2 months ago 19
CSS Question

Vertical border/divider centered in header

Is it possible, and fairly easy, to create a centered vertical border in my header? I want it to divide my logo/h1-text and my navbar.

I know the css is messy, i just learned html and css last week! I could probably remove some of the css.



header {
height: 60px;
width: 85%;
/background-color: white;
margin: 0 auto;
/box-shadow: 0px 2px 31px -2px rgba(0, 0, 0, 0.86);
/border: 2px solid #333;
left: 0;
right: 0;
/border-sizing: border-box;
/-moz-box-sizing: border-box;
/-webkit-box-sizing: border-box;
z-index: 999999;
}


header #kage > *, header li {
display: inline-block;
}

header li {
padding: 0 8px 0 8px;
float:left;
}

#kage {
width: 99%;
margin: 0 auto;
height: 100%;
line-height: 59px;
text-align: center;
}

.button1:hover {
background-color: #f2f2f2;
}
.button2:hover {
background-color: #f2f2f2;
}
.button3:hover {
background-color: #f2f2f2;
}

.active {
text-decoration: underline;
}

header a {
text-decoration: none;
color: #333;
position: relative;
}

header h1 {
margin: 0;
float: left;
height: 100%;
text-shadow: 1px 2px lightgrey;
}

header h1:hover {
color: #f2f2f2;
}

#topnav {
height: 100%;
/*float: right;*/
font-weight: 700;
font-size: 1.3em;
width: 310.95px;
}

header ul {
list-style-type: none;
margin: 0;
}

<header>
<div id="kage">
<a href="index.html"><h1>H1 TEXT HEREEEEE</h1></a>
<nav id="topnav">
<ul class="menu">
<a href="index.html"><li class="button1 active">Home</li></a>
<a href="profil.html"><li class="button2">About</li></a>
<a href="mdu.html"><li class="button3">MDU</li></a>
</ul>
</nav>
</div>
</header>





Seems like you need to run the snippet in full screen, so the header wont break to two lines.

Answer

There are a lot of ways doing this. I think the simplest one is to put a border-left on your #topnav.

#topnav {
            height: 100%;
            /*float: right;*/
            font-weight: 700;
            font-size: 1.3em;
            width: 310.95px;
            border-left: 2px solid rgb(0,0,0);
            margin: 0 0 0 40px;
        }

I easily added a border with 2 pixels on the left side of you topnav, width the color black. And adjusted it a bit with margin on the left side. margin: 0 0 0 40px; ~ (margin: top right bottom left)

        header {
            height: 60px;
            width: 85%;
            /background-color: white;
            margin: 0 auto;
            /box-shadow: 0px 2px 31px -2px rgba(0, 0, 0, 0.86);
            /border: 2px solid #333;
            left: 0;
            right: 0;
            /border-sizing: border-box;
            /-moz-box-sizing: border-box;
            /-webkit-box-sizing: border-box;
            z-index: 999999;
        }


        header #kage > *, header li {
            display: inline-block;
        }

        header li {
            padding: 0 8px 0 8px;
            float:left;
        }

        #kage {
            width: 99%;
            margin: 0 auto;
            height: 100%;
            line-height: 59px;
            text-align: center;
        }

        .button1:hover {
            background-color: #f2f2f2;
        }
        .button2:hover {
            background-color: #f2f2f2;
        }
        .button3:hover {
            background-color: #f2f2f2;
        }

        .active {
            text-decoration: underline;
        }

        header a {
            text-decoration: none;
            color: #333;
            position: relative;
        }

        header h1 {
            margin: 0;
            float: left;
            height: 100%;
            text-shadow: 1px 2px lightgrey;
        }

        header h1:hover {
            color: #f2f2f2;
        }

        #topnav {
            height: 100%;
            /*float: right;*/
            font-weight: 700;
            font-size: 1.3em;
            width: 310.95px;
            border-left: 2px solid rgb(0,0,0);
            margin: 0 0 0 40px;
        }

        header ul {
            list-style-type: none;
            margin: 0;
        }
    <header>
      <div id="kage">
      <a href="index.html"><h1>H1 TEXT HEREEEEE</h1></a>
        <nav id="topnav">
            <ul class="menu">
                <a href="index.html"><li class="button1 active">Home</li></a>
                <a href="profil.html"><li class="button2">About</li></a>
                <a href="mdu.html"><li class="button3">MDU</li></a>
            </ul>
        </nav>
      </div>
    </header>