Hướng dẫn is css very difficult? - css có khó lắm không?
CSS là ngôn ngữ chúng tôi sử dụng để tạo kiểu cho một tài liệu HTML. Show
CSS mô tả cách hiển thị các phần tử HTML. Hướng dẫn này sẽ dạy bạn CSS từ cơ bản đến nâng cao. Bắt đầu học CSS ngay bây giờ » Ví dụ trong mỗi chươngHướng dẫn CSS này chứa hàng trăm ví dụ CSS. Với trình soạn thảo trực tuyến của chúng tôi, bạn có thể chỉnh sửa CSS và nhấp vào nút để xem kết quả. Ví dụ CSS Body {& nbsp; & nbsp; màu nền: lightBlue;} H2 {& nbsp; & nbsp; màu: màu trắng; & nbsp; & nbsp; văn bản-align: trung tâm; } p {& nbsp; Phông chữ-gia đình: Verdana; & nbsp; & nbsp; kích thước phông chữ: 20px; } Hãy tự mình thử » Nhấp vào nút "Hãy tự mình thử" để xem nó hoạt động như thế nào. Ví dụ CSSTìm hiểu từ hơn 300 ví dụ! Với trình chỉnh sửa của chúng tôi, bạn có thể chỉnh sửa CSS và nhấp vào nút để xem kết quả. Đi đến ví dụ CSS! Sử dụng menuChúng tôi khuyên bạn nên đọc hướng dẫn này, trong chuỗi được liệt kê trong menu. Nếu bạn có một màn hình lớn, menu sẽ luôn có mặt ở bên trái. Nếu bạn có một màn hình nhỏ, hãy mở menu bằng cách nhấp vào dấu hiệu Menu trên cùng.☰. Mẫu CSSChúng tôi đã tạo một số mẫu W3.CSS đáp ứng để bạn sử dụng. Bạn có thể tự do sửa đổi, lưu, chia sẻ và sử dụng chúng trong tất cả các dự án của bạn. Mẫu CSS miễn phí! Bài tập CSSCâu đố CSSKiểm tra kỹ năng CSS của bạn với một bài kiểm tra. Bắt đầu câu đố CSS! Việc học của tôiTheo dõi tiến trình của bạn với chương trình "Học tập" miễn phí tại đây tại W3Schools. Đăng nhập vào tài khoản của bạn và bắt đầu kiếm điểm! Đây là một tính năng tùy chọn. Bạn có thể học W3Schools mà không cần sử dụng học tập của tôi.
Tài liệu tham khảo CSSTại W3Schools, bạn sẽ tìm thấy các tài liệu tham khảo CSS hoàn chỉnh của tất cả các thuộc tính và bộ chọn với cú pháp, ví dụ, hỗ trợ trình duyệt, v.v. Khởi động sự nghiệp của bạnĐược chứng nhận bằng cách hoàn thành khóa họcthe course Được chứng nhận W3SchoolScertified.2022Lời khuyên và hướng dẫn cấp cao để viết CSS lành mạnh, có thể quản lý, có thể mở rộngHướng dẫn CSS là một tài liệu của tôi, Harry Roberts. Tôi là một kiến trúc sư đầu tư tư vấn từ Vương quốc Anh và tôi giúp các công ty trên toàn thế giới viết và quản lý UI chất lượng tốt hơn cho các sản phẩm và nhóm của họ. Tôi có sẵn để thuê. Theo dõi tôi trên Twitter hoặc thuê tôiTwitter or Hire Me Hỗ trợ các hướng dẫnHướng dẫn CSS được cung cấp thông qua mô hình thanh toán giống như bạn từ 0 đô la trở lên. Nếu hướng dẫn CSS hữu ích cho bạn hoặc nhóm của bạn, vui lòng xem xét hỗ trợ nó. Hỗ trợ các hướng dẫn Nhận thông tin cập nhật về các thay đổi, bổ sung và các phần mới và sắp tới bằng cách theo dõi @CSSSguidelines trên Twitter. Nội dung
Tiếp theo
Giới thiệuTầm quan trọng của một kiểu dáng Từ chối trách nhiệm
Rộng 80 ký tự Tầm quan trọng của một kiểu dángTừ chối trách nhiệm
Giải phẫu của một quy tắc CSS đa dòng
HTML Từ chối trách nhiệmCú pháp và định dạng Nhiều tập tin Cú pháp và định dạngNhiều tập tin Mục lục Ở cấp độ rất cao, chúng tôi muốn
Nhưng, như với bất cứ điều gì, các chi tiết cụ thể có phần không liên quan đến sự thống nhất là chìa khóa. Nhiều tập tinVới sự gia tăng thiên thạch của các tiền xử lý muộn, thường là trường hợp các nhà phát triển đang chia CSS trên nhiều tệp. Ngay cả khi không sử dụng bộ xử lý tiền xử lý, nên chia các đoạn mã riêng biệt vào các tệp của riêng họ, được nối trong bước xây dựng. Nếu, vì bất kỳ lý do gì, bạn không làm việc trên nhiều tệp, các phần tiếp theo có thể yêu cầu một số uốn cong để phù hợp với thiết lập của bạn. Mục lụcMột bảng nội dung là một chi phí bảo trì khá đáng kể, nhưng những lợi ích mà nó mang lại vượt xa mọi chi phí. Phải mất một nhà phát triển siêng năng để giữ một bảng nội dung được cập nhật, nhưng nó rất đáng để gắn bó. Một bảng nội dung cập nhật cung cấp cho một nhóm một danh mục chính thống về những gì trong dự án CSS, những gì nó làm và theo thứ tự nào. Một bảng nội dung đơn giản sẽ theo thứ tự, một cách tự nhiên, chỉ đơn giản là cung cấp tên của phần và một bản tóm tắt ngắn gọn về những gì nó là và làm, ví dụ::
Mỗi mục ánh xạ vào một phần và/hoặc bao gồm. Đương nhiên, phần này sẽ lớn hơn đáng kể đối với phần lớn các dự án, nhưng hy vọng chúng ta có thể thấy phần này trong phần này trong các nhà phát triển cung cấp cho các nhà phát triển với một cái nhìn toàn diện về những gì đang được sử dụng ở đâu và tại sao. Rộng 80 ký tựNếu có thể, giới hạn các tệp CSS có chiều rộng đến 80 ký tự. Lý do cho điều này bao gồm
Sẽ có những ngoại lệ không thể tránh khỏi đối với quy tắc này, chẳng hạn như các URL, hoặc cú pháp gradient, điều mà không nên lo lắng. Tiêu đềBắt đầu mọi phần chính mới của dự án CSS với tiêu đề:
Tiêu đề của phần này được đặt trước với biểu tượng băm ( 6) để cho phép chúng tôi thực hiện các tìm kiếm được nhắm mục tiêu nhiều hơn (ví dụ: 7, v.v.): Thay vì tìm kiếm chỉ mục tiêu. #Phần tiêu đề chỉ nên trả lại phần trong câu hỏi.Để lại một cỗ xe trở lại giữa tiêu đề này và dòng mã tiếp theo (có thể là một bình luận, một số sass hoặc một số CSS). Nếu bạn đang làm việc trên một dự án trong đó mỗi phần là tệp riêng của nó, tiêu đề này sẽ xuất hiện ở đầu mỗi phần. Nếu bạn đang làm việc trên một dự án với nhiều phần cho mỗi tệp, mỗi tiêu đề sẽ được đi trước bởi năm (5) lợi nhuận vận chuyển. Điều này có thêm khoảng trắng kết hợp với một tiêu đề giúp các phần mới dễ dàng phát hiện hơn nhiều khi cuộn qua các tệp lớn:
Giải phẫu của một quy tắcTrước khi chúng ta thảo luận về cách chúng ta viết ra các quy tắc của mình, trước tiên hãy để bản thân làm quen với thuật ngữ có liên quan:
Ví dụ:
Ở đây bạn có thể thấy chúng tôi có
Định dạng này dường như là tiêu chuẩn phần lớn phổ biến (ngoại trừ các biến thể về số lượng không gian, với rất nhiều nhà phát triển thích hai (2)). Như vậy, điều sau đây sẽ không chính xác:
Các vấn đề ở đây bao gồm
CSS đa dòngCSS nên được viết trên nhiều dòng, ngoại trừ trong các trường hợp rất cụ thể. Có một số lợi ích cho việc này:
Các ngoại lệ cho quy tắc này nên khá rõ ràng, chẳng hạn như các quy tắc tương tự chỉ mang theo một tuyên bố, ví dụ:
Những loại quy tắc này được hưởng lợi từ việc xếp hàng vì
Thụt lềCũng như thụt lề các khai báo riêng lẻ, ví dụ như toàn bộ các quy tắc liên quan để báo hiệu mối quan hệ của chúng với nhau, ví dụ:
Bằng cách này, một nhà phát triển có thể nhìn thấy trong nháy mắt rằng ____79 sống bên trong 0 sống bên trong 1.Sự lặp lại gần như của DOM cho các nhà phát triển nói rất nhiều về nơi các lớp dự kiến sẽ được sử dụng mà không cần phải đề cập đến một đoạn HTML. Thụt lề sassSASS cung cấp chức năng làm tổ. Điều đó có nghĩa là, bằng cách viết điều này:
Chúng tôi sẽ bị bỏ lại với CSS đã biên dịch này: 0Khi thụt vào sass, chúng tôi dính vào cùng hai (2) không gian, và chúng tôi cũng để lại một đường trống trước và sau các quy tắc lồng nhau. N.B. Nên tránh làm tổ trong Sass bất cứ nơi nào có thể. Xem phần đặc hiệu để biết thêm chi tiết. Nesting in Sass should be avoided wherever possible. See the Specificity section for more details. Liên kếtCố gắng sắp xếp các chuỗi giống hệt nhau và liên quan trong các khai báo, ví dụ: 1Điều này làm cho cuộc sống dễ dàng hơn một chút đối với các nhà phát triển có trình chỉnh sửa văn bản hỗ trợ chỉnh sửa cột, cho phép họ thay đổi một số dòng giống hệt nhau và căn chỉnh trong một lần. Khoảng trắng có ý nghĩaCũng như thụt lề, chúng tôi có thể cung cấp rất nhiều thông tin thông qua việc sử dụng khoảng trắng tự do và hợp lý giữa các quy tắc. Chúng tôi sử dụng:
Ví dụ: 2Không bao giờ nên có một kịch bản trong đó hai quy tắc không có một ranh giới trống giữa chúng. Điều này sẽ không chính xác: 3HTMLVới HTML và CSS, bản chất được kết nối với nhau, sẽ không có gì để tôi không bao gồm một số cú pháp và hướng dẫn định dạng cho đánh dấu. Luôn luôn trích dẫn các thuộc tính, ngay cả khi chúng sẽ làm việc mà không có. Điều này làm giảm cơ hội tai nạn, và là một định dạng quen thuộc hơn cho phần lớn các nhà phát triển. Đối với tất cả điều này sẽ hoạt động (và là hợp lệ): Định dạng này được ưa thích: Các trích dẫn không được yêu cầu ở đây, nhưng ERR về phía an toàn và bao gồm chúng. Khi viết nhiều giá trị trong một thuộc tính lớp, hãy tách chúng bằng hai không gian, do đó: Khi nhiều lớp có liên quan với nhau, hãy xem xét nhóm chúng trong ngoặc vuông ( 2 và 3), như vậy: 4Đây không phải là một khuyến nghị chắc chắn, và là thứ tôi vẫn đang thử nghiệm bản thân mình, nhưng nó mang lại một số lợi ích. Đọc thêm trong nhóm các lớp liên quan trong đánh dấu của bạn. Như với các quy tắc của chúng tôi, có thể sử dụng khoảng trắng có ý nghĩa trong HTML của bạn. Bạn có thể biểu thị các lần phá vỡ theo chủ đề trong nội dung với năm (5) dòng trống, ví dụ: 5Ví dụ, tách biệt các đoạn đánh dấu độc lập nhưng liên quan đến lỏng lẻo với một dòng trống duy nhất: 6Điều này cho phép các nhà phát triển phát hiện ra các phần riêng biệt của DOM trong nháy mắt, và cũng cho phép một số trình chỉnh sửa văn bản nhất định như VIM, ví dụ như để thao tác các khối đánh dấu được loại bỏ trống. Đọc thêm
Chi phí nhận thức của việc làm việc với CSS là rất lớn. Với rất nhiều điều đáng chú ý, và rất nhiều sắc thái dành riêng cho dự án, tình huống tồi tệ nhất mà hầu hết các nhà phát triển thấy mình đang trở thành người mà-write-write-code. Ghi nhớ các lớp, quy tắc, đối tượng và người trợ giúp của riêng bạn có thể quản lý được ở một mức độ, nhưng bất kỳ ai thừa hưởng CSS hầu như không có cơ hội. CSS cần thêm ý kiến. Vì CSS là một thứ gì đó có ngôn ngữ tuyên bố mà không thực sự để lại nhiều đường mòn giấy, nên thường rất khó để nhận ra từ khi nhìn vào CSS một mình
Điều này thậm chí còn có tính đến một số CSS, nhiều điều kỳ quặc như nhiều loại khác nhau của 4 kích hoạt bối cảnh định dạng khối, hoặc các thuộc tính biến đổi nhất định kích hoạt tăng tốc phần cứng mà làm cho nó trở nên khó khăn hơn đối với các nhà phát triển kế thừa các dự án.
Kết quả của CSS không kể câu chuyện của riêng mình, đó là một ngôn ngữ thực sự được hưởng lợi từ việc được bình luận rất nhiều. Theo quy định, bạn nên bình luận bất cứ điều gì không rõ ràng ngay lập tức từ mã. Điều đó có nghĩa là, không cần phải nói với ai đó rằng 5 sẽ tạo ra thứ gì đó màu đỏ, nhưng nếu bạn sử dụng 6 để xóa phao, trái ngược với việc cắt một yếu tố tràn ra, thì điều này có lẽ là điều đáng ghi lại.High-levelĐối với các nhận xét lớn tài liệu toàn bộ các phần hoặc thành phần, chúng tôi sử dụng nhận xét đa dòng docblock-esque tuân thủ chiều rộng 80 cột của chúng tôi. Dưới đây là một ví dụ thực tế từ CSS tạo kiểu tiêu đề trang trên Wizardry CSS: 7Mức độ chi tiết này phải là tiêu chuẩn cho tất cả các mô tả mã không tầm thường về các trạng thái, hoán vị, điều kiện và phương pháp điều trị. Con trỏ mở rộng đối tượngKhi làm việc trên nhiều phần hoặc theo cách thức OOCSS, bạn sẽ thường thấy rằng các quy tắc có thể hoạt động cùng nhau không phải lúc nào cũng ở cùng một tệp hoặc vị trí. Ví dụ: bạn có thể có một đối tượng nút chung, cung cấp các kiểu cấu trúc thuần túy, được mở rộng trong một phần cấp độ thành phần sẽ thêm mỹ phẩm. Chúng tôi ghi lại mối quan hệ này trên các tệp với các con trỏ mở rộng đối tượng đơn giản. Trong tệp đối tượng: 8Và trong tập tin chủ đề của bạn: 9Nhận xét đơn giản, nỗ lực thấp này có thể tạo ra nhiều sự khác biệt cho các nhà phát triển không biết về các mối quan hệ giữa các dự án hoặc những người muốn biết làm thế nào, tại sao và nơi các phong cách khác có thể được kế thừa. Low-levelThông thường, chúng tôi muốn bình luận về các tuyên bố cụ thể (nghĩa là các dòng) trong một quy tắc. Để làm điều này, chúng tôi sử dụng một loại chú thích ngược. Dưới đây là một nhận xét phức tạp hơn chi tiết các tiêu đề trang web lớn hơn được đề cập ở trên: 0Những loại bình luận này cho phép chúng tôi giữ tất cả các tài liệu của chúng tôi ở một nơi trong khi đề cập đến các phần của quy tắc mà chúng thuộc về. Với hầu hết các bộ xử lý nếu không phải tất cả các bộ xử lý, chúng tôi có tùy chọn để viết các bình luận sẽ không được biên dịch vào tệp CSS kết quả của chúng tôi. Theo quy định, hãy sử dụng các bình luận này để tài liệu mã không được ghi vào tệp CSS đó. Nếu bạn đang ghi lại mã sẽ được biên dịch, hãy sử dụng các nhận xét cũng sẽ biên dịch. Ví dụ, điều này là chính xác: 1Chúng tôi đã ghi lại các biến mã hóa mã sẽ không được biên dịch vào tệp CSS của chúng tôi với các nhận xét tiền xử lý, trong khi mã CSS của chúng tôi sẽ được biên dịch vào tệp CSS của chúng tôi là được ghi lại bằng cách sử dụng các nhận xét CSS. Điều này có nghĩa là chúng tôi chỉ có các thông tin chính xác và liên quan có sẵn cho chúng tôi khi gỡ lỗi các kiểu dáng được biên dịch của chúng tôi. Không nên nói rằng không có ý kiến nào nên đi vào môi trường sản xuất, tất cả các CSS nên được thu nhỏ, dẫn đến mất bình luận, trước khi được triển khai. Đặt tên quy ướcCác quy ước đặt tên trong CSS rất hữu ích trong việc làm cho mã của bạn nghiêm ngặt hơn, minh bạch hơn và nhiều thông tin hơn. Một hội nghị đặt tên tốt sẽ cho bạn biết và nhóm của bạn
Công ước đặt tên mà tôi tuân theo rất đơn giản: dấu gạch nối ( 7), với việc đặt tên giống như BEM cho các đoạn mã phức tạp hơn.Nó đáng chú ý rằng một quy ước đặt tên thường không hữu ích cho sự phát triển của CSS; Họ thực sự trở thành của riêng họ khi được xem trong HTML. Dấu gạch nối được phân địnhTất cả các chuỗi trong các lớp được phân định bằng dấu gạch nối ( 7), như vậy: 2Trường hợp lạc đà và gạch dưới không được sử dụng cho các lớp học thông thường; sau đây không chính xác: 3Đặt tên giống như BEMĐối với các phần UI lớn hơn, có liên quan hơn đến một số lớp, chúng tôi sử dụng quy ước đặt tên giống như BEM. BEM, có nghĩa là khối, phần tử, công cụ sửa đổi, là một phương pháp trước được đặt ra bởi các nhà phát triển làm việc tại Yandex. Trong khi Bem là một phương pháp hoàn chỉnh, ở đây chúng tôi chỉ quan tâm đến quy ước đặt tên của nó. Hơn nữa, quy ước đặt tên ở đây chỉ giống BEM; Các nguyên tắc chính xác giống nhau, nhưng cú pháp thực tế khác nhau một chút. BEM chia các thành phần của các lớp học thành ba nhóm:
Để có một sự tương tự (lưu ý, không phải là một ví dụ): 4Các yếu tố được phân định với hai (2) dấu gạch dưới ( 9) và các công cụ sửa đổi được phân định bởi hai (2) dấu gạch nối ( 0).Ở đây chúng ta có thể thấy rằng 1 là khối; Đó là gốc duy nhất của một thực thể rời rạc. 2 là một yếu tố; Nó là một phần nhỏ hơn của khối 1. Cuối cùng, 4 là một công cụ sửa đổi; Nó là một biến thể cụ thể của khối 1.Bối cảnh bắt đầuBối cảnh khối của bạn bắt đầu ở vị trí hợp lý nhất, khép kín, riêng biệt. Để tiếp tục với sự tương tự dựa trên con người của chúng tôi, chúng tôi không có một lớp như 6, vì căn phòng là một bối cảnh khác, cao hơn nhiều. Chúng tôi có thể có các khối riêng biệt, như vậy: 5Nếu chúng ta muốn biểu thị một 1 bên trong 8, việc sử dụng bộ chọn như 9 sẽ chính xác hơn, kết nối hai khối so với việc tăng phạm vi của các khối và phần tử hiện có.Một ví dụ thực tế hơn về các khối được phạm vi đúng có thể trông giống như thế này, trong đó mỗi đoạn mã đại diện cho khối riêng của nó: 6Ký hiệu không chính xác cho điều này sẽ là: 7Điều quan trọng là phải biết khi nào phạm vi BEM bắt đầu và dừng lại. Theo quy định, BEM áp dụng cho các bộ phận độc lập, riêng biệt của UI. Nhiều lớp hơnNếu chúng ta thêm một phần tử khác được gọi là, hãy nói, ____ 100 100 vào thành phần ____991 này, chúng ta sẽ không cần phải bước qua từng lớp của DOM. Điều đó có nghĩa là, ký hiệu chính xác sẽ là 00, chứ không phải 03. Các lớp học của bạn không phản ánh toàn bộ đường mòn giấy của DOM.Sửa đổi các yếu tốBạn có thể có các biến thể của các yếu tố, và chúng có thể được biểu thị theo một số cách tùy thuộc vào cách thức và lý do chúng được sửa đổi. Tiếp tục với ví dụ về con người của chúng tôi, một con mắt xanh có thể trông như thế này: Ở đây chúng ta có thể thấy chúng ta trực tiếp sửa đổi phần tử mắt. Mọi thứ có thể trở nên phức tạp hơn, tuy nhiên. Xin thứ lỗi cho sự tương tự thô thiển, và hãy để Lôi tưởng tượng chúng ta có một yếu tố khuôn mặt đẹp trai. Bản thân người đó không đẹp trai, vì vậy chúng tôi sửa đổi phần tử khuôn mặt trực tiếp, một khuôn mặt đẹp trai trên một người bình thường: 8Nhưng điều gì sẽ xảy ra nếu người đó đẹp trai, và chúng ta muốn tạo kiểu cho khuôn mặt của họ vì thực tế đó? Một khuôn mặt thường xuyên trên một người đẹp trai: 9Đây là một trong một vài lần chúng tôi sử dụng bộ chọn hậu duệ để sửa đổi một phần tử dựa trên một công cụ sửa đổi trên khối. Nếu sử dụng SASS, chúng ta có thể sẽ viết điều này như vậy: 0Lưu ý rằng chúng tôi không làm tổ một ví dụ mới của 04 bên trong 05; Thay vào đó, chúng tôi sử dụng các bộ chọn phụ huynh SASS, để chuẩn bị cho 06 vào bộ chọn 04 hiện có. Điều này có nghĩa là tất cả các quy tắc liên quan đến ____ 104 của chúng tôi tồn tại ở một nơi và aren lan truyền trong toàn bộ tệp. Đây là thực tiễn tốt chung khi xử lý mã lồng nhau: Giữ tất cả bối cảnh của bạn (ví dụ: tất cả mã 04) được đóng gói ở một vị trí.Đặt tên quy ước trong HTMLNhư trước đây tôi đã gợi ý, các quy ước đặt tên không nhất thiết phải là tất cả những gì hữu ích trong CSS của bạn. Trường hợp các quy ước đặt tên cho sức mạnh của bạn thực sự nằm trong sự đánh dấu của bạn. Lấy những điều sau đây, không đặt tên HTML: 1Làm thế nào các lớp 10 và 11 liên quan đến nhau? Làm thế nào các lớp 11 và 13 liên quan đến nhau? Chúng có liên quan gì không? Bạn có nên sử dụng 14 cùng với 15 không? Các lớp 16 và 11 sẽ sống trong cùng một phần của CSS? Bạn có thể sử dụng 13 bất cứ nơi nào khác không?Từ việc đánh dấu đó, rất khó để trả lời bất kỳ câu hỏi nào. Tuy nhiên, sử dụng quy ước đặt tên thay đổi tất cả: 2Bây giờ chúng ta có thể thấy rõ các lớp nào và không liên quan đến nhau và làm thế nào; Chúng tôi biết những lớp chúng tôi có thể sử dụng ngoài phạm vi của thành phần này; Và chúng tôi biết những lớp nào chúng tôi có thể được tự do sử dụng lại ở nơi khác. Móc JavaScriptTheo quy định, việc liên kết CSS và JS của bạn vào cùng một lớp là không khôn ngoan trong cùng một lớp trong HTML của bạn. Điều này là do làm như vậy có nghĩa là bạn có thể có (hoặc loại bỏ) cái này mà không (loại bỏ) cái kia. Nó sạch hơn nhiều, minh bạch hơn nhiều và có thể duy trì hơn nhiều để liên kết JS của bạn vào các lớp cụ thể. Tôi đã biết những dịp trước đây khi cố gắng tái cấu trúc một số CSS đã vô tình xóa chức năng JS vì hai người được gắn với nhau, không thể có cái này mà không có cái khác. Thông thường, đây là các lớp được chuẩn bị với 19, ví dụ: 3Điều này có nghĩa là chúng ta có thể có một yếu tố ở nơi khác có thể mang theo kiểu 20, nhưng không có hành vi của 21.
.foo, .foo--bar, .baz
{
display:block;
background-color:green;
color:red }
|