Tạo hiệu ứng hover đơn giản đẹp mắt bằng css 3

Related Articles

Trong loạt bài viết này mình sẽ hướng dẫn các bạn làm những hiệu ứng hover với một vài thuộc tính đơn giản của css 3, nhưng chất lượng của nó không hề đơn giản :D. Ở bài viết này mình sẽ làm hiệu ứng tương tác với hình ảnh. Mình xin được bắt đầu bài viết.

hiệu ứng hover

Hover là gì ?

Trước tiên chúng ta cần nói về lý thuyết một tí :D, Hover là sự thay đổi của một phần tử trên màn hình mỗi khi có “con chuột” trỏ đến nó (Mouse over).

Hiệu ứng hover tương tác với hình ảnh

Demo: Các bạn click vào đây để xem kết quả, bây giờ mình sẽ code và giải thích ngay phía sau.

Code: html

0123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354

html

Hover

href=” https://fonts.googleapis.com/css?family=Lato:300,400,700 “rel=” stylesheet “>

class=” container “>

class=” img “>

src=” http://hasinhayder.github.io/ImageCaptionHoverAnimation/img/chaps_1x.jpg “alt=” “>

class=” txt “>

AMAZING CAPTION

Whatever It Is – Always Awesome

class=” img “>

src=” http://hasinhayder.github.io/ImageCaptionHoverAnimation/img/everycowboy_dribbbleready_shot.jpg “alt=” “>

class=” txt “>

AMAZING CAPTION

Whatever It Is – Always Awesome

class=” img “>

src=” http://hasinhayder.github.io/ImageCaptionHoverAnimation/img/ithinkican_01.jpg “alt=” “>

class=” txt “>

AMAZING CAPTION

Whatever It Is – Always Awesome

class=” img “>

src=” http://hasinhayder.github.io/ImageCaptionHoverAnimation/img/m.jpg “alt=” “>

class=” txt “>

AMAZING CAPTION

Whatever It Is – Always Awesome

class=” img “>

src=” http://hasinhayder.github.io/ImageCaptionHoverAnimation/img/raspberry.jpg “alt=” “>

class=” txt “>

AMAZING CAPTION

Whatever It Is – Always Awesome

class=” img “>

src=” http://hasinhayder.github.io/ImageCaptionHoverAnimation/img/sketch_1x.jpg “alt=” “>

class=” txt “>

AMAZING CAPTION

Whatever It Is – Always Awesome

Code: css

01234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465

*

{

padding

:

;

margin

:

;

}

html

{

width

:

100%

;

height

:

100%

;

}

body

{

background-color

:

#2980B9

;

font-family

:

‘Lato’

,

sans-serif

;

}

div.container

{

border

:

3px

solid

black

;

cursor

:

pointer

;

width

:

900px

;

display

:

flex

;

flex-wrap

:

wrap

;

position

:

absolute

;

top

:

50%

;

left

:

50%

;

transform

:

translate

(

-50%,-50%

)

;

}

img

{

width

:

100%

;

height

:

auto

;

transition

:

all

ease-in-out

;

}

.img

{

width

:

300px

;

height

:

225px

;

position

:

relative

;

overflow

:

hidden

;

}

.txt

{

width

:

100%

;

height

:

40%

;

background-color

:

rgba

(

142,

68,

173,

0.9

)

;

position

:

absolute

;

bottom

:

50px

;

text-align

:

center

;

color

:

white

;

padding

:

10px

;

box-sizing

:

border-box

;

line-height

:

10px

;

opacity

:

;

}

.img:hover div.txt

{

opacity

:

1

;

transform

:

translateY

(

50px

)

;

transition

:

ease-in-out

0.5s

;

}

.img:hover img

{

transform

:

translateY

(

-34px

)

;

transition

:

all

ease-in-out

0.5s

;

}

Kết quả: Mình phải để một ảnh gif ở đây loại trừ trường hợp link trên codepen bị die

hover

Giải thích:

  • Trước tiên chúng ta sẽ phân tích cái giao diện này. Nó gồm một khối to chứa 6 khối nhỏ. Mỗi khối nhỏ bao gồm một hình ảnh và một khối chữa text.
  • Chúng ta sẽ giải quyết một khối nhỏ rồi x6 nó lên. Vì chúng hoàn toàn giống nhau về cấu trúc chỉ khác ở nội dung.
  • Mình đặt một khối img chứa một hình ảnh và khối text. Đặt kích thước cho nó, và để position:relative để căn chỉnh các khối bên trong của nó. Nhớ để overfolow:hidden để cắt đi những phần tràn ra ngoài
  • Tiếp đến là xử lý ảnh và khối text, tương tự đặt kích thước và dùng position:absolute để căn chỉnh vị trí, mình bỏ qua mấy cái đặt màu và định dạng text nhé.
  • Tiếp đến tạo hiệu ứng hover, khi di chuột vào khối img sẽ xảy ra hiệu ứng cho thẻ img và khối txt. Ở hiệu ứng này mình sử dụng thuộc trính transform:translateY() để di chuyển khối theo hướng thằng đứng, và sử dụng transition ease-in-out để làm chậm chuyển động. Các bạn quay lại để đọc hiểu code css
  • Sau khi xử lý xong thì mình x6 nó lên, thay đổi attribute src của thẻ img. Bây giờ tạo một khối container chứa các khối trên đặt width cho nó. Rồi dùng thuộc tính display:flex  để chia layout. Và căn giữa khối container bằng positiontransform.

Ok vậy là xong rồi đấy, mình sẽ quay trờ lại với những hiệu ứng khác : D, mình xin được kết thúc bài viết tại đây .

Xem bài viết tiếp theo tại đây .

More on this topic

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Advertismentspot_img

Popular stories