Cách tạo ảnh động web được mã hóa đẹp mắt với Mo.JS

Cách tạo ảnh động web được mã hóa đẹp mắt với Mo.JS

Nếu bạn đang muốn bắt đầu trang web của riêng bạn , hình ảnh động đẹp mắt có thể làm cho nó tỏa sáng. Có nhiều cách để đạt được điều này, đơn giản là tạo GIF động từ một đoạn phim hiện có, đến học cách tự làm từ đầu với phần mềm như Máy xay hoặc Maya .





Ngoài ra còn có các thư viện có sẵn để tạo hoạt ảnh theo chương trình. Trong lịch sử, các lập trình viên web sử dụng jQuery để tạo các hoạt ảnh đơn giản, nhưng khi web phát triển và HTML5 đã trở thành tiêu chuẩn mới, các tùy chọn mới xuất hiện. Các thư viện CSS cho hoạt ảnh trở nên cực kỳ mạnh mẽ trong khuôn khổ mới, cùng với các thư viện JavaScript được thiết kế đặc biệt cho hoạt ảnh vectơ trong trình duyệt.





Hôm nay chúng ta sẽ xem xét mo.js, một trong những đứa trẻ mới hơn trong lĩnh vực tạo hình ảnh đẹp từ mã. Chúng tôi sẽ trình bày một số chức năng cơ bản, trước khi tạo chuỗi hoạt ảnh phản ứng người dùng để tạo ra các mẫu đẹp.





Nhập Mo.js

Mo.js là một thư viện để tạo đồ họa chuyển động cho web một cách dễ dàng. Nó được thiết kế để làm cho việc tạo ra những thứ đẹp đẽ trở nên đơn giản đối với những người không quá am hiểu về code, đồng thời cho phép các lập trình viên kỳ cựu khám phá khía cạnh nghệ thuật mà họ chưa từng biết họ có. Như tên gọi của nó cho thấy, nó dựa trên ngôn ngữ lập trình JavaScript phổ biến, mặc dù nó được triển khai theo cách mà bất kỳ ai cũng có thể tiếp thu kiến ​​thức cơ bản một cách dễ dàng.

Trước khi đi xa hơn, chúng ta hãy xem những gì chúng ta sẽ tạo ra ngày hôm nay:



Chúng tôi sẽ sử dụng CodePen cho dự án hôm nay, vì nó cho phép chúng tôi làm việc trên mọi thứ trong cùng một cửa sổ trình duyệt. Nếu bạn muốn, bạn có thể làm việc trong một biên tập viên của sự lựa chọn của bạn thay thế. Nếu bạn muốn bỏ qua hướng dẫn từng bước, mã đầy đủ có sẵn tại đây.

Thiết lập Pen mới và bạn sẽ được chào đón với màn hình này:





Trước khi bắt đầu, bạn cần thực hiện một vài thay đổi. Bấm vào Cài đặt ở trên cùng bên phải và điều hướng đến JavaScript chuyển hướng.

Chúng tôi sẽ sử dụng Babel là bộ xử lý trước mã của chúng tôi, vì vậy hãy chọn phần này từ trình đơn thả xuống. Babel làm cho JavaScript dễ hiểu hơn một chút, cùng với việc cung cấp ECMAScript 6 hỗ trợ cho các trình duyệt cũ hơn. Nếu bạn không biết điều đó có nghĩa là gì, đừng lo lắng , nó sẽ giúp cuộc sống của chúng ta dễ dàng hơn một chút ở đây.





Chúng tôi cũng cần nhập thư viện mo.js vào dự án. Làm điều này bằng cách tìm kiếm mo.js bên trong Thêm tập lệnh / bút bên ngoài lời nhắc văn bản và chọn nó.

Với hai điều này tại chỗ, hãy nhấp vào Lưu và đóng . Chúng tôi đã sẵn sàng để bắt đầu!

Hình dạng cơ bản với Mo.js

Trước khi bắt đầu với đồ họa, hãy làm điều gì đó với nền trắng chói mắt đó trong khung xem. Thay đổi thuộc tính màu nền bằng cách viết mã này trong CSS bánh mỳ.

body{
background: rgba(11,11,11,1);
}

Tạo một hình dạng là một quá trình đơn giản và khái niệm đằng sau nó thúc đẩy toàn bộ thư viện. Hãy thiết lập một hình tròn mặc định. Nhập mã này vào JS bánh mỳ:

const redCirc = new mojs.Shape({
isShowStart:true
});

Ở đây, chúng tôi đã tạo ra một hăng sô giá trị với tên redCirc và giao nó cho một mojs mới. . Nếu bạn chưa quen với việc viết mã, hãy chú ý đến thứ tự dấu ngoặc ở đây và đừng quên dấu chấm phẩy ở cuối!

Cho đến nay, chúng tôi không có tham số nào ngoại trừ isShowStart: true , có nghĩa là nó sẽ xuất hiện trên màn hình ngay cả trước khi chúng tôi chỉ định cho nó bất kỳ chuyển động nào. Bạn sẽ thấy rằng nó đã đặt một vòng tròn màu hồng ở giữa màn hình:

Vòng kết nối này là mặc định Hình dạng cho mo.js. Chúng tôi có thể thay đổi hình dạng này dễ dàng bằng cách thêm một dòng vào mã của chúng tôi:

const redCirc = new mojs.Shape({
isShowStart:true,
shape:'rect'
});

Để thêm nhiều thuộc tính hơn vào một đối tượng, chúng ta sử dụng dấu phẩy để phân tách nó. Ở đây, chúng tôi đã thêm một hình dạng tài sản và định nghĩa nó là một 'trực tràng' . Lưu bút của bạn và bạn sẽ thấy hình dạng mặc định thay đổi thành hình vuông.

Quá trình này chuyển các giá trị vào Hình dạng đối tượng là cách chúng tôi tùy chỉnh chúng. Ngay bây giờ chúng ta có một hình vuông không thực sự làm được nhiều. Hãy thử tạo hoạt ảnh cho một cái gì đó.

Khái niệm cơ bản về chuyển động

Để có được thứ gì đó trông ấn tượng hơn một chút, hãy thiết lập một hình tròn, với một nét màu đỏ xung quanh nó và không có tô màu bên trong.

const redCirc = new mojs.Shape({
isShowStart:true,
stroke:'red',
strokeWidth:5,
fill:'none',
radius:15
});

Như bạn có thể thấy, chúng tôi cũng đã chỉ định một chiều rộng giá trị của nét vẽ và một bán kính cho vòng tròn. Mọi thứ đã bắt đầu có chút khác biệt. Nếu hình dạng của bạn không cập nhật, hãy đảm bảo rằng bạn không bỏ sót bất kỳ dấu phẩy hoặc dấu ngoặc kép nào xung quanh 'mạng lưới' hoặc 'không ai' và đảm bảo rằng bạn đã nhấp vào cứu trên đầu của trang.

Hãy thêm một hình ảnh động vào cái này. Trong ví dụ trên, vòng tròn màu đỏ này xuất hiện ở nơi người dùng nhấp vào, trước khi mờ dần ra bên ngoài. Một cách chúng ta có thể làm cho điều này xảy ra là thay đổi bán kính và độ mờ theo thời gian. Hãy sửa đổi mã:

radius: {15:30},
opacity: {1:0},
duration:1000

Bằng cách thay đổi bán kính tài sản và thêm sự mờ đụckhoảng thời gian thuộc tính, chúng tôi đã đưa ra các hướng dẫn hình dạng để thực hiện theo thời gian. đó là Đồng bằng các đối tượng, giữ thông tin bắt đầu và kết thúc cho các thuộc tính này.

Bạn sẽ nhận thấy rằng không có gì đang xảy ra. Điều này là do chúng tôi chưa thêm .Phat() chức năng để yêu cầu nó thực hiện các hướng dẫn của chúng tôi. Thêm nó vào giữa dấu ngoặc cuối và dấu chấm phẩy, và bạn sẽ thấy vòng kết nối của mình trở nên sống động.

Bây giờ chúng ta đang đến một nơi nào đó, nhưng để làm cho nó thực sự đặc biệt, chúng ta hãy xem xét một vài khả năng chuyên sâu hơn.

Đặt hàng và giảm nhẹ với Mo.js

Ngay bây giờ, ngay sau khi vòng tròn xuất hiện, nó bắt đầu mờ đi. Điều này sẽ hoạt động hoàn toàn tốt, nhưng sẽ rất tuyệt nếu có thêm một chút kiểm soát.

Chúng tôi có thể làm điều này với .sau đó() hàm số. Thay vì để bán kính hoặc độ mờ của chúng ta thay đổi, hãy làm cho hình dạng của chúng ta ở lại nơi bắt đầu, trước khi thay đổi sau một khoảng thời gian nhất định.

const redCirc = new mojs.Shape({
isShowStart:true,
stroke:'red',
strokeWidth:5,
fill:'none',
radius: 15,
duration:1000
}).then({
//do more stuff here
}).play();

Bây giờ, hình dạng của chúng ta sẽ xuất hiện với các giá trị mà chúng ta đã gán cho nó, đợi trong 1000 mili giây, trước khi thực hiện bất cứ điều gì chúng ta đưa vào .sau đó() hàm số. Hãy thêm một số hướng dẫn giữa các dấu ngoặc:

//do more stuff here
strokeWidth: 0,
scale: { 1: 2, easing: 'sin.in' },
duration: 500

Đoạn mã này giới thiệu một phần quan trọng khác của hoạt ảnh. Nơi chúng tôi đã hướng dẫn tỉ lệ để thay đổi từ 1 thành 2, chúng tôi cũng đã chỉ định nới lỏng dựa trên sóng sin với sin.in . Mo.js có nhiều đường cong nới lỏng được tích hợp sẵn, với khả năng cho người dùng nâng cao thêm đường cong riêng của họ. Trong trường hợp này, quy mô theo thời gian xảy ra theo một sóng hình sin cong lên trên.

Để có cái nhìn trực quan về các đường cong khác nhau, hãy xem Phục sinh.net . Kết hợp điều này với Chiều rộng đột quỵ thay đổi thành 0 trong khoảng thời gian đã đặt của chúng tôi và bạn có hiệu ứng biến mất năng động hơn nhiều.

Hình dạng là cơ sở cho mọi thứ trong Mo.js, nhưng chúng chỉ là phần khởi đầu của câu chuyện. Chúng ta hãy nhìn vào Bùng nổ .

Bùng nổ tiềm năng trong Mo.js

ĐẾN Nổ trong Mo.js là một tập hợp các hình dạng phát ra từ một điểm trung tâm. Chúng tôi sẽ làm cho những điều này làm cơ sở cho hoạt ảnh đã hoàn thành của chúng tôi. Bạn có thể gọi cụm từ mặc định giống như cách bạn thực hiện một hình dạng. Hãy tạo một số tia lửa:

const sparks = new mojs.Burst({
}).play();

Bạn có thể thấy, chỉ bằng cách thêm một ô trống Nổ và yêu cầu nó phát, chúng tôi nhận được hiệu ứng bùng nổ mặc định. Chúng tôi có thể ảnh hưởng đến kích thước và vòng quay của cụm bằng cách tạo hoạt ảnh bán kínhgóc tính chất:

const sparks = new mojs.Burst({
radius: {0:30, easing:'cubic.out'},
angle:{0: 90,easing:'quad.out'},
}).play();

Hiện tại, chúng tôi đã thêm bán kính tùy chỉnh và quay vòng của chúng tôi:

Để làm cho chúng trông giống tia lửa hơn, hãy thay đổi hình dạng mà cụm sử dụng và số lượng hình dạng mà cụm tạo ra. Bạn thực hiện điều này bằng cách giải quyết các thuộc tính của các phần tử con của cụm.

const sparks = new mojs.Burst({
radius: {0:30, easing:'cubic.out'},
angle:{0: 90,easing:'quad.out'},
count:50,
children:{
shape: 'cross',
stroke: 'white',
points: 12,
radius:10,
fill:'none',
angle:{0:360},
duration:300
}
}).play();

Bạn sẽ nhận thấy rằng các thuộc tính con giống với các thuộc tính hình dạng mà chúng ta đã làm việc với. Lần này chúng tôi đã chọn một cây thánh giá làm hình dạng. Tất cả 50 hình dạng này hiện giữ các thuộc tính giống nhau. Nó bắt đầu trông khá tốt! Đây là điều đầu tiên người dùng sẽ thấy khi họ nhấp chuột.

Mặc dù vậy, chúng ta có thể thấy rằng nét vẽ màu đỏ của redCirc hình dạng tồn tại quá lâu. Hãy thử thay đổi thời lượng của nó để cả hai hoạt ảnh khớp với nhau. Nó sẽ kết thúc như thế này:

Chúng tôi còn lâu mới hoàn thành hoạt ảnh của mình, nhưng chúng ta hãy dành một chút thời gian để làm cho nó theo phản ứng của người dùng.

Sự kiện chính

Chúng tôi sẽ sử dụng trình xử lý sự kiện để kích hoạt hoạt ảnh của chúng tôi tại vị trí người dùng nhấp vào. Ở cuối khối mã của bạn, hãy thêm đoạn mã này:

document.addEventListener( 'click', function(e) {
});

Đoạn mã này lắng nghe các cú nhấp chuột và thực hiện bất kỳ hướng dẫn nào trong ngoặc cho chúng tôi. Chúng tôi có thể thêm của chúng tôi redCirctia lửa điện đối tượng cho người nghe này.

document.addEventListener( 'click', function(e) {
redCirc
.tune({ x: e.pageX, y: e.pageY, })
.replay();
sparks
.tune({ x: e.pageX, y: e.pageY })
.replay();
});

Hai chức năng chúng tôi gọi ở đây là .tune ().phát lại() . Chức năng phát lại tương tự như chức năng phát, mặc dù nó chỉ định rằng hoạt ảnh sẽ bắt đầu lại từ đầu mỗi khi nó được nhấp vào.

Các điều chỉnh hàm chuyển các giá trị vào đối tượng của chúng tôi để bạn có thể thay đổi mọi thứ khi nó được kích hoạt. Trong trường hợp này, chúng tôi đang chuyển tọa độ trang nơi con chuột được nhấp và chỉ định vị trí x và y của hoạt ảnh của chúng tôi cho phù hợp. Lưu mã của bạn và thử nhấp vào màn hình. Bạn sẽ nhận thấy một vài vấn đề.

Thứ nhất, hoạt ảnh ban đầu của chúng tôi vẫn hiển thị ở giữa màn hình, ngay cả khi người dùng không nhấp vào bất kỳ thứ gì. Thứ hai, hoạt ảnh không được kích hoạt tại điểm chuột, nhưng lệch xuống và sang phải. Chúng tôi có thể sửa chữa cả hai điều này một cách dễ dàng.

Hình dạng và sự bùng nổ của chúng tôi có .Phat() ở cuối các khối mã tương ứng của chúng. Chúng tôi không cần điều này nữa vì .phát lại() đang được gọi trong trình xử lý sự kiện. Bạn có thể xóa .play () khỏi cả hai khối mã. Vì lý do tương tự, bạn có thể xóa isShowStart: true quá, vì chúng tôi không còn cần nó hiển thị khi bắt đầu.

Để khắc phục sự cố định vị, chúng ta sẽ cần đặt các giá trị vị trí cho các đối tượng của chúng ta. Như bạn sẽ nhớ từ hình dạng đầu tiên của chúng tôi, mo.js đặt chúng ở giữa trang theo mặc định. Khi các giá trị này được kết hợp với vị trí chuột, nó sẽ tạo ra phần bù. Để loại bỏ phần bù này, chỉ cần thêm các dòng này vào cả hai redCirctia lửa điện các đối tượng:

left: 0,
top: 0,

Bây giờ, các giá trị vị trí duy nhất mà các đối tượng của chúng ta đảm nhận là các giá trị vị trí chuột được chuyển vào bởi trình xử lý sự kiện. Bây giờ mọi thứ sẽ hoạt động tốt hơn nhiều.

Quá trình thêm các đối tượng vào trình xử lý sự kiện này là cách chúng tôi sẽ kích hoạt tất cả các hoạt ảnh của mình, vì vậy Hãy nhớ thêm mọi đối tượng mới vào nó từ bây giờ! Bây giờ chúng ta đã có những điều cơ bản hoạt động theo cách chúng ta muốn, hãy thêm một số vụ nổ lớn hơn và sáng hơn.

Gây ảo giác

Hãy bắt đầu với một số hình tam giác quay. Ý tưởng ở đây là tạo ra một hiệu ứng nổi thôi miên và việc thiết lập điều này thực sự khá dễ dàng. Thêm một loạt khác với các thông số sau:

const triangles = new mojs.Burst({
radius: { 0 : 1000,easing: 'cubic.out'},
angle: {1080 : 0,easing: 'quad.out'},
left: 0, top: 0,
count: 20,
children : {
shape: 'polygon',
points: 3,
radius: { 10 : 100 },
fill: ['red','yellow','blue','green'],
duration: 3000
}
});

Mọi thứ ở đây bây giờ đã khá quen thuộc, mặc dù có một vài điểm mới. Bạn sẽ nhận thấy rằng thay vì xác định hình dạng là một hình tam giác, chúng tôi đã gọi nó là đa giác trước khi ấn định số lượng điểm nó có 3.

Chúng tôi cũng đã đưa ra lấp đầy chức năng một mảng màu để làm việc với, mỗi hình tam giác thứ năm sẽ trở lại màu đỏ và mô hình sẽ tiếp tục. Giá trị cao của góc cài đặt làm cho liên tục quay đủ nhanh để tạo ra hiệu ứng nhấp nháy của nó.

Nếu mã không hoạt động với bạn, hãy đảm bảo rằng bạn đã thêm đối tượng hình tam giác vào lớp trình xử lý sự kiện như chúng ta đã làm với các đối tượng trước đó.

Khá ảo giác! Hãy thêm một loạt khác để theo dõi nó.

Nhảy múa Pentagons

Chúng ta có thể sử dụng thứ gì đó gần giống với Hình tam giác đối tượng để thực hiện vụ nổ theo sau nó. Mã được sửa đổi một chút này tạo ra các hình lục giác quay chồng lên nhau có màu sắc rực rỡ:

const pentagons = new mojs.Burst({
radius: { 0 : 1000,easing: 'cubic.out'},
angle: {0 : 720,easing: 'quad.out'},
left: 0, top: 0,
count: 20,
children : {
shape: 'polygon',
radius: { 1 : 300 },
points: 5,
fill: ['purple','pink','yellow','green'],
delay:500,
duration: 3000
}
});

Thay đổi chính ở đây là chúng tôi đã thêm một trì hoãn 500ms, do đó, quá trình bùng nổ sẽ không bắt đầu cho đến sau các hình tam giác. Bằng cách thay đổi một vài giá trị, ý tưởng ở đây là làm cho chùm quay theo hướng ngược lại với các hình tam giác. Một cách tình cờ, vào thời điểm các hình ngũ giác xuất hiện, hiệu ứng nhấp nháy của các hình tam giác khiến nó trông giống như chúng đang quay cùng nhau.

Một chút ngẫu nhiên

Hãy thêm một hiệu ứng sử dụng các giá trị ngẫu nhiên. Tạo một loạt với các thuộc tính sau:

const redSparks = new mojs.Burst({
left: 0, top: 0,
count:8,
radius: { 150: 350 },
angle: {0:90 ,easing:'cubic.out'},
children: {
shape: 'line',
stroke: {'red':'transparent'},
strokeWidth: 5,
scaleX: {0.5:0},
degreeShift: 'rand(-90, 90)',
radius: 'rand(20, 300)',
duration: 500,
delay: 'rand(0, 150)',
}
});

Sự bùng nổ này sẽ tạo ra các đường bắt đầu có màu đỏ và mờ dần đến trong suốt, co lại theo thời gian. Điều làm cho thành phần này trở nên thú vị là các giá trị ngẫu nhiên được sử dụng để xác định một số thuộc tính của nó.

Các độ cung cấp cho đối tượng trẻ một góc bắt đầu. Bằng cách ngẫu nhiên hóa điều này, nó tạo ra một sự bùng nổ hoàn toàn khác nhau trên mỗi lần nhấp chuột. Giá trị ngẫu nhiên cũng được sử dụng cho bán kínhtrì hoãn chức năng để thêm vào hiệu ứng hỗn loạn.

Đây là hiệu ứng của chính nó:

Vì chúng tôi đang sử dụng các giá trị ngẫu nhiên ở đây, chúng tôi cần thêm một phương thức bổ sung vào trình xử lý sự kiện của chúng tôi cho đối tượng:

redSparks
.tune({ x: e.pageX, y: e.pageY })
.replay()
.generate();

Các phát ra() hàm tính toán các giá trị ngẫu nhiên mới mỗi khi sự kiện được gọi. Nếu không có điều này, hình dạng sẽ chọn các giá trị ngẫu nhiên lần đầu tiên nó được gọi và tiếp tục sử dụng các giá trị đó cho mọi lần gọi tiếp theo. Điều này sẽ hoàn toàn làm hỏng hiệu ứng, vì vậy hãy chắc chắn rằng bạn thêm điều này!

Bạn có thể sử dụng các giá trị ngẫu nhiên cho hầu hết mọi phần tử của đối tượng mo.js và chúng là một cách đơn giản để tạo hoạt ảnh độc đáo.

những điều thú vị để làm khi buồn chán

Tuy nhiên, ngẫu nhiên không phải là cách duy nhất để thêm các chuyển động động vào hình ảnh động. Hãy nhìn vào loạng choạng hàm số.

Đường kinh ngạc

Để thể hiện cách loạng choạng chức năng hoạt động, chúng tôi sẽ tạo ra một cái gì đó giống như Bánh xe Catherine. Tạo một loạt ảnh mới với các thông số sau:

const lines = new mojs.Burst({
radius: { 0 : 1000,easing: 'cubic.out'},
angle: {0 : 1440,easing: 'cubic.out'},
left: 0, top: 0,
count: 50,
children : {
shape: 'line',
radius: { 1 : 100,easing:'elastic.out' },
fill: 'none',
stroke: ['red','orange'],
delay:'stagger(10)',
duration: 1000
}
});

Mọi thứ ở đây giờ đã trở nên quen thuộc, một vụ nổ tạo ra 50 con có màu đỏ hoặc cam. Sự khác biệt ở đây là chúng tôi vượt qua trì hoãn tài sản a loạng choạng (10) hàm số. Điều này làm tăng thêm 10ms độ trễ giữa quá trình phát xạ của mọi đứa trẻ, tạo cho nó hiệu ứng quay mà chúng tôi đang tìm kiếm.

Hàm leng keng không sử dụng bất kỳ giá trị ngẫu nhiên nào, vì vậy bạn sẽ không cần phát ra trong trình xử lý sự kiện lần này. Hãy xem tất cả những gì chúng tôi có cho đến thời điểm này:

Chúng tôi có thể dễ dàng dừng lại ở đây, nhưng hãy chỉ thêm một lần nữa để hoàn thành dự án này.

Hình vuông thông minh

Đối với lần chụp cuối cùng này, chúng ta hãy làm một cái gì đó bằng cách sử dụng các hình chữ nhật. Thêm đối tượng này vào mã và trình xử lý sự kiện của bạn:

const redSquares = new mojs.Burst({
radius: { 0 : 1000,easing: 'cubic.out'},
angle: {360 : 0,easing: 'quad.out'},
left: 0, top: 0,
count: 20,
children : {
shape: 'rect',
radiusX: { 1 : 1000 },
radiusY:50,
points: 5,
fill: 'none',
stroke: {'red':'orange'},
strokeWidth:{5:15},
delay:1000,
duration: 3000
}
});

Đối tượng này không thêm bất cứ điều gì mới vào những gì chúng ta đã làm ngày hôm nay, nó chỉ được đưa vào để chỉ ra cách các mẫu hình học phức tạp có thể dễ dàng được tạo ra thông qua mã.

Đây không phải là kết quả dự kiến ​​của đối tượng này khi nó được tạo trong giai đoạn thử nghiệm khi viết hướng dẫn này. Khi mã chạy, rõ ràng là tôi đã tình cờ gặp phải một thứ đẹp đẽ hơn nhiều so với mục đích mà tôi có thể tạo ra!

Với đối tượng cuối cùng này được thêm vào, chúng ta đã hoàn thành. Hãy xem toàn bộ điều trong hành động.

Mo.js: Một công cụ mạnh mẽ cho hoạt ảnh trên web

Phần giới thiệu đơn giản về mo.js này bao gồm các công cụ cơ bản cần thiết để tạo các hình ảnh động đẹp mắt. Cách những công cụ đó được sử dụng có thể tạo ra hầu hết mọi thứ và đối với nhiều tác vụ, thư viện web là một giải pháp thay thế đơn giản cho việc sử dụng Photoshop , After Effects, hoặc phần mềm đắt tiền khác.

Thư viện này hữu ích cho những người làm việc trong cả lập trình và phát triển web, xử lý sự kiện được sử dụng trong dự án có thể dễ dàng được sử dụng để tạo các nút và văn bản phản ứng trên trang web hoặc trong ứng dụng. Hãy vui vẻ với nó: không có sai lầm, chỉ có tai nạn vui vẻ!

Đăng lại Đăng lại tiếng riu ríu E-mail Nâng cấp lên Windows 11 có đáng không?

Windows đã được thiết kế lại. Nhưng điều đó có đủ thuyết phục bạn chuyển từ Windows 10 sang Windows 11?

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • JavaScript
Giới thiệu về tác giả Ian Buckley(216 bài báo đã xuất bản)

Ian Buckley là một nhà báo tự do, nhạc sĩ, nghệ sĩ biểu diễn và nhà sản xuất video sống ở Berlin, Đức. Khi không viết hay trên sân khấu, anh ấy sẽ mày mò với các thiết bị điện tử hoặc mã tự làm với hy vọng trở thành một nhà khoa học điên rồ.

Xem thêm từ Ian Buckley

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký