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

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

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

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

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

کد HTML :

<section class="section">
	<h3 class="section__title">09</h3>
	<svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="svg-filters">
		<defs>
			<filter id="filter-ripple-2">
				<feImage xlink:href="ripple.png" x="30" y="20" width="0" height="0" result="ripple"></feImage>
				<feDisplacementMap xChannelSelector="R" yChannelSelector="G" color-interpolation-filters="sRGB" in="SourceGraphic" in2="ripple" scale="20" result="dm" />
				<feComposite operator="in" in2="ripple"></feComposite>
				<feComposite in2="SourceGraphic"></feComposite>
			</filter>
		</defs>
	</svg>
	<button id="component-9" class="button button--9" style="filter: url('#filter-ripple-2')">Click</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--9 {
  -webkit-transition: all 0.45s ease-out;
  -moz-transition: all 0.45s ease-out;
  transition: all 0.45s ease-out;
  background-image: -webkit-radial-gradient(60% 20%, circle, #FF6023 0%, #DA305D);
  background-image: radial-gradient(  circle at 60% 20%, #FF6023 0%, #DA305D);
  box-shadow: 0 0 0 20px #f6f6f6;
  border-radius: 80px;
  color: #FFF;
  width: 80px;
  height: 80px;
  line-height: 80px;
  padding: 0;
}

.button--9:focus {
  color: #FFF;
}

.button--9:hover {
  background-image: -webkit-radial-gradient(60% 20%, circle, #FF6023 0%, #DA305D);
  background-image: radial-gradient(  circle at 60% 20%, #FF6023 0%, #DA305D);
  color: #FFF;
}

کد JS:

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

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

var isFF = !!navigator.userAgent.match(/firefox/i);

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

initBt9();

// Button 9
function initBt9() {
  var bt = document.querySelectorAll('#component-9')[0];
  var turb = document.querySelectorAll('#filter-ripple-2 feImage')[0];
  var dm = document.querySelectorAll('#filter-ripple-2 feDisplacementMap')[0];
  
  bt.addEventListener('click', function(e) {
    TweenLite.set(turb, { attr: { x: isFF ? e.offsetX : e.offsetX + 20, y: isFF ? e.offsetY : e.offsetY + 20, width: 0, height: 0 } });
    TweenLite.to(turb, 5, { attr: { x: '-=300', y: '-=300', width: 600, height: 600 } });
    TweenLite.fromTo(dm, 3, { attr: { scale: 30 } }, { attr: { scale: 0 } });
  });
}

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

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

Source

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

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

اولین دیدگاه این پست رو تو بنویس !

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

 
گزارش مشکل