Điều bạn sẽ cần làm ở đây là sử dụng một gradient tuyến tính làm nền và làm động vị trí nền. Trong mã:
Sử dụng một gradient tuyến tính [50% màu đỏ, 50% màu xanh] và nói với trình duyệt rằng nền lớn hơn 2 lần so với chiều rộng của phần tử [chiều rộng: 200%, chiều cao: 100%], sau đó bảo nó định vị nền.
background: linear-gradient[to left, red 50%, blue 50%] right;
background-size: 200% 100%;
Khi di chuột, thay đổi vị trí nền thành left
và với transition:all 2s ease;
, vị trí sẽ thay đổi dần dần [nó đẹp hơn với linear
khó khăn]
background-position: left;
//jsfiddle.net/75Umu/3/
Đối với -Vendor -prefix'es, hãy xem các nhận xét cho câu hỏi của bạn
extra:
Nếu bạn muốn có một "chuyển đổi" trong màu sắc, bạn có thể thực hiện nó chiều rộng 300% và làm cho quá trình chuyển đổi bắt đầu ở mức 34% [hơn 1/3] và kết thúc ở mức 65% [ít hơn một chút so với 2/3 ].
background: linear-gradient[to left, red 34%, blue 65%] right;
background-size: 300% 100%;
Demo:
div {
font: 22px Arial;
display: inline-block;
padding: 1em 2em;
text-align: center;
color: white;
background: red; /* default color */
/* "to left" / "to right" - affects initial color */
background: linear-gradient[to left, salmon 50%, lightblue 50%] right;
background-size: 200%;
transition: .5s ease-out;
}
div:hover {
background-position: left;
}
Hover me
Nếu bạn muốn kiểm soát nhiều hơn về hướng của gradient, bạn có thể xác định một góc, thay vì các hướng được xác định trước [xuống dưới, trên cùng, sang phải, sang trái, dưới cùng bên phải, v.v.]. Giá trị 0DEG tương đương với "đến đầu". Giá trị 90deg tương đương với "sang phải". Giá trị 180deg tương đương với "đến dưới".
Cú pháp
CSS xác định ba loại gradient:
- Độ dốc tuyến tính [đi xuống/lên/trái/phải/theo đường chéo]
- Độ dốc xuyên tâm [được xác định bởi trung tâm của chúng]
- Độ dốc hình nón [xoay quanh một điểm trung tâm]
CSS độ dốc tuyến tính
Để tạo một gradient tuyến tính, bạn phải xác định ít nhất hai điểm dừng màu. Điểm dừng màu là màu sắc bạn muốn tạo ra sự chuyển đổi trơn tru giữa. Bạn cũng có thể đặt điểm bắt đầu và một hướng [hoặc một góc] cùng với hiệu ứng gradient.
Cú pháp
Hình ảnh nền: Linear-Gradient [Hướng, Color-Stop1, Color-Stop2, ...];
Hướng - từ trên xuống dưới [đây là mặc định]
Ví dụ sau đây cho thấy một gradient tuyến tính bắt đầu ở đầu. Nó bắt đầu màu đỏ, chuyển sang màu vàng:
từ trên xuống dưới [mặc định]
Hướng - Từ trái sang phải
Ví dụ sau đây cho thấy một gradient tuyến tính bắt đầu từ bên trái. Nó bắt đầu màu đỏ, chuyển sang màu vàng:
trái sang phải
Thí dụ
#grad {& nbsp; hình nền: tuyến tính-gradient [sang phải, đỏ, vàng];}
background-image: linear-gradient[to right, red , yellow];
}
Hãy tự mình thử »
Hướng - Đường chéo
Bạn có thể tạo một gradient theo đường chéo bằng cách chỉ định cả vị trí bắt đầu ngang và dọc.
Ví dụ sau đây cho thấy một gradient tuyến tính bắt đầu ở trên cùng bên trái [và đi xuống phía dưới bên phải]. Nó bắt đầu màu đỏ, chuyển sang màu vàng:
từ trên xuống từ trái sang dưới bên phải
Thí dụ
#grad {& nbsp; hình nền: tuyến tính-gradient [sang phải, đỏ, vàng];}
background-image: linear-gradient[to bottom right, red, yellow];
}
Hãy tự mình thử »
Hướng - Đường chéo
Bạn có thể tạo một gradient theo đường chéo bằng cách chỉ định cả vị trí bắt đầu ngang và dọc.
Ví dụ sau đây cho thấy một gradient tuyến tính bắt đầu ở trên cùng bên trái [và đi xuống phía dưới bên phải]. Nó bắt đầu màu đỏ, chuyển sang màu vàng:
từ trên xuống từ trái sang dưới bên phải
#grad {& nbsp; hình nền-hình ảnh: tuyến tính-gradient [xuống dưới bên phải, đỏ, vàng];}
180deg
Thí dụ
#grad {& nbsp; hình nền: tuyến tính-gradient [sang phải, đỏ, vàng];}
background-image: linear-gradient[180deg, red, yellow];
}
Hãy tự mình thử »
Hướng - Đường chéo
Bạn có thể tạo một gradient theo đường chéo bằng cách chỉ định cả vị trí bắt đầu ngang và dọc.
Thí dụ
#grad {& nbsp; hình nền: tuyến tính-gradient [sang phải, đỏ, vàng];}
background-image: linear-gradient[red, yellow, green];
}
Hãy tự mình thử »
Hướng - Đường chéo
Bạn có thể tạo một gradient theo đường chéo bằng cách chỉ định cả vị trí bắt đầu ngang và dọc.
Thí dụ
#grad {& nbsp; hình nền: tuyến tính-gradient [sang phải, đỏ, vàng];}
background-image: linear-gradient[to right, red,orange,yellow,green,blue,indigo,violet];
}
Hãy tự mình thử »
Hướng - Đường chéo
Bạn có thể tạo một gradient theo đường chéo bằng cách chỉ định cả vị trí bắt đầu ngang và dọc.
Ví dụ sau đây cho thấy một gradient tuyến tính bắt đầu ở trên cùng bên trái [và đi xuống phía dưới bên phải]. Nó bắt đầu màu đỏ, chuyển sang màu vàng:
từ trên xuống từ trái sang dưới bên phải
Thí dụ
#grad {& nbsp; hình nền: tuyến tính-gradient [sang phải, đỏ, vàng];}
background-image: linear-gradient[to right, rgba[255,0,0,0], rgba[255,0,0,1]];
}
Hãy tự mình thử »
Hướng - Đường chéo
Bạn có thể tạo một gradient theo đường chéo bằng cách chỉ định cả vị trí bắt đầu ngang và dọc.
Thí dụ
#grad {& nbsp; hình nền: tuyến tính-gradient [sang phải, đỏ, vàng];}
Hãy tự mình thử »
background-image: repeating-linear-gradient[red, yellow 10%, green 20%];
}
Hãy tự mình thử »