jqTab切换水波动画

一.html

<ul>
  <li>Tab One</li>
  <li>Tab Two</li>
  <li>Tab Three</li>
  <li class="slider"></li>
</ul> 

二.css

 ul {
      font-size: 0;
      padding: 0;
	  position: relative;
	  width: 480px;
	  margin: 40px auto;
	  user-select: none;
	}
	li {
	  display: inline-block;
	  width: 160px;
	  height: 60px;
	  background: #E95546;
	  font-size: 16px;
	  text-align: center;
	  line-height: 60px;
	  color: #fff;
	  text-transform: uppercase;
	  position: relative;
	  overflow: hidden;
	  cursor: pointer;
	}     
	.slider {
	  display: block;
	  position: absolute;
	  bottom: 0;
	  left: 0;
	  height: 4px;
	  background: #4FC2E5;
	  transition: all 0.5s;
	}     
	.ripple {
	  width: 0;
	  height: 0;
	  border-radius: 50%;
	  background: rgba(255, 255, 255, 0.4);
	  -webkit-transform: scale(0);
	  -ms-transform: scale(0);
	  transform: scale(0);
	  position: absolute;
	  opacity: 1;
	}
	 
	.rippleEffect {
	  -webkit-animation: rippleDrop .4s linear;
	  animation: rippleDrop .4s linear;
	}
	 
	@-webkit-keyframes 
	  rippleDrop {  100% {
	   -webkit-transform: scale(2);
	   transform: scale(2);
	   opacity: 0;
	  }
	}
	@keyframes 
	  rippleDrop {  100% {
	   -webkit-transform: scale(2);
	   transform: scale(2);
	   opacity: 0;
	  }
	}    

三.jq

$(function(){
		$("ul li").click(function(e) {

		  if ($(this).hasClass('slider')) {
		    return;
		  }
		 
		  var whatTab = $(this).index();
		 
		  var howFar = 160 * whatTab;
		 
		  $(".slider").css({
		    left: howFar + "px"
		  });
		 
		  $(".ripple").remove();
		 
		  var posX = $(this).offset().left,
		      posY = $(this).offset().top,
		      buttonWidth = $(this).width(),
		      buttonHeight = $(this).height();
		 
		  $(this).append("<span class='ripple'></span>");
		 
		  if (buttonWidth >= buttonHeight) {
		    buttonHeight = buttonWidth;
		  } else {
		    buttonWidth = buttonHeight;
		  }
		 
		  var x = e.pageX - posX - buttonWidth / 2;
		  var y = e.pageY - posY - buttonHeight / 2;
		 
		  $(".ripple").css({
		    width: buttonWidth,
		    height: buttonHeight,
		    top: y + 'px',
		    left: x + 'px'
		  }).addClass("rippleEffect");
		   
		}); 
	});  
发布了53 篇原创文章 · 获赞 76 · 访问量 1701

猜你喜欢

转载自blog.csdn.net/weixin_45389051/article/details/104703328
今日推荐