Tệp .css lớn so với nhiều tệp .css cụ thể nhỏ hơn? [đóng cửa]


258

Có bất kỳ lợi thế nào khi có một tệp .css quái vật chứa các thành phần kiểu sẽ được sử dụng trên hầu hết các trang không?

Tôi nghĩ rằng để dễ quản lý, tôi muốn rút các loại CSS khác nhau vào một vài tệp và bao gồm mọi tệp trong chính của tôi <link />có tệ không?

Tôi nghĩ rằng điều này là tốt hơn

  1. vị trí.css
  2. nút.css
  3. bảng.css
  4. copy.css

so với

  1. trang web.css

Bạn đã thấy bất kỳ vấn đề nào khi thực hiện theo cách này so với cách khác chưa?


1
Đây là một câu hỏi cũ THỰC SỰ, nhưng đối mặt với cùng một vấn đề tôi đã tìm ra câu hỏi mà tôi nghĩ đó là giải pháp tốt nhất , trong trường hợp có người khác truy cập trang này. Nhiều tệp được nén bằng PHP và được gửi qua một yêu cầu.
Francisco Presencia

3
@FrankPresenciaFandos làm điều này là ổn đối với một trang web có lưu lượng truy cập thấp, nhưng việc chạy tập lệnh này nhiều lần trên các trang web có lưu lượng truy cập cao có vẻ hơi lạc hậu. Nếu bạn sử dụng tập lệnh xây dựng, bạn có thể có cả hai thế giới tốt nhất và vẫn duy trì máy chủ web hiệu suất vì nó không chạy tập lệnh php (bao giờ).
Chase Florell

2
Nó sẽ chỉ được chạy mỗi khi thay đổi css, và sau đó bạn phải bao gồm tệp css kết quả.
Francisco Presencia

Câu trả lời:


85

Một trình biên dịch CSS như Sass hoặc LESS là một cách tuyệt vời để đi. Bằng cách đó, bạn sẽ có thể phân phối một tệp CSS được thu nhỏ, duy nhất cho trang web (sẽ nhỏ hơn và nhanh hơn một tệp nguồn CSS đơn thông thường), trong khi vẫn duy trì môi trường phát triển đẹp nhất, với mọi thứ được phân chia gọn gàng thành các thành phần.

Sass và LESS có thêm lợi thế của các biến, lồng nhau và các cách khác để làm cho CSS dễ viết và duy trì hơn. Rất cao, rất khuyến khích. Cá nhân tôi hiện đang sử dụng Sass (cú pháp SCSS), nhưng đã sử dụng LESS trước đó. Cả hai đều tuyệt vời, với những lợi ích tương tự. Khi bạn đã viết CSS bằng trình biên dịch, không chắc bạn muốn làm gì nếu không có.

http://lesscss.org

http://sass-lang.com

Nếu bạn không muốn làm phiền với Ruby, trình biên dịch LESS cho Mac này thật tuyệt:

http://incident57.com/less/

Hoặc bạn có thể sử dụng CodeKit (bởi cùng một người):

http://incident57.com/codekit/

WinLess là một GUI Windows để kết nối LESS

http://winless.org/


2
Thay đổi câu trả lời được chấp nhận của tôi ở đây, vì đây thực sự là con đường để đi trong những ngày này. Khi tôi hỏi ban đầu, tôi không cảm thấy Sass hay LESS đã thực sự cất cánh.
Nate

144

Đây là một câu hỏi khó trả lời. Cả hai lựa chọn đều có ưu và nhược điểm theo ý kiến ​​của tôi.

Cá nhân tôi không thích đọc qua một tệp CSS HUGE và việc duy trì nó là rất khó. Mặt khác, việc tách nó ra gây ra các yêu cầu http bổ sung có khả năng làm mọi thứ chậm lại.

Ý kiến ​​của tôi sẽ là một trong hai điều.

1) Nếu bạn biết rằng CSS của bạn sẽ KHÔNG BAO GIỜ thay đổi khi bạn đã xây dựng nó, tôi sẽ xây dựng nhiều tệp CSS trong giai đoạn phát triển (để dễ đọc), sau đó kết hợp chúng theo cách thủ công trước khi đi vào hoạt động (để giảm yêu cầu http)

2) Nếu bạn biết rằng thỉnh thoảng bạn sẽ thay đổi CSS của mình và cần phải đọc nó, tôi sẽ xây dựng các tệp riêng biệt và sử dụng mã (cung cấp cho bạn sử dụng một số loại ngôn ngữ lập trình) để kết hợp chúng tại thời gian xây dựng thời gian chạy (thu nhỏ / kết hợp thời gian chạy là một con lợn tài nguyên).

Với một trong hai tùy chọn, tôi rất muốn giới thiệu bộ nhớ đệm ở phía máy khách để giảm thêm các yêu cầu http.

EDIT:
Tôi tìm thấy blog này cho thấy cách kết hợp CSS trong thời gian chạy bằng cách sử dụng không có gì ngoài mã. Đáng xem (mặc dù tôi chưa tự mình kiểm tra).

EDIT 2:
Tôi đã quyết định sử dụng các tệp riêng biệt trong thời gian thiết kế của mình và quá trình xây dựng để thu nhỏ và kết hợp. Bằng cách này, tôi có thể có css riêng (có thể quản lý) trong khi tôi phát triển và một tệp rút gọn nguyên khối thích hợp khi chạy. Và tôi vẫn có các tệp tĩnh và ít chi phí hệ thống hơn vì tôi không thực hiện nén / thu nhỏ khi chạy.

lưu ý: đối với những người mua hàng ngoài đó, tôi khuyên bạn nên sử dụng gói như một phần của quy trình xây dựng của bạn. Cho dù bạn đang xây dựng từ bên trong IDE của mình hoặc từ tập lệnh xây dựng, trình đóng gói có thể được thực thi trên Windows thông qua bao gồm exehoặc có thể chạy trên bất kỳ máy nào đang chạy node.js.


Bên cạnh ít yêu cầu HTTP hơn, có bất kỳ lợi thế nào cho tệp đơn nguyên không? Css của tôi có thể thay đổi theo thời gian, nhưng số lượng người dùng sẽ khá ít, hầu hết truy cập thông qua các kết nối tốc độ cao. Vì vậy, tôi nghĩ rằng lợi thế của nhiều tệp sẽ lớn hơn nhiều so với yêu cầu http ít hơn ...
Nate

1
Yêu cầu HTTP ít hơn là lý do. giữ chân khách truy cập là ưu tiên số 1, vì vậy nếu trang của bạn tải chậm, họ sẽ ít ở lại. Nếu bạn có khả năng kết hợp (tôi thấy bạn đang sử dụng asp.net) thì tôi khuyên bạn nên làm điều đó. Đó là điều tốt nhất của cả hai thế giới.
Chase Florell

3
"Vì vậy, tôi nghĩ rằng lợi thế của nhiều tệp sẽ lớn hơn nhiều so với yêu cầu http ít hơn ..." Không, không, không ... hoàn toàn ngược lại. Với kết nối tốc độ cao, thời gian xử lý các yêu cầu HTTP là nút cổ chai. Hầu hết các trình duyệt theo mặc định chỉ tải xuống hai tệp cùng một lúc, vì vậy các trình duyệt sẽ thực hiện 2 yêu cầu, chờ đợi, tải xuống các tệp css một cách nhanh chóng, gửi thêm 2 yêu cầu, chờ đợi, tải xuống các tệp một cách nhanh chóng. Trái ngược với một yêu cầu HTTP cho một tệp css, nó tải xuống nhanh chóng. Giao tiếp với máy chủ sẽ là phần chậm.
Isley Aardvark

1
Bạn có thể xây dựng và kiểm tra các tính năng với các biểu định kiểu riêng biệt và kết hợp chúng thành một mongo một lần xây dựng. Bằng cách đó, bạn không duy trì một tệp mongo mà nhiều tệp nhỏ hơn. Chúng tôi làm điều này cũng như nén tất cả các khoảng trắng và nhận xét giúp con người dễ đọc nhưng vô nghĩa với các trang web của bạn.
Không hoàn lại tiền Không trả lại

2
Bây giờ, câu trả lời này sẽ được cập nhật khi http2 giảm lợi thế của ít yêu cầu hơn.
DD.

33

Tôi thích nhiều tệp CSS trong quá trình phát triển. Quản lý và gỡ lỗi dễ dàng hơn nhiều theo cách đó. Tuy nhiên, tôi khuyên bạn nên triển khai thời gian triển khai thay vì sử dụng công cụ rút gọn CSS như YUI Compressor , nó sẽ hợp nhất các tệp CSS của bạn thành một tệp nguyên khối.


@Randy Simon - nhưng nếu chúng ta chỉnh sửa css trực tiếp trên ftp luôn thì sao.
Jitendra Vyas

15
Tôi không biết thiết lập của bạn, nhưng đó dường như không phải là một ý tưởng tốt cho tôi. Bạn nên kiểm tra các thay đổi trước khi đẩy chúng ra.
Randy Simon

1
@RandySimon liên kết Máy nén YUI bị hỏng.
cải cách

16

Bạn muốn cả hai thế giới.

Bạn muốn nhiều tệp CSS vì sự tỉnh táo của bạn là một điều khủng khiếp để lãng phí.

Đồng thời, tốt hơn là có một tệp lớn, duy nhất.

Giải pháp là có một số cơ chế kết hợp nhiều tệp vào một tệp.

Một ví dụ là một cái gì đó như

<link rel="stylesheet" type="text/css" href="allcss.php?files=positions.css,buttons.css,copy.css" />

Sau đó, tập lệnh allcss.php xử lý nối các tệp và phân phối chúng.

Lý tưởng nhất là tập lệnh sẽ kiểm tra ngày mod trên tất cả các tệp, tạo ra một hỗn hợp mới nếu bất kỳ trong số chúng thay đổi, sau đó trả về hỗn hợp đó và sau đó kiểm tra các tiêu đề HTTP If-Modified để không gửi CSS dự phòng.

Điều này cung cấp cho bạn tốt nhất của cả hai thế giới. Hoạt động tuyệt vời cho JS là tốt.


7
tuy nhiên, nén / rút gọn thời gian chạy có phí hệ thống. Bạn phải cân nhắc những ưu và nhược điểm. Nếu bạn có một trang web có lưu lượng truy cập cao, đây không phải là một giải pháp tối ưu.
Đuổi theo Florell

5
@ChaseFlorell - bạn chỉ làm nén / việc rút gọn một lần và bộ nhớ cache nó
Siler

@Siler, tôi biết, đó là lý do tại sao tôi đăng câu trả lời của mình. stackoverflow.com/a/2336332/124069
Chase Florell

14

Chỉ có một tệp CSS sẽ tốt hơn cho thời gian tải trang của bạn, vì điều đó có nghĩa là ít yêu cầu HTTP hơn.

Có một vài tệp CSS nhỏ có nghĩa là phát triển dễ dàng hơn (ít nhất, tôi nghĩ vậy: có một tệp CSS cho mỗi mô-đun ứng dụng của bạn giúp mọi việc dễ dàng hơn) .

Vì vậy, có những lý do chính đáng trong cả hai trường hợp ...


Một giải pháp cho phép bạn đạt được kết quả tốt nhất của cả hai ý tưởng là:

  • Để phát triển bằng nhiều tệp CSS nhỏ
    • tức là dễ phát triển hơn
  • Để có quy trình xây dựng cho ứng dụng của bạn, hãy "kết hợp" các tệp đó thành một
    • Quá trình xây dựng đó cũng có thể thu nhỏ tệp lớn đó, btw
    • Điều đó rõ ràng có nghĩa là ứng dụng của bạn phải có một số nội dung cấu hình cho phép ứng dụng chuyển từ "chế độ nhiều tệp" sang "chế độ đơn tệp".
  • Và để sử dụng, trong sản xuất, chỉ có các tập tin lớn
    • tức là tải trang nhanh hơn

Ngoài ra còn có một số phần mềm thực hiện việc kết hợp các tệp CSS vào thời gian chạy chứ không phải lúc xây dựng; nhưng thực hiện nó trong thời gian chạy có nghĩa là ăn nhiều CPU hơn một chút (và obvisouly yêu cầu một số cơ chế lưu trữ bộ đệm, để không tạo lại tệp lớn quá thường xuyên)


14

Trong lịch sử, một trong những lợi thế chính của x khi có một tệp CSS là lợi ích tốc độ khi sử dụng HTTP1.1.

Tuy nhiên, kể từ tháng 3 năm 2018, hơn 80% trình duyệt hiện hỗ trợ HTTP2 , cho phép trình duyệt tải xuống nhiều tài nguyên cùng lúc cũng như có thể đẩy tài nguyên trước. Có một tệp CSS cho tất cả các trang có nghĩa là kích thước tệp lớn hơn cần thiết. Với thiết kế phù hợp, tôi không thấy bất kỳ lợi thế nào khi làm điều này ngoài việc dễ viết mã hơn.

Thiết kế lý tưởng cho HTTP2 cho hiệu năng tốt nhất sẽ là:

  • Có một tệp CSS lõi chứa các kiểu phổ biến được sử dụng trên tất cả các trang.
  • Có CSS ​​cụ thể của trang trong một tệp riêng
  • Sử dụng CSS2 đẩy CSS để giảm thiểu thời gian chờ đợi (có thể sử dụng cookie để ngăn các lần đẩy lặp lại)
  • Tùy ý tách phía trên CSS gấp và đẩy nó trước và tải CSS còn lại sau (hữu ích cho các thiết bị di động băng thông thấp)
  • Bạn cũng có thể tải CSS còn lại cho trang web hoặc các trang cụ thể sau khi trang được tải nếu bạn muốn tăng tốc độ tải trang trong tương lai.

1
Đây phải là câu trả lời hiện đại được chấp nhận hiệu suất RE. Một số trả lời khác đã hết hạn.
SparrwHawk

Nếu bạn đang xây dựng một SPA (ứng dụng một trang) thì tôi cho rằng thiết kế tốt nhất là xây dựng tất cả các css và js của bạn thành hai tệp hoàn chỉnh. "app.js" và "eller.js" Tất cả các html và các kiểu được biên dịch thành JS nội tuyến trong Vend.js Điều đó có nghĩa là "bootstrap.css và bootstrap.js" đều được cung cấp trong các nhà cung cấp và nó được thu nhỏ bằng các hình nền eller.min.js ". Điều tương tự với ứng dụng, ngoại trừ bây giờ bạn sử dụng bộ chuyển mã nội tuyến html sang js để ngay cả ứng dụng html của bạn cũng nằm trong tệp js. Bạn có thể lưu trữ chúng trên CDN và các trình duyệt sẽ lưu trữ chúng. Bạn thậm chí có thể biên dịch hình ảnh thành các kiểu và vào JS.
Ryan Mann

12

Biểu định kiểu nguyên khối cung cấp rất nhiều lợi ích (được mô tả trong các câu trả lời khác), tuy nhiên tùy thuộc vào kích thước tổng thể của tài liệu biểu định kiểu mà bạn có thể gặp phải sự cố trong IE. IE có một giới hạn với số lượng bộ chọn sẽ đọc từ một tệp . Giới hạn là 4096 bộ chọn. Nếu biểu định kiểu nguyên khối của bạn sẽ có nhiều hơn biểu định kiểu này, bạn sẽ muốn tách nó. Giới hạn này chỉ cho thấy cái đầu xấu xí trong IE.

Điều này là dành cho tất cả các phiên bản IE.

Xem trang Ross Rossiges BlogMSDN AddRule .


7

Có một điểm bùng phát mà tại đó có nhiều hơn một tệp css.

Một trang web có 1M + trang, mà người dùng trung bình dường như chỉ thấy 5 trang, có thể có một bản định kiểu có tỷ lệ lớn, do đó, cố gắng tiết kiệm chi phí cho một yêu cầu bổ sung cho mỗi lần tải trang bằng cách tải xuống ban đầu là sai nên kinh tê.

Kéo dài đối số đến giới hạn cực hạn - nó giống như gợi ý rằng nên có một biểu định kiểu lớn được duy trì cho toàn bộ web. Rõ ràng vô nghĩa.

Điểm bùng phát sẽ khác nhau đối với từng trang mặc dù vậy không có quy tắc cứng và nhanh. Nó sẽ phụ thuộc vào số lượng css duy nhất trên mỗi trang, số lượng trang và số lượng trang mà người dùng trung bình có thể thường xuyên gặp phải khi sử dụng trang web.


Đúng. Đây là câu hỏi tôi đến đây về. Mọi người tập trung vào phát triển vs sản xuất. Tất nhiên môi trường phát triển của bạn có thể khác với trang web trực tiếp của bạn, nhưng cái nào tốt hơn cho trang web trực tiếp? Không ai có vẻ thực sự giải quyết điều này. Bạn có biết bất kỳ tài nguyên nào về việc tìm kiếm điểm bùng phát ở đâu không?
Đaminh P

5

Tôi thường có một số tệp CSS:

  • một tệp css "toàn cầu" để đặt lại và các kiểu toàn cục
  • Các tệp css cụ thể "mô-đun" cho các trang được nhóm hợp lý (có thể mỗi trang trong trình hướng dẫn thanh toán hoặc một cái gì đó)
  • "trang" tệp css cụ thể để ghi đè trên trang (hoặc, đặt tệp này trong một khối trên trang riêng lẻ)

Tôi không thực sự quá quan tâm đến nhiều yêu cầu trang cho các tệp CSS. Hầu hết mọi người đều có băng thông tốt và tôi chắc chắn rằng có những tối ưu hóa khác sẽ có tác động lớn hơn nhiều so với việc kết hợp tất cả các kiểu vào một tệp CSS đơn sắc. Sự đánh đổi là giữa tốc độ và khả năng bảo trì, và tôi luôn nghiêng về khả năng bảo trì. Mặc dù vậy, trình biên dịch YUI nghe khá hay, tôi có thể phải kiểm tra xem.


Đây là những gì tôi làm và nó hoạt động tốt với tôi. Nhiều nhất bạn nhận được 3 tệp css cho mỗi trang, điều này khá hợp lý
Ricardo Nunes

4

Tôi thích nhiều tệp CSS. Bằng cách đó, việc trao đổi "giao diện" trong và ngoài sẽ dễ dàng hơn như bạn mong muốn. Vấn đề với một tập tin nguyên khối là nó có thể vượt khỏi tầm kiểm soát và khó quản lý. Điều gì nếu bạn muốn nền màu xanh nhưng không muốn các nút thay đổi? Chỉ cần thay đổi tập tin nền của bạn. Vân vân.


vấn đề là điều này khá ích kỷ trên quan điểm của các nhà phát triển. Khi bạn đã hoàn tất, bạn hiếm khi phải quay lại, nhưng tất cả khách truy cập của bạn phải đợi các trang để tải các tệp css không cần thiết. (Theo ý kiến ​​của tôi cũng giống với Javascript)
Chase Florell

3
@rockin: Khi kiểm tra một trong các trang web tệp 5-CSS của tôi sau khi xóa bộ nhớ cache, tôi phát hiện ra rằng tổng thời gian cần để tải tất cả CSS là ít hơn một phần mười giây. Nếu mọi người không thể đợi lâu như vậy, tôi nghĩ họ cần thêm Ritalin hoặc thứ gì đó. Vấn đề lớn hơn nhiều là các cuộc gọi lại đến các trang web quảng cáo như doubleclick, v.v., có thể dẫn đến sự chậm trễ LỚN, như đã chứng kiến ​​trên chính trang web này trong tuần qua.
Robusto

Một công cụ tuyệt vời để sử dụng để kiểm tra tốc độ trang web là Fireorms kết hợp với YSlow. Điều này sẽ cung cấp cho bạn một đại diện chính xác về tốc độ trang web của bạn.
Đuổi theo Florell

4

Có thể xem qua la bàn , đó là một khung tác giả CSS mã nguồn mở. Nó dựa trên Sass để nó hỗ trợ những thứ hay ho như biến, lồng, mixin và nhập khẩu. Đặc biệt nhập là hữu ích nếu bạn muốn giữ riêng các tệp CSS nhỏ hơn nhưng tự động kết hợp chúng thành 1 (tránh nhiều cuộc gọi HTTP chậm). La bàn thêm vào đây một tập hợp lớn các mixin được xác định trước, dễ dàng xử lý các công cụ trên trình duyệt chéo. Nó được viết bằng Ruby nhưng nó có thể dễ dàng được sử dụng với bất kỳ hệ thống nào ....


3

đây là cách tốt nhất

  1. tạo một tệp css chung với tất cả các mã được chia sẻ
  2. chèn tất cả mã css trang cụ thể vào cùng một trang, trên thẻ hoặc sử dụng thuộc tính style = "" cho mỗi trang

theo cách này, bạn chỉ có một css với tất cả mã được chia sẻ và trang html. bằng cách này (và tôi biết rằng đây không phải là chủ đề phù hợp) bạn cũng có thể mã hóa hình ảnh của mình trong base64 (nhưng bạn cũng có thể làm điều đó với các tệp js và css của mình). bằng cách này, bạn giảm được nhiều yêu cầu http hơn xuống còn 1.


2

SASS và LESS làm cho tất cả điều này thực sự là một điểm moot. Nhà phát triển có thể thiết lập các tệp thành phần hiệu quả và biên dịch kết hợp tất cả chúng. Trong SASS, bạn có thể tắt Chế độ nén trong khi đang phát triển để dễ đọc hơn và bật lại để sản xuất.

http://sass-lang.com http://lesscss.org

Cuối cùng, một tệp CSS được rút gọn là những gì bạn muốn bất kể kỹ thuật bạn sử dụng. Ít CSS hơn, ít yêu cầu HTTP hơn, ít nhu cầu hơn trên máy chủ.


1

Ưu điểm của một tệp CSS là hiệu quả truyền tải. Mỗi yêu cầu HTTP có nghĩa là phản hồi tiêu đề HTTP cho mỗi tệp được yêu cầu và cần băng thông.

Tôi phục vụ CSS của mình dưới dạng tệp PHP với loại mime "text / css" trong tiêu đề HTTP. Bằng cách này, tôi có thể có nhiều tệp CSS ở phía máy chủ và sử dụng PHP bao gồm để đẩy chúng vào một tệp khi người dùng yêu cầu. Mọi trình duyệt hiện đại đều nhận được tệp .php bằng mã CSS và xử lý tệp đó dưới dạng tệp .css.


Vì vậy, nếu tôi đang sử dụng ASP.NET, trình xử lý chung .ASHX sẽ là con đường lý tưởng để đi, kết hợp chúng thành một tệp duy nhất để có được kết quả tốt nhất của cả hai thế giới?
Nate

Có, tôi sẽ sử dụng IHttpHandler để kết hợp CSS của bạn khi chạy (xem # 2 trong câu trả lời của tôi ở trên)
Chase Florell

@Nate: Khi tôi làm việc trong ASP.Net, chúng tôi đã sử dụng các tệp mẫu để thực hiện điều tương tự.
Robusto

@Robusto, bạn có thể giải thích một tệp mẫu là gì không? Tôi không nghĩ rằng tôi đã từng nghe về nó. Tôi đã sử dụng App_Theme, nhưng vẫn không kết hợp CSS.
Chase Florell

1
giống như một bản cập nhật. Sử dụng IHttpHandler hoặc tệp PHP để kết hợp css ở phía máy chủ có thể tiết kiệm băng thông và tăng tốc yêu cầu, nhưng nó cũng thêm tải không cần thiết trên máy chủ. Cách tốt nhất để làm điều này là kết hợp / thu nhỏ css / js của bạn trong quá trình xây dựng / xuất bản trang web của bạn. Bằng cách này, bạn có một tệp tĩnh không xử lý bất kỳ máy chủ nào. Tốt nhất trong tất cả các thế giới, thanh KHÔNG.
Đuổi theo Florell

1

Bạn chỉ có thể sử dụng một tệp css để thực hiện và sau đó nhận xét các phần như thế này:

/******** Header ************/
//some css here

/******* End Header *********/


/******** Footer ************/
//some css here

/******* End Footer *********/

Vân vân


4
Điều đó không làm cho nó dễ dàng hơn để duy trì, như tôi vẫn cần phải cuộn qua dặm của css không liên quan để có được những gì tôi là sau khi ...
Nate

2
@Nate: Bạn đã xem xét chuyển sang một trình soạn thảo văn bản với chức năng tìm kiếm phong nha chưa? Sở thích cá nhân của tôi là một tệp css duy nhất và tôi không bao giờ cuộn qua nó. Tôi chỉ gõ "/ classname" (Tôi sử dụng một dẫn xuất vi) và bam - Tôi đang ở lớp đó.
Dave Sherohman

3
Việc duy trì trong môi trường nhiều nhà phát triển cũng khó hơn. Một "tiêu đề" trong ví dụ trên của bạn là gì? Điều gì sẽ xảy ra nếu người khác không suy nghĩ về mặt địa lý, nhưng về các yếu tố thiết kế cơ bản, như nút hoặc menu, trong khi những người khác đang nghĩ khác? Một menu đi đâu nếu nó nằm trong một tiêu đề? Nếu không thì sao? Tôi nghĩ việc thi hành loại kỷ luật đó trong các tệp riêng biệt sẽ dễ dàng hơn. Tại sao các nhà phát triển ứng dụng chỉ tạo một lớp ứng dụng khổng lồ với tất cả các trang trí thay vì một khung với phân cấp lớp? Có vẻ tương tự với tôi.
Robusto

Điều gì nếu bạn không nhớ tên của lớp bạn đang tìm kiếm? Hoặc làm thế nào để bạn quyết định nơi để thêm một lớp mới?
Nate

Nếu nó chỉ là một trang web vài trang thì nó thực sự không phải là vấn đề lớn. Chỉ cần đề xuất một cách khác để làm việc.
Cá trê

1

Tôi đang sử dụng Jammit để xử lý các tệp css của mình và sử dụng nhiều tệp khác nhau để dễ đọc. Jammit làm tất cả công việc bẩn thỉu của việc kết hợp và nén các tệp trước khi triển khai trong sản xuất. Bằng cách này, tôi đã có nhiều tệp đang phát triển nhưng chỉ có một tệp trong sản xuất.


0

Biểu định kiểu được đóng gói có thể tiết kiệm hiệu suất tải trang nhưng càng nhiều kiểu thì trình duyệt hiển thị hình động trên trang bạn đang truy cập càng chậm. Điều này được gây ra bởi số lượng lớn các kiểu không sử dụng có thể không có trên trang bạn đang truy cập nhưng trình duyệt vẫn phải tính toán.

Xem: https://benfrain.com/css-performance-revisited-selector-bloat-Exensive-ststyle/

Ưu điểm của bảng định kiểu kèm theo: - hiệu suất tải trang

Nhược điểm của bảng định kiểu kèm theo: - hành vi chậm hơn, có thể gây ra hiện tượng giật cục trong quá trình cuộn, tương tác, hoạt hình,

Kết luận: Để giải quyết cả hai vấn đề, để sản xuất giải pháp lý tưởng là bó tất cả css vào một tệp để lưu các yêu cầu http, nhưng sử dụng javascript để trích xuất từ ​​tệp đó, css cho trang bạn đang truy cập và cập nhật phần đầu với nó .

Để biết các thành phần được chia sẻ nào là cần thiết trên mỗi trang và để giảm độ phức tạp, thật tuyệt khi khai báo tất cả các thành phần mà trang cụ thể này sử dụng - ví dụ:

<style href="global.css" rel="stylesheet"/>
<body data-shared-css-components="x,y,z">

-1

Tôi đã tạo ra một cách tiếp cận có hệ thống để phát triển CSS. Bằng cách này tôi có thể sử dụng một tiêu chuẩn không bao giờ thay đổi. Đầu tiên tôi bắt đầu với hệ thống lưới 960. Sau đó, tôi đã tạo các dòng css duy nhất cho bố cục cơ bản, lề, phần đệm, phông chữ và kích thước. Sau đó tôi xâu chuỗi chúng lại với nhau khi cần thiết. Điều này cho phép tôi giữ một bố cục nhất quán trong tất cả các dự án của mình và sử dụng các tệp css giống nhau nhiều lần. Bởi vì chúng không cụ thể. Dưới đây là một ví dụ: ---- div class = "c12 bg0 m10 p5 trắng fl" / div --- Điều này có nghĩa là thùng chứa có 12 cột, sử dụng bg0 có lề 10px của 5 văn bản có màu trắng và nó nổi trái. Tôi có thể dễ dàng thay đổi điều này bằng cách xóa hoặc thêm một kiểu mới - Cái mà tôi gọi là kiểu "nhẹ" - Thay vì tạo một lớp duy nhất với tất cả các thuộc tính này; Tôi chỉ đơn giản là kết hợp các kiểu đơn khi tôi viết mã trang. Điều này cho phép tôi tạo bất kỳ sự kết hợp nào của các kiểu và không giới hạn khả năng sáng tạo của tôi hoặc khiến tôi tạo ra một số lượng lớn các kiểu tương tự nhau. Biểu định kiểu của bạn trở nên dễ quản lý hơn, được thu nhỏ và cho phép bạn sử dụng lại nhiều lần. Phương pháp này tôi đã tìm thấy là tuyệt vời cho thiết kế nhanh chóng. Tôi cũng không còn thiết kế đầu tiên trong PSD nhưng trong trình duyệt cũng tiết kiệm thời gian. Ngoài ra, vì tôi cũng đã tạo một hệ thống đặt tên cho các thuộc tính thiết kế trang và nền của mình, tôi chỉ cần thay đổi tệp hình ảnh của mình khi tạo dự án mới. (Bg0 = nền cơ thể theo hệ thống đặt tên của tôi) Điều đó có nghĩa là nếu trước đây tôi có màu trắng nền với một dự án chỉ đơn giản là thay đổi nó thành màu đen đơn giản có nghĩa là trên dự án tiếp theo bg0 sẽ là nền đen hoặc hình ảnh khác .....


12
Bạn có biết những đoạn nào dành cho?
Em1

Đây là "Khung giao diện người dùng" giống như Bootstrap hoặc các loại khác, một khi bạn biết từ vựng bạn muốn sử dụng, tất cả là về đường cong học tập và chấp nhận các thuật ngữ được sử dụng. Mặc dù tôi có thể nghĩ về một số trường hợp rất cụ thể trong đó ví dụ của bạn sẽ đấu tranh để đáp ứng các yêu cầu của nhà thiết kế.
augurone
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.