Erick Ye
Erick Ye

Reputation: 75

Prevent horizontal shrinking of the navigation bar

I'm building this site but having a small problem with the navigation bar. I currently have the width=100% of the navigation which works fine but when I resize the browser horizontally it shrinks the menu's (the menus are there but the background gets cut off). I want the width to be 100% initially and not resize at all with the browser shrinking or expanding. Can anyone help?

Site: http://bepas.azurewebsites.net/

Below is my CSS. Specific line: #cssmenu {height: 50px; width:100% ...

html,body {
   margin:0;
   padding:0;
   height:100%;
}


#cssmenu ul { margin: 0; padding: 0; white-space:nowrap;}
#cssmenu li { margin: 0; padding: 0;}
#cssmenu a { margin: 0; padding: 0;}
#cssmenu ul {list-style: none;}
#cssmenu a {text-decoration: none;}
#cssmenu {height: 50px; width:100%;background-color: #708090; box-shadow: 0px 2px 3px rgba(0,0,0,.4); }


#cssmenu > ul > li {

    display:inline-block;
    margin-left: 65px;
    position: relative;
}

#cssmenu > ul > li > a {
    color: #FFFFFF;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 18px;
    line-height: 50px;
    padding: 0px;
-webkit-transition: color .15s;
   -moz-transition: color .15s;
     -o-transition: color .15s;
        transition: color .15s;
}

#cssmenu > ul > li > a:hover {color: #000000; }
body.home li.home, body.tech li.tech {font-weight:bold; }

#cssmenu > ul > li > ul {
    opacity: 0;
    visibility: hidden;
    padding: 0px 0 20px 0;
    background-color: #FFFFFF;
    text-align: left;
    position: absolute;
    top: 55px;
    left: 50%;
    margin-left: -80px;
    width: 260px;
-webkit-transition: all .3s .1s;
   -moz-transition: all .3s .1s;
     -o-transition: all .3s .1s;
        transition: all .3s .1s;
-webkit-border-radius: 5px;
   -moz-border-radius: 5px;
        border-radius: 5px;
-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
   -moz-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
        box-shadow: 0px 1px 3px rgba(0,0,0,.4);
}

#cssmenu > ul > li:hover > ul {
    opacity: 1;
    top: 50px;
    visibility: visible;
}


#cssmenu > ul ul > li { position: relative;}

#cssmenu ul ul a{
    color: rgb(50,50,50);
    font-family: Verdana, 'Lucida Grande';
    font-size: 13px;
    background-color: #FFFFFF;
    padding: 5px 8px 7px 16px;
    display: block;
-webkit-transition: background-color .1s;
   -moz-transition: background-color .1s;
     -o-transition: background-color .1s;
        transition: background-color .1s;
}

#cssmenu ul ul a:hover {background-color: rgb(240,240,240);}

#cssmenu ul ul ul {
    visibility: hidden;
    opacity: 0;
    position: absolute;
    top: -16px;
    left: 206px;
    padding: 16px 0 20px 0;
    background-color: rgb(250,250,250);
    text-align: left;
    width: 160px;
-webkit-transition: all .3s;
   -moz-transition: all .3s;
     -o-transition: all .3s;
        transition: all .3s;
-webkit-border-radius: 5px;
   -moz-border-radius: 5px;
        border-radius: 5px;
-webkit-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
   -moz-box-shadow: 0px 1px 3px rgba(0,0,0,.4);
        box-shadow: 0px 1px 3px rgba(0,0,0,.4);
}


#cssmenu ul ul > li:hover > ul { opacity: 1; left: 196px; visibility: visible;}


#cssmenu ul ul a:hover{
    background-color: rgb(205,44,36);
    color: rgb(240,240,240);
}

Here is my html snippet of how the menu is defined.

<div id="cssmenu">
<ul>
    <li><a href="#">Sites</a>
        <ul>
            <li><a href="#">My Sites List</a></li>
            <li><a href="#">Site General Info.</a></li>
            <li><a href="#">Utility Billing (Electricity)</a></li>
            <li><a href="#">Utility Billing (Gas)</a></li>
            <li><a href="#">Utility Billing (Solar)</a></li>
            <li><a href="#">Occupancy Info.</a></li>
            <li><a href="#">Exterior Lighting</a></li>
        </ul>
    </li>
    <li><a href="#">Buildings</a>
        <ul>
            <li><a href="#">General Info.</a></li>
            <li><a href="#">Exterior Lighting</a></li>
            <li><a href="#">Roof &amp Exhaust Fans</a></li>
            <li><a href="#">HVAC Inventory</a></li>
        </ul>
    </li>
    <li><a href="#">Rooms</a>
        <ul>
            <li><a href="#">General Info.</a></li>
            <li><a href="#">Interior Lighting</a></li>
            <li><a href="#">Windows–Envelope Fenestration</a></li>
            <li><a href="#">Doors – Envelope Fenestration</a></li>
            <li><a href="#">Plugloads</a></li>
            <li><a href="#">Skylights – Envelope Fenestration</a></li>
            <li><a href="#">Domestic Hot Water Form</a></li>
            <li><a href="#">Specialty Kitchen Equipment</a></li>
            <li><a href="#">Misc. Inventory</a></li>
        </ul>
    </li>
    <li><a href="#">Runtime Schedulers</a>
        <ul>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
        </ul>
    </li>
    <li><a href="#">Swimming Pools</a>
        <ul>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
        </ul>
    </li>
    <li><a href="report.html">Report</a></li>
    <li><a href="#">Temperature</a>
        <ul>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
            <li><a href="#">link</a></li>
        </ul>
    </li>
    <li><a href="index.html">Sign in</a></li>
</ul>
</div>

Upvotes: 0

Views: 1073

Answers (3)

CodingGuy7
CodingGuy7

Reputation: 21

Put this in the header tag of your html document (all of your html documents) to remove that weird behavior (this solved my problem):

<meta name="viewport" content="width=device-width, initial-scale=1.0">

Upvotes: 1

krsoni
krsoni

Reputation: 639

This is happening because you are using width:100%. What you need is to specify a min-width style and give its value in pixels. For its appropriate value in pixels check you navigation bar by re-sizing the window horizontally and select something beyond which you can't tolerate the shrinking. You can use standard 1024px, eg,
#cssmenu{ min-width: 1024px; }

Upvotes: 0

Ali Youhanaei
Ali Youhanaei

Reputation: 384

make your menu items without display inline-block, replace it with float like this

#cssmenu > ul > li {
  /* display: inline-block; */
  margin-left: 65px;
  position: relative;
  float: left;
}

Upvotes: 0

Related Questions