افکت زیبا برای دکمه - Distorted Button Effects (نمونه 5)

زمان مطالعه: ۳ دقیقه
۱۵ آبان ۱۳۹۶

در این مطلب نمونه 5 از افکت زیبا برای دکمه یا Button با عنوان Distorted Button Effects رو در اختیارتون میزارم و امیدوارم که بدردتون بخوره و بتونین از اون در سایتتون استفاده کنید. زمانی که بر روی دکمه های مورد نظر کلیک میکنید، به زیبایی تغییر شکل میدن و افکت زیبایی رو به نمایش میزارن.

همونطور که در دمو مشاهده کردید، یک دکمه بنام Click ME وجود داره و زمانی که بر روی اون کلیک میکنید، به زیبایی تغییر شکل میده و با دور کردن ماوس از اون به حالت اول برمی گرده. برای این حالت از SVG استفاده شده است. میتونین کد مربوط به این افکت رو در زیر مشاهده کنید.

کدهای مربوط به این افکت

کد HTML :

<section class="section">
	<h3 class="section__title">05</h3>
	<svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="svg-filters">
		<defs>
			<filter id="filter-glitch-1">
				<feTurbulence type="fractalNoise" baseFrequency="0.000001" numOctaves="1" result="warp" />
				<feOffset dx="-90" dy="-90" result="warpOffset" />
				<feDisplacementMap xChannelSelector="R" yChannelSelector="G" scale="30" in="SourceGraphic" in2="warpOffset" />
			</filter>
		</defs>
	</svg>
	<button id="component-5" class="button button--5">Click me</button>
</section>

کد CSS :

*,
*:after,
*:before {
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}
body {
  font-family: Avenir, 'Helvetica Neue', 'Lato', 'Segoe UI', Helvetica, Arial, sans-serif;
  color: #222;
  background: #f6f6f6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.section {
	width: 400px;
	height: 400px;
	margin: 0 auto;
}

.section__title {
  font-size: 5em;
  font-weight: 900;
  letter-spacing: -0.05em;
  margin: 0 0 1em 0;
  color: #ddd;
  position: relative;
  text-align: left;
  width: 100%;
}

.section__title::before {
  content: '';
  position: absolute;
  top: 1.15em;
  width: 40%;
  height: 0.1em;
  background: #ddd;
  left: 0;
}

.svg-filters {
  position: absolute;
  visibility: hidden;
  width: 1px;
  height: 1px;
}

.button {
	cursor: pointer;
}

.button--1, .button--1 .button__bg, .button--2, .button--4, .button--4 .button__bg, .button--5, .button--6, .button--7, .button--8, .button--9, .button--10 {
  -webkit-font-smoothing: antialiased;
  background-color: #222;
  border: none;
  display: inline-block;
  font-family: 'Montserrat', sans-serif;
  font-size: 0.85em;
  font-weight: 700;
  text-decoration: none;
  user-select: none;
  letter-spacing: 0.1em;
  color: white;
  padding: 20px 40px;
  text-transform: uppercase;
  transition: background-color 0.1s ease-out;
}

.button--1:hover, .button--1 .button__bg:hover, .button--2:hover, .button--4:hover, .button--4 .button__bg:hover, .button--5:hover, .button--6:hover, .button--7:hover, .button--8:hover, .button--9:hover, .button--10:hover {
  background-color: #2CD892;
  color: #fff;
}

.button--1:focus, .button--1 .button__bg:focus, .button--2:focus, .button--4:focus, .button--4 .button__bg:focus, .button--5:focus, .button--6:focus, .button--7:focus, .button--8:focus, .button--9:focus, .button--10:focus {
  outline: none;
  color: #fff;
}

/* Indivudual styles */
.button--5 {
  transform: translateZ(0);
  outline: 90px solid transparent !important;
}

کد JS:

در این مطلب از TweenMax استفاده شده است.

function getRandom(min, max){
  return Math.random() * (max - min) + min;
}

// Remove click on button for demo purpose
document.querySelector('.button').addEventListener('click', function(e) {
	e.preventDefault();
});

initBt5();

// Button 5
function initBt5() {
  var bt = document.querySelectorAll('#component-5')[0];
  var turbVal = { val: 0.000001 };
  var turb = document.querySelectorAll('#filter-glitch-1 feTurbulence')[0];
  var btTl = new TimelineLite({ 
    paused: true, 
    onStart: function() {
      bt.style.filter = 'url(#filter-glitch-1)';
    },
    onUpdate: function() {
      turb.setAttribute('baseFrequency', turbVal.val);
    },
    onComplete: function() {
      bt.style.filter = 'none';
    } });

  btTl.to(turbVal, 0.2, { val: 0.04 });
  btTl.to(turbVal, 0.2, { val: 0.000001 });

  bt.addEventListener('click', function() {
    btTl.restart();
  });
}

امیدوارم خوشتون بیاد.

موفق باشید. یا علی

Source

نویسنده
بسیار به طراحی وب علاقمندم و به سرعت در حال یادگیری تمام مباحث پیشرفته هستم و دوست دارم که به دیگران هم یاد بدهم.

نظرات کاربران

مهرداد نادری

جالبه

ارسال دیدگاه
خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :

 
گزارش مشکل