0

Below is a simple navigation bar which I have implemented using bootstrap.

HTML

<!doctype html>
<html>
  <head>
    <title> Bootstrap </title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
    <link rel="stylesheet" href="../css/mobile.css">
  </head>

  <body>
   <div id = "container">
    <nav class="navbar navbar-default">
      <a class="navbar-brand" href="#">Home</a>
    </nav>

    <h4>Search WWW</h4>

    <ul class="nav">
      <li> <a href="#"> Bing </a></li>
      <li> <a href="#"> Google </a></li>
      <li> <a href="#"> Yahoo </a></li>
    </ul>

    <h4> Dubious Websites </h4>

    <ul class="nav">
      <li> <a href="#"> Reddit </a></li>
      <li> <a href="#"> Tumblr </a></li>
      <li> <a href="#"> Youtube </a></li>
    </ul>

    <h4> Reference </h4>

    <ul class="nav">
      <li> <a href="#"> Wow </a></li>
      <li> <a href="#"> Adobe </a></li>
      <li> <a href="#"> Wikipedia </a></li>
    </ul>
   </div>
  </body>
</html>

CSS

body{
    margin: 15px;
}

div {
    width: 25%;
}

.navbar {
    background-color: lightgray;
    font-weight: bold;
}

nav a {
    text-shadow: 1px 1px #fff;
}

h4 {
    margin-top: 20px;
}

ul {
    border: 1px solid lightgray;
    border-radius: 15px;
}

ul li a {
    color: black;
}

ul li a:hover {
    color: lightblue;
}

.nav li a:hover {
    background: none;
}


I have the following questions:

1) How to align text in the navigation bar (e.g. Navigation bar with the class name navbar navbar-default)?

2) I do not understand how I am able to select the nav element using .navbar when the class name given to it is navbar navbar-default?

3) I do not understand why the following code fragment does not work

ul li a:hover {
    color: lightblue;
    background: none;

}

But this fragment works

ul li a:hover {
    color: lightblue;
}

.nav li a:hover {
    background: none;
}

So basically, my question is that ul has the class name nav. So, why are ul li a:hover and .nav li a:hover not referring to the same element?

1 Answers1

0

2) navbar navbar-default is actually two separate classes. So referring to .navbar would select that element.

3) .nav li a:hover is more specific that ul li a:hover. So in your first example, it is probably being overridden somewhere else in Bootstrap's css. You can read more about css specificity here: Points in CSS specificity

Community
  • 1
  • 1
pgruber
  • 2,515
  • 18
  • 25