İlginizi Çekebilir
  1. Ana Sayfa
  2. CSS

CSS Hover ile Nesneleri Büyütmek ve Küçültmek

CSS Hover ile Nesneleri Büyütmek ve Küçültmek
CSS Hover ile Nesneleri Büyütmek ve Küçültmek
+ - 0

Merhaba, bu yazımda CSS Hover ile Nesneleri Büyütmek ve Küçültmek konusunda değineceğiz. Bir kaç farklı büyüme şekli ile bu yazıyı bitireceğiz. Yaptığım bir çok sitede işime yaradı. Bu yüzden hem elimin altında olması hem de ihtiyaç duyan arkadaşlar için bir kaynak olması için paylaşmak istedim.

CSS Hover ile Nesneleri Büyütmek ve Küçültmek

Sitelerimizi yaparken çoğu zaman bir kutunun yani div’in veya section’un üzerine geldiğimizde hafifçe büyümesini veya küçülmesini isteyebiliriz.  Bu yazıda da bir kaç farklı şekilde büyüme ve küçülme efekti hazırlayacağız. Önce büyüme efektlerine bakalım.

 

CSS Hover ile Nesneleri Büyütmek

Yöntem 1

Öncelikle temel bir html sayfası hazırlayalım. Bu kodlar bize ekranın üst ortasında mavi bir daire verecektir.

<html>
<head>
	<title> CSS Grow & Shrink </title>
	<style>
	div {
		height:200px;
		width:200px;
		margin:auto;
		margin-top:50px;
		background-color:blue;
		border-radius:200px;	
	}	
</style>
</head>
<body>
	<div></div>
</body>
</html>

Şimdi css leri yazalım ve üzerine gelindiğinde merkezden %10’luk büyüme verelim.

<html>
<head>
	<title> CSS Grow & Shrink</title>
	<style>
	div {
		height:200px;
		width:200px;
		margin:auto;
		margin-top:50px;
		background-color:blue;
		border-radius:200px;	
	}

	.grow { 
		transition: width .3s ease-in-out; 
	}
	.grow:hover { 
		transform: scale(1.1); 
	}
</style>
</head>
<body>
	<div class="grow"></div>
</body>
</html>

grow css’i verdiğiniz div’in üzerine geldiğinizde biraz büyütecek. Buradaki linke tıklayarak nasıl çalıştığını görebilirsiniz. Açılan linkte kodları da görebilirsiniz.

NOT: Buradaki büyüme oranını

 

.grow:hover { 
	 transform: scale(1.1); 			
	}

Buradaki scale ile oynayarak değiştirebilirsiniz.

 

Geçişin Hız Eğrisini Belirtin

Özellik transition-timing-function, geçiş etkisinin hız eğrisini belirtir.

Geçiş zamanlama işlevi özelliği aşağıdaki değerlere sahip olabilir:

  • ease– yavaş bir başlangıç, sonra hızlı ve sonra yavaş sona eren bir geçiş efekti belirtir (bu varsayılandır)
  • linear– baştan sona aynı hızda bir geçiş efekti belirtir
  • ease-in– yavaş başlangıçlı bir geçiş efekti belirtir
  • ease-out– yavaş sonlu bir geçiş efekti belirtir
  • ease-in-out– yavaş bir başlangıç ​​ve bitiş ile bir geçiş efekti belirtir
  • cubic-bezier(n,n,n,n)– bir kübik-bezier işlevinde kendi değerlerinizi tanımlamanıza izin verir

NOT: Yukarıda maddelerde verilmiş değerleri, daha yukarıda verdiğim css kodları üzerinde deneyebilirsiniz. Yada ek olarak  transition-timing-function, satırı ile belirtebilirsiniz.

 

Yöntem 2

Bu yöntemde büyüme yükseklik ve genişlik için ayrı ayrı tanımlanabilir. Büyüme yönü merkezden değil sağa ve aşağı doğru olmaktadır.

NOT: İlk yönteme göre farklılıklar var. Örneğin ilk örnekte daire div’e css’leri id ile vermiştik ama bu yöntemde id ile verildiğinde çalışmıyor. O yüzden div css leri class ile verildi.

İşte kodlar.

 

<html>
	<head>
		<title> CSS Grow </title>
		<style>
		#textDiv{
			width:600px;
			height:800px;
			float:left;
		}	
		#textDiv textarea{
			width:600px;
			height:800px;
		}
	
		.mydiv {
			height:200px;
			width:200px;
			margin:auto;
			margin-top:50px;
			background-color:blue;
			border-radius:200px;	
		}
	
		.grow { 
			transition: width 2s, height 4s;
		}
		.grow:hover { 
			width: 300px;
  			height: 300px;
		}
	</style>
	</head>
	<body>
		<div id="textDiv"> 
		<textarea>
	
		<!--
		<html>
		<head>
		<title> CSS Grow & Shrink</title>
		<style>
		#textDiv{
			width:600px;
			height:800px;
			float:left;
		}	
		#textDiv textarea{
			width:600px;
			height:800px;
		}
	
		.mydiv {
			height:200px;
			width:200px;
			margin:auto;
			margin-top:50px;
			background-color:blue;
			border-radius:200px;	
		}
	
		.grow { 
			transition: width 2s, height 4s;
		}
		.grow:hover { 
			width: 300px;
  			height: 300px;
		}
		</style>
		</head>
		<body>
		<div id="textDiv"> </div>
		<div  class="mydiv grow"></div>
		</body>
		</html>
		-->
		</textarea> 
		</div>
	
	
		<div  class="mydiv grow"></div>
	</body>
	</html>

Burada css ‘lerimizi biraz açalım.

 

		.grow { 
			transition: width 2s, height 4s;
		}
		.grow:hover { 
			width: 300px;
  			height: 300px;
		}

transition kısmında width yani genişlikte büyüme animasyon süresi 2 saniye de tamamlanırken, yükseklikte büyüme animasyon süresi 4 saniyede tamamlanacaktır. Ne kadar büyüyecekleri de hover kısmında verilen boyutlarda olacaktır.

Yani dairemizin genişliği 2 saniye de 300 piksele ulaşırken, yüksekliği 4 saniyede 300 piksele ulaşacak. Animasyon toplam 4 saniye sürer. Yani animasyonlar aynı anda başlar.

Bu yöntemin canlı animasyonuna bu linkten ulaşabilirsiniz.

 

Yöntem 3

Bu yöntemde büyüme efektini biraz dalgalı şekilde nasıl yapabileceğimizi göreceğiz. Div’in üzerine geldiğimizde biraz büyüsün kısa bir süre sonra biraz daha büyüsün şeklinde olacak.

Kodları görelim.

 

<html>
<head>
	<title> CSS Grow & Shrink</title>
	<style>
		#textDiv {
			width: 600px;
			height: 800px;
			float: left;
		}

		#textDiv textarea {
			width: 600px;
			height: 800px;
		}

		.mydiv {
			height: 200px;
			width: 200px;
			margin: auto;
			margin-top: 50px;
			background-color: blue;
			border-radius: 200px;
		}

		.grow {			
			transition: all .4s cubic-bezier(.23, .73, .73, .21);
		}

		.grow:hover {			
			transform: scale(1.5);
		}
	</style>
</head>

<body>
	<div id="textDiv">
		<textarea>

		<!--			
		<html>
		<head>
		<title> CSS Grow & Shrink</title>
		<style>
		#textDiv{
			width:600px;
			height:800px;
			float:left;
		}
	
		#textDiv textarea{
			width:600px;
			height:800px;
		}
	
	    .mydiv {
			height:200px;
			width:200px;
			margin:auto;
			margin-top:50px;
			background-color:blue;
			border-radius:200px;	
		}
	
		.grow { 		
			transition: all .4s cubic-bezier(.23,.73,.73,.21); 
		}
		.grow:hover { 			
			transform: scale(1.5); 
		}
		</style>
		</head>
		<body>
		<div id="textDiv"> 	</div>


		<div  class="mydiv grow"></div>
		</body>
		</html>		
		-->
		</textarea>
	</div>


	<div class="mydiv grow"></div>
</body>

</html>

Bu kodlarla div 1,5 kat büyüyecek ama dalgalanarak büyüyecek. Bu linke tıklayarak nasıl çalıştığını canlı olarak görebilirsiniz.

Burada bu dalgalanmayı veren şudur.

 

.grow {			
	transition: all .4s cubic-bezier(.23, .73, .73, .21);
      }

Buradaki css cubic-bezier sayesinde istediğimiz gibi dalgalanma verebiliyoruz. Verilen değerlerden de anlayabileceğiniz gibi değer aralıkları 0 ile 1 arasındadır. Tabi burada kardeşiniz işinizi kolaylaştırmak için size bir site önerecek. Bu sitede cubic-bezier değerleri üretebiliyorsunuz.  Bu linkten o siteye ulaşabilirsiniz.

 

CSS Hover ile Nesneleri Küçültmek

Şimdiii gelelim küçültmeye. Ben basiti. Yukarıdaki kodlara bakın. Hover kısmında ya genişlik verdik ya transform verdik.

Transform kullanılıyorsa, değeri 0.9, 0.8 gibi 1’in altında bir değer verirseniz küçülür.

Height Width kullanılıyorsa, değerleri div’e verdiğiniz Height Width  değerlerinden daha küçük bir değer vermelisiniz.

Hepsi bu kadar….


CSS Hover ile Nesneleri Büyütmek ve Küçültmek yazımda bu kadardı arkadaşlar. Umarım faydalı bir bir yazı olmuştur.

Tüm kodları içeren html dosyasına buradan ulaşabilirsiniz.

Diğer yazılarımızda görüşmek üzere… Discord’a katılmayı unutmayın. Tüm CSS yazılarım için tıklayabilirsiniz.

Kodla kalın. :)

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)