Search code examples
cssgoogle-chromepseudo-class

CSS :focus not working


I tried using :focus CSS pseudo-class in my project. I want to change the color of the element where I click on it. Now when I click my element change color only where it is active and after mouse up it return to old color. After second click I want it back to old color. I'm using Chrome.

Demo here

.row {
  display: inline-block;
  border: 1px solid grey;
  height: 200px;
  width: 200px;
  line-height: 1em;
  background: grey;
  margin: 5px;
  opacity: 0.1;
}
.row:active,
.row:focus {
  background: orange;
}
<div id="main" class="container">
  <div class="row" id="row0">
  </div>
</div>


Solution

  • If you want a real focus state to a div element, you can add a tabindex attribute to it.

    .row {
    	display:inline-block;
      border:1px solid grey;  
      height:200px;
      width: 200px;
      line-height:1em;
      background: grey;
      margin: 5px;
       opacity: 0.1;
    }
    
    .row:active, .row:focus { background: orange; }
     
    <div id="main" class="container">
    <div class="row" tabindex="1" id="row0">
    </div>
    </div>

    If you want toggle the color with clicking the same div element, you have to use javascript (jQuery):

    jQuery('#row0').click(function() {
      $(this).toggleClass('orange');
    });
    .row {
    	display:inline-block;
      border:1px solid grey;  
      height:200px;
      width: 200px;
      line-height:1em;
      background: grey;
      margin: 5px;
       opacity: 0.1;
    }
    
    .row.orange { background: orange; }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    
    <div id="main" class="container">
    <div class="row" id="row0">
    </div>
    </div>