- CSS Basics
- CSS Tutorial HomePage
- CSS Where to Write
- CSS Syntax
- CSS Selectors
- CSS Combinators
- CSS Attribute Selectors
- CSS Pseudo Classes
- CSS Pseudo-Classes
- CSS :link :hover :active
- CSS :first-child
- CSS :first-of-type
- CSS :last-child
- CSS :last-of-type
- CSS :only-child
- CSS :only-of-type
- CSS :nth-child()
- CSS :nth-of-type()
- CSS :nth-last-child()
- CSS :nth-last-of-type()
- CSS :focus
- CSS :not()
- CSS :root
- CSS :empty
- CSS :target
- CSS :lang()
- CSS :valid
- CSS :invalid
- CSS :optional
- CSS :required
- CSS :in-range
- CSS :out-of-range
- CSS :enabled :disabled
- CSS :read-only
- CSS :read-write
- CSS Pseudo Elements
- CSS Pseudo-Elements
- CSS ::before
- CSS ::after
- CSS ::first-letter
- CSS ::first-line
- CSS ::marker
- CSS ::selection
- CSS Colors
- CSS Colors
- CSS rgb() and rgba()
- CSS hsl() and hsla()
- CSS Background
- CSS background
- CSS background-color
- CSS background-image
- CSS linear-gradient()
- CSS radial-gradient()
- CSS conic-gradient()
- CSS repeating-linear-gradient()
- CSS repeating-radial-gradient()
- CSS repeating-conic-gradient()
- CSS background-position
- CSS background-size
- CSS background-repeat
- CSS background-origin
- CSS background-clip
- CSS background-attachment
- CSS background-blend-mode
- CSS Border
- CSS border
- CSS border-style
- CSS border-style Values
- CSS border-width
- CSS border-color
- CSS border-top
- CSS border-top-style
- CSS border-top-width
- CSS border-top-color
- CSS border-bottom
- CSS border-bottom-style
- CSS border-bottom-width
- CSS border-bottom-color
- CSS border-left
- CSS border-left-style
- CSS border-left-width
- CSS border-left-color
- CSS border-right
- CSS border-right-style
- CSS border-right-width
- CSS border-right-color
- CSS border-top-left-radius
- CSS border-top-right-radius
- CSS border-bottom-left-radius
- CSS border-bottom-right-radius
- CSS border-radius
- CSS border-collapse
- CSS empty-cells
- CSS border-spacing
- CSS border-image
- CSS border-image-source
- CSS border-image-slice
- CSS border-image-width
- CSS border-image-outset
- CSS border-image-repeat
- CSS Fonts
- CSS font
- CSS font-style
- CSS font-variant
- CSS font-variant-caps
- CSS font-weight
- CSS font-size
- CSS line-height
- CSS font-family
- CSS font-stretch
- CSS font-kerning
- CSS font-face
- CSS font-feature-settings
- CSS Text
- CSS Text
- CSS color
- CSS text-decoration
- CSS text-decoration-line
- CSS text-decoration-color
- CSS text-decoration-style
- CSS text-underline-position
- CSS text-align
- CSS text-align-last
- CSS text-justify
- CSS letter-spacing
- CSS word-spacing
- CSS text-shadow
- CSS text-transform
- CSS white-space
- CSS text-indent
- CSS word-wrap
- CSS overflow-wrap
- CSS word-break
- CSS text-overflow
- CSS hyphens
- CSS direction
- CSS unicode-bidi
- CSS writing-mode
- CSS Padding & Margin
- CSS Box Model
- CSS padding
- CSS padding-top
- CSS padding-right
- CSS padding-bottom
- CSS padding-left
- CSS margin
- CSS margin-top
- CSS margin-right
- CSS margin-bottom
- CSS margin-left
- CSS Padding Vs Margin
- CSS Dimensions
- CSS Dimensions
- CSS height
- CSS max-height
- CSS min-height
- CSS width
- CSS max-width
- CSS min-width
- CSS overflow
- CSS overflow-x
- CSS overflow-y
- CSS Multi-Column Layout
- CSS Multi-Column Layout
- CSS columns
- CSS column-width
- CSS column-count
- CSS column-rule
- CSS column-rule-width
- CSS column-rule-style
- CSS column-rule-color
- CSS column-span
- CSS column-fill
- CSS Display
- CSS display
- CSS inline Vs block
- CSS inline Vs inline-block
- CSS flex Vs inline-flex
- CSS inline-flex Vs inline-block
- CSS flex Vs grid
- CSS grid Vs inline-grid
- CSS Float and Position
- CSS float
- CSS clear
- CSS Align
- CSS position
- CSS left
- CSS right
- CSS top
- CSS bottom
- CSS Style List Marker
- CSS Style List Marker
- CSS list-style
- CSS list-style-type
- CSS list-style-position
- CSS list-style-image
- CSS Outline
- CSS outline
- CSS outline-width
- CSS outline-style
- CSS outline-color
- CSS outline-offset
- CSS Effects
- CSS Effects
- CSS Gradients
- CSS Shadows
- CSS box-shadow
- CSS opacity
- CSS Transforms
- CSS transform
- CSS translateX()
- CSS translateY()
- CSS translateZ()
- CSS translate()
- CSS translate3d()
- CSS scaleX()
- CSS scaleY()
- CSS scaleZ()
- CSS scale()
- CSS scale3d()
- CSS rotateX()
- CSS rotateY()
- CSS rotateZ()
- CSS rotate()
- CSS rotate3d()
- CSS skewX()
- CSS skewY()
- CSS skew()
- CSS matrix()
- CSS matrix3d()
- CSS perspective() Function
- CSS perspective Property
- CSS perspective-origin
- CSS transform-style
- CSS transform-origin
- CSS 2D Transform
- CSS 3D Transform
- CSS Transition
- CSS transition
- CSS transition-property
- CSS transition-duration
- CSS transition-timing-function
- CSS transition-delay
- CSS Animation
- CSS animation
- CSS @keyframes
- CSS animation-name
- CSS animation-duration
- CSS animation-timing-function
- CSS animation-delay
- CSS animation-iteration-count
- CSS animation-direction
- CSS animation-fill-mode
- CSS animation-play-state
- CSS Grid Layout
- CSS Grid Layout
- CSS gap
- CSS column-gap
- CSS row-gap
- CSS grid-area
- CSS grid-column-start
- CSS grid-column-end
- CSS grid-row-start
- CSS grid-row-end
- CSS grid-template
- CSS grid-template-columns
- CSS grid-template-rows
- CSS grid-template-areas
- CSS grid-auto-columns
- CSS grid-auto-rows
- CSS grid-auto-flow
- CSS grid-column
- CSS grid-row
- CSS Template Layout
- CSS Flex Layout
- CSS FlexBox
- CSS flex-direction
- CSS flex-wrap
- CSS flex-flow
- CSS justify-content
- CSS align-content
- CSS align-items
- CSS flex-grow
- CSS flex-shrink
- CSS flex-basis
- CSS flex
- CSS align-self
- CSS order
- CSS Misc
- CSS Length Units
- CSS Style Link
- CSS Navigation Bar
- CSS Style Image
- CSS Style Tables
- CSS table-layout
- CSS caption-side
- CSS Create Frames
CSS Navigation Bar
This article is created to provide the tutorial along with examples on how to create and transform a boring navigation bar (list of links) into impressive navigation bar, step by step, using CSS.
Simple Navigation Bar without CSS
Before transorming the normal and simple navigation bar into a good-looking and eye-catching navigation bar. Let me first create a navigation bar using simple HTML Un-Organized list.
<!DOCTYPE html> <html> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Remove Underline from Navigation Bar using CSS
To remove underline from navigation bar using CSS, use following CSS code:
a{text-decoration: none;}
For example:
<!DOCTYPE html> <html> <head> <style> a{text-decoration: none;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Note - The text-decoration property is used to decorate the text.
To remove the marker, use/add following CSS code:
li{list-style-type: none;}
After adding the above CSS code, in previous example, the output changed to:
Note - The list-style-type property is used to define the type of list marker.
CSS Horizontal Navigation Bar
To align the navigation bar horizontally using CSS, use following CSS code:
li{display: inline;}
For example:
<!DOCTYPE html> <html> <head> <style> ul{padding: 0;} li{list-style-type: none; display: inline;} a{text-decoration: none;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Note - The display property is used to define, how an element should render on the web page.
Create Horizontal Navigation Bar using CSS Flex
<!DOCTYPE html> <html> <head> <style> ul{display: flex; padding: 0;} li{list-style-type: none;} a{text-decoration: none;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Note - To learn about FlexBox model in detail, refers to its separate tutorial.
Use flex-basis property to set the initial length of flex items in flex container. For example:
<!DOCTYPE html> <html> <head> <style> ul{display: flex; padding: 0;} li{list-style-type: none; flex-basis: 16.6%; text-align: center;} a{text-decoration: none;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Create Horizontal Navigation Bar using CSS Grid
<!DOCTYPE html> <html> <head> <style> ul{display: grid; grid-template-columns: auto auto auto auto auto auto;} li{list-style-type: none;} a{text-decoration: none;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Note - To learn about Grid Layout Model in detail, refer to its separate tutorial.
Align Navigation Bar to Right using CSS
<!DOCTYPE html> <html> <head> <style> li{list-style-type: none; display: inline; padding: 12px; background-color: aliceblue; float: right;} a{text-decoration: none;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Note - The float property is used to define where the element should float.
CSS Top Navigation Bar
<!DOCTYPE html> <html> <head> <style> div.navbar{display: grid; grid-template-columns: auto auto auto auto auto auto; width: 100%;} a{text-decoration: none; background-color: purple; padding: 12px; text-align: center; color: white;} a:hover{background-color: aliceblue; color: purple;} </style> </head> <body> <div class="navbar"> <a href="#">Home</a> <a href="#">Services</a> <a href="#">Prices</a> <a href="#">Features</a> <a href="#">Contact</a> <a href="#">About</a> </div> </body> </html>
Note - The grid-template-columns property is used to define the number of columns to create in grid layout.
The exact layout of above navigation bar, can also be created using flex. Here is the CSS code:
div.navbar{display: flex; width: 100%;} a{text-decoration: none; background-color: purple; padding: 12px; text-align: center; color: white; flex-basis: 16.66%;} a:hover{background-color: aliceblue; color: purple;}
After applying this CSS code, in previous example. You will get the same output, as produced by the same (previous) example.
Let's create another layout and design for top navigation bar using CSS. Here is the code:
<!DOCTYPE html> <html> <head> <style> ul{list-style-type: none; background-color: purple; overflow: hidden; margin: 0; padding: 0;} li{float: left;} li a{display: block; color: white; text-decoration: none; padding: 12px;} li a:hover{background-color: aliceblue; color: purple;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Note - The overflow property is used to control the overflowed content.
Align Particular Navigation Item to Right using CSS
To align any particular navigation item to right using CSS, you can approach any of the following two ways:
- Using inline CSS
- Using internal CSS
For both approach we need to use float: right CSS declaration. For example:
<li style="float: right;"><a href="#">Prices</a></li>
will align the Prices (a navigation item) to the right. Or we can follow the internal CSS to do the same job. For example:
<!DOCTYPE html> <html> <head> <style> ul{list-style-type: none; background-color: purple; overflow: hidden; margin: 0; padding: 0;} li{float: left;} li a{display: block; color: white; text-decoration: none; padding: 12px;} li a:hover{background-color: aliceblue; color: purple;} .right{float: right;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li class="right"><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
CSS Vertical Navigation Bar
<!DOCTYPE html> <html> <head> <style> ul{list-style-type: none; background-color: purple; padding: 0; width: 120px; text-align: center;} li a{display: block; color: white; text-decoration: none; padding: 12px;} li a:hover{background-color: aliceblue; color: purple;} </style> </head> <body> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </body> </html>
Align Vertical Navigation Bar to Center of the Screen using CSS
<!DOCTYPE html> <html> <head> <style> .center{width: 120px; margin: auto;} ul{list-style-type: none; padding: 0; text-align: center;} ul li{background-color: purple;} li a{display: block; color: white; text-decoration: none; padding: 12px;} li a:hover{background-color: aliceblue; color: purple;} </style> </head> <body> <div class="center"> <ul> <li><a href="#">Home</a></li> <li><a href="#">Services</a></li> <li><a href="#">Prices</a></li> <li><a href="#">Features</a></li> <li><a href="#">Contact</a></li> <li><a href="#">About</a></li> </ul> </div> </body> </html>
Change the CSS code from previous example with:
.center{width: 120px; margin: auto;} ul{list-style-type: none; padding: 0; text-align: center;} ul li{background-color: purple; color: white; margin-bottom: 6px;} li a{display: block; text-decoration: none; padding: 12px; color: white;} li a:hover{background-color: aliceblue; color: purple; border-bottom: 3px solid purple; padding-bottom: 9px;}
To get the following output:
« Previous Tutorial Next Tutorial »