CSS3 tạo hiệu ứng chữ chuyển động và đổi chữ

Tạo hiệu ứng thay đổi một vài cụm từ trong một câu kèm theo là hiệu ứng chữ chuyển động. Tất cả đều được thực hiện bằng CSS3 :->

Demo đã có sẵn ngay widget bên phải đó ^^ Cosmos Pham’s Blog Diary/Design/Programming/Photoshop

Tải source code tại đây: CSS3 tạo hiệu ứng chữ chuyển động và đổi chữ

Xem demo thì bạn hiểu mục đích của bài tut này rồi chứ. Chú ý là hiệu ứng chỉ hoạt động trên các trình duyệt hỗ trợ CSS3 (Chrome, FireFox).

Demo của bài viết gốc: Demo 1; Demo 2; Demo 3; Demo 4; Demo 5

Nào mình cùng lên xe buýt, nào mình cùng code ^^

CSS3 tạo hiệu ứng chữ chuyển động và đổi chữ

Thẻ HTML

Đầu tiên, bạn tạo các thẻ HTML như sau. Thẻ H2 chứa vùng cấp 1. Trong thẻ H2 có thẻ DIV chứa các thẻ SPAN. Thẻ SPAN này bọc các cụm từ cần xoay chuyển.

<section class="rw-wrapper">
	<h2 class="rw-sentence">
		<span>Cosmos Pham's</span>
		<span>Blog</span>
		<div class="rw-words rw-words-1">
			<span>Design</span>
			<span>Programming</span>
			<span>Photoshop</span>
			<span>Diary</span>
		</div>
	</h2>
</section>

Chúng ta sẽ dùng CSS để thiết lập mỗi lần chỉ một từ xuất hiện, và xuất hiện trong một khoảng thời gian nhất định. Xem nhé.

CSS3

Ta định dạng cho bộ chứa (section), và căn giữa cho nó.

.rw-wrapper {
	width: 80%;
	position: relative;
	margin: 110px auto 0 auto;
	font-family: 'Bree Serif';
	padding: 10px;
}

Bây giờ thì thêm bóng cho toàn bộ các thành phần.

.rw-sentence {
	margin: 0;
	text-align: left;
	text-shadow: 1px 1px 1px rgba(255,255,255,0.8);
}

Thêm một số định dạng nữa.

.rw-sentence span {
	color: #444;
	white-space: nowrap;
	font-size: 200%;
	font-weight: normal;
}

Thiết lập như sau để các thành phần nằm cùng một dòng.

.rw-words {
	display: inline;
	text-indent: 10px;
}

Chúng ta cho các thành phần trong thẻ SPAN thuộc class .rw-words nằm cố định (tuyệt đối) và ẩn những phần nào tràn ra ngoài.

.rw-words span {
	position: absolute;
	opacity: 0;
	overflow: hidden;
	width: 100%;
	color: #6b969d;
}

Phần chính, tạo chuyển động. Chúng ta cho các thành phần SPAN cùng một định dạng, chỉ khác nhau ở thời gian hoãn (delay). Thuộc tính animation định nghĩa tên chuyển động, thời gian chuyển động, hàm thời gian (tuyến tính hay không), số lần lặp, thời gian hoãn cho chuyển động.

.rw-words-1 span {
	animation: rotateWords 12s linear infinite 0s;
	-webkit-animation: rotateWord 12s linear infinite 0s;
	-moz-animation: rotateWord 12s linear infinite 0s;
	-o-animation: rotateWord 12s linear infinite 0s;
	-ms-animation: rotateWord 12s linear infinite 0s;
}

Phần sau thiết lập thời gian hoãn cho từng phần SPAN cụ thể.

.rw-words span:nth-child(2) {
	-webkit-animation-delay: 3s;
	-moz-animation-delay: 3s;
	-o-animation-delay: 3s;
	-ms-animation-delay: 3s;
	animation-delay: 3s;
	color: #6b889d;
}

.rw-words span:nth-child(3) {
	-webkit-animation-delay: 6s;
	-moz-animation-delay: 6s;
	-o-animation-delay: 6s;
	-ms-animation-delay: 6s;
	animation-delay: 6s;
	color: #6b739d;
}

.rw-words span:nth-child(4) {
	-webkit-animation-delay: 9s;
	-moz-animation-delay: 9s;
	-o-animation-delay: 9s;
	-ms-animation-delay: 9s;
	animation-delay: 9s;
	color: #7a6b9d;
}

Phần tiếp theo định nghĩa các keyframe (giống như trên timeline các phim hoạt hình dạng stop-motion). Mỗi keyframe là một trạng thái của đối tượng tại một thời điểm trong vòng chuyển động. Bạn muốn nó ở vị trí nào, màu sắc, hình thù gì thì thiết lập tại đây.

@-webkit-keyframes rotateWord {
	0% { opacity: 0; }
	2% { opacity: 0; -webkit-transform: translateY(-30px); }
	5% { opacity: 1; -webkit-transform: translateY(0px);}
	17% { opacity: 1; -webkit-transform: translateY(0px); }
	20% { opacity: 0; -webkit-transform: translateY(30px); }
	80% { opacity: 0; }
	100% { opacity: 0; }
}
@-moz-keyframes rotateWord {
	0% { opacity: 0; }
	2% { opacity: 0; -moz-transform: translateY(-30px); }
	5% { opacity: 1; -moz-transform: translateY(0px);}
	17% { opacity: 1; -moz-transform: translateY(0px); }
	20% { opacity: 0; -moz-transform: translateY(30px); }
	80% { opacity: 0; }
	100% { opacity: 0; }
}
@-o-keyframes rotateWord {
	0% { opacity: 0; }
	2% { opacity: 0; -o-transform: translateY(-30px); }
	5% { opacity: 1; -o-transform: translateY(0px);}
	17% { opacity: 1; -o-transform: translateY(0px); }
	20% { opacity: 0; -o-transform: translateY(30px); }
	80% { opacity: 0; }
	100% { opacity: 0; }
}
@-ms-keyframes rotateWord {
	0% { opacity: 0; }
	2% { opacity: 0; -ms-transform: translateY(-30px); }
	5% { opacity: 1; -ms-transform: translateY(0px);}
	17% { opacity: 1; -ms-transform: translateY(0px); }
	20% { opacity: 0; -ms-transform: translateY(30px); }
	80% { opacity: 0; }
	100% { opacity: 0; }
}
@keyframes rotateWord {
	0% { opacity: 0; }
	2% { opacity: 0; transform: translateY(-30px); }
	5% { opacity: 1; transform: translateY(0px);}
	17% { opacity: 1; transform: translateY(0px); }
	20% { opacity: 0; transform: translateY(30px); }
	80% { opacity: 0; }
	100% { opacity: 0; }
}

Cuối cùng, thêm một chút linh động để chỉnh kích thước chữ to, nhỏ theo độ rộng màn hình ^^

@media screen and (max-width: 768px){
	.rw-sentence { font-size: 12px; }
}
@media screen and (max-width: 320px){
	.rw-sentence { font-size: 6px; }
}

Mọi thắc mắc các bạn hãy comment hoặc email cho mình, mình sẽ hỗ trợ thêm cho các bạn.

Phần này mình cũng đang (tự) học. Bạn nào có nhã hứng có thể hợp tác với mình. Đơn giản là vào nguồn tài liệu bằng tiếng Anh (có link ở cuối bài), đọc, làm thử và dịch sang tiếng Việt bằng văn của bạn. Như thế giống như là vừa học và dạy người khác, một cách học rất hiệu quả đấy🙂

Reference: http://tympanus.net/codrops/2012/04/17/rotating-words-with-css-animations/


USB SSK SFD166 mạ Vàng

USB SSK SFD166 mạ Vàng với Giá cực SỐC !

USB SSK SFD166 mạ Vàng

USB SSK SFD166 mạ Vàng với Giá cực SỐC !

Chi tiết sản phẩm: 

  • Xuất xứ: Chính hãng SSK (Nhập khẩu)
  • Chất liệu: thép không rỉ và pha lê
  • Kích thước: 37 x 12 x 4.5 mm
  • Màu sắc: Vàng
  • Dung lượng: 4G – 8G
  • Cổng giao tiếp: 2.0 – tương thích cổng USB 1.1

USB 4G:  160,000 VNĐ/cái 

USB 8G: 199,000 VNĐ/cái 

Bảo hành 12 tháng

Giao hàng tận nơi (Sài Gòn)

Có xuất hoá đơn đỏ nếu cần.

Có giá tốt cho các bạn lấy từ 20 cái trở lên

Liên hệ:

Điện thoại: 0169 299 8182 – 012 1617 9469

Email: phamquocbuu@gmail.com

Yahoo!: phamquocbuu  Yahoo Messenger Icons
Skype: phamquocbuu My status

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s