WilsonG
WilsonG

Reputation: 199

Boostrap modal strange issue

I have element with some of the animations made with CSS3. There is a link inside the block which opens modal window, but when the modal window is closed the animation element is left as in "hover" state.

Example in jsfiddle :

<style>
    .item-wrap {
  position: relative;
  height: 200px;
  width: 200px;
  background-color: black;
  overflow: hidden;
}
.item-wrap p {
  color: #fff;
  text-align: center;
}
.item-wrap::before {
  content: ' ';
  position: absolute;
  left: 0;
  top: 0;
  width: 0;
  height: 100%;
  opacity: 0.5;
  -webkit-transition: width 0s ease, background-color 0.5s ease;
  -moz-transition: width 0s ease, background-color 0.5s ease;
  -o-transition: width 0s ease, background-color 0.5s ease;
  transition: width 0s ease, background-color 0.5s ease;
}
.item-wrap::after {
  content: ' ';
  position: absolute;
  right: 0;
  top: 0;
  width: 0;
  height: 100%;
  opacity: 0.5;
  background-color: #fff;
  transition: width 0.5s ease;
  -webkit-transition: width 0.5s ease;
  -moz-transition: width 0.5s ease;
  -ms-transition: width 0.5s ease;
  -o-transition: width 0.5s ease;
}

.item-wrap:hover::before {
  width: 100%;
  background-color: #fff;
  transition: width 0.5s ease;
  -webkit-transition: width 0.5s ease;
  -moz-transition: width 0.5s ease;
  -ms-transition: width 0.5s ease;
  -o-transition: width 0.5s ease;
}
.item-wrap:hover::after {
  width: 100%;
  background-color: transparent;
  transition: all 0s ease;
  -webkit-transition: all 0s ease;
  -moz-transition: all 0s ease;
  -ms-transition: all 0s ease;
  -o-transition: all 0s ease;
}
.item-wrap:hover .cover {
  bottom: 0;
}
.cover a {
  color: #fff;
}
.link1 {
  position: absolute;
  left: 20px;
  top: 50%;
  right: 20px;
}
.link2 {
  position: absolute;
  top: 50%;
  right: 20px;
} 
.item-wrap .cover {
  position: absolute;
  right: 0;
  left: 0;
  bottom: -100%;
  width: 100%;
  height: 100%;
  transition: bottom 0.3s linear;
  -webkit-transition: bottom 0.3s linear;
  -moz-transition: bottom 0.3s linear;
  -ms-transition: bottom 0.3s linear;
  -o-transition: bottom 0.3s linear;
  z-index: 10;
}
</style>
    <div class="item">
      <div class="item-wrap">
       <p>Main content blah blah</p>
        <div class="cover">
          <a href="#" class="link1" data-toggle="modal" data-target="#myModal">Link1</a>
          <a href="#" class="link2" data-toggle="modal" data-target="#myModal">Link2</a>
       </div><!-- /.cover -->
     </div><!-- /.item-wrap -->
   </div><!-- /.item -->

<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

Example ins jsfiddle : https://jsfiddle.net/9objpv9x/

Try to hover to see animation and modal links and then click the "Link1" and close modal to see what happens next.

I just don't know where to start digging.

Upvotes: 0

Views: 94

Answers (1)

user5312477
user5312477

Reputation:

Actually the "link1" is left at "focus" state and the outline is displayed due to default bootstrap css property:

a:focus {
   outline: 5px auto -webkit-focus-ring-color;
   outline-offset: -2px;
}

To override it, Modify it in your css.

a#id:focus {
   outline: 0px;
}

To remove the focus state after the modal close, We need to trigger modal in jquery instead of having "data-target" in HTML.

Check out this jsfiddle link. Updated Code Fix

Upvotes: 1

Related Questions