Câu hỏi Tại sao CSS làm việc với các phần tử giả?


Trong lớp học của tôi, tôi đã chơi xung quanh và phát hiện ra rằng CSS làm việc với các yếu tố trang điểm.

Thí dụ:

imsocool {
    color:blue;
}
<imsocool>HELLO</imsocool>

Khi giáo sư của tôi lần đầu tiên nhìn thấy tôi bằng cách sử dụng này, ông là một chút ngạc nhiên rằng các yếu tố make-up làm việc và đề nghị tôi chỉ cần thay đổi tất cả các yếu tố tạo thành các đoạn văn của tôi với ID.

Tại sao giáo sư của tôi không muốn tôi sử dụng các yếu tố trang điểm? Chúng hoạt động hiệu quả.

Ngoài ra, tại sao anh ta không biết rằng các yếu tố trang điểm tồn tại và làm việc với CSS. Có phải họ không phổ biến?


428
2017-12-03 14:19


gốc


HTML là cách cung cấp ý nghĩa cho dữ liệu có thể được hiểu bởi nhiều phương tiện (bao gồm cả người và trình duyệt). Thẻ được tạo của bạn không thêm bất kỳ ý nghĩa nào. Đó là một trong nhiều lý do tại sao anh ta không muốn bạn sử dụng chúng. - MrMisterMan
@MrMisterMan thực sự tôi nghĩ rằng họ làm. Có ý nghĩa hơn - <p>555-212-2344</p> hoặc <supportPhone> 555-212-2344 </ supportPhone> - Yuriy Galanter
@YuriyGalanter <p class = "supportPhone">; P - MrMisterMan
Chỉ cần nhớ, tất cả các quy tắc và cấu trúc lập trình này được tạo nên bởi những người không thông minh hơn bạn, và bạn có thể thay đổi nó, bạn có thể ảnh hưởng đến nó, bạn có thể xây dựng những thứ của riêng mình mà người khác có thể sử dụng. - L_7337
Tôi có thể chỉ ra rằng những gì bạn đang làm về cơ bản là XML không phải HTML. XML là một ngôn ngữ đánh dấu trừu tượng hơn cho phép bạn trình bày dữ liệu theo cách "hữu ích" mà bạn mô tả - nghĩa là. với ý nghĩa ngữ nghĩa kèm theo. Sau đó, bạn có thể sử dụng phép chuyển đổi XSLT để hiển thị dữ liệu của mình bằng HTML - ose


Các câu trả lời:


Tại sao CSS làm việc với các phần tử giả?

(Hầu hết) các trình duyệt được thiết kế để (ở mức độ nào đó) tương thích với các bổ sung trong tương lai cho HTML. Các phần tử không được nhận dạng được phân tích cú pháp thành DOM, nhưng không có ngữ nghĩa hoặc hiển thị mặc định chuyên biệt được liên kết với chúng.

Khi một phần tử mới được thêm vào đặc tả, đôi khi CSS, JavaScript và ARIA có thể được sử dụng để cung cấp chức năng tương tự trong các trình duyệt cũ hơn (và các phần tử phải xuất hiện trong DOM cho các ngôn ngữ đó để có thể thao tác chúng để thêm chức năng đó ).

(Mặc dù cần lưu ý rằng công việc đang được tiến hành để xác định một phương tiện để mở rộng HTML với các phần tử tùy chỉnh, nhưng công việc này đang trong giai đoạn phát triển ban đầu hiện nay nên có lẽ nó nên tránh cho đến khi nó trưởng thành.)

Tại sao giáo sư của tôi không muốn tôi sử dụng các yếu tố trang điểm?

  • Chúng không được đặc tả HTML cho phép
  • Họ có thể xung đột với các yếu tố tiêu chuẩn trong tương lai có cùng tên
  • Có thể là một phần tử HTML hiện có phù hợp hơn với tác vụ

Cũng thế; tại sao anh ta không biết rằng các yếu tố trang điểm tồn tại và làm việc với CSS. Có phải họ không phổ biến?

Vâng. Mọi người không sử dụng chúng bởi vì họ có những vấn đề trên.


468
2017-12-03 14:24



"Chúng không được đặc tả HTML cho phép" Không nhất thiết phải đúng. Chúng không tuân theo đặc tả Không gian tên HTML, nhưng thông số HTML5 là một điều rộng hơn cho phép các đặc tả tùy chỉnh và nêu rõ cách xử lý những thứ như vậy liên quan đến việc xử lý CSS và API (DOM). - Ben Lesh
Đã có các thư viện, đáng chú ý nhất là Angular.js, cho phép bạn mở rộng HTML với các phần tử tùy chỉnh. Có lẽ không theo ý nghĩa rằng bạn có nghĩa là các phần tử chỉ được phân tích cú pháp bằng javascript và được dịch sang thực tế thường, nhưng nếu bạn đang tìm cách mở rộng html bằng thẻ tùy chỉnh, bạn có thể làm điều đó với Góc - Charlie Martin
+1 Đối với "Họ có thể xung đột với các tiêu chuẩn trong tương lai". Hãy nhớ rằng nó có thể làm việc bây giờ nhưng nó phải làm việc trong 3-4 năm sau khi bạn đã bắt đầu. - tim.baker
Tôi thích có một thẻ <ninja> để ẩn các phần tử dom thay vì áp dụng hiển thị kiểu: ví dụ: <ninja> Một số nội dung ẩn </ ninja> - kiranvj
Một điểm thực sự quan trọng khác: Các trình duyệt đặc biệt dành cho người khiếm thị hoặc những người có khả năng hạn chế sử dụng các phần tử HTML thích hợp cho những thứ khác nhau (ví dụ điều hướng dễ dàng trên trang bằng các tiêu đề sau). Vì vậy, ngữ nghĩa bị mất + hiển thị mặc định có thể không ảnh hưởng đến trình duyệt thông thường quá nhiều, nhưng các trình duyệt đặc biệt này có thể sẽ bị nhầm lẫn, làm giảm đáng kể khả năng sử dụng của trang web của bạn. - Arve Systad


TL; DR

  • Thẻ tùy chỉnh không hợp lệ trong HTML. Điều này có thể dẫn đến sự cố hiển thị.
  • Làm cho sự phát triển trong tương lai khó khăn hơn vì mã không phải là di động.
  • HTML hợp lệ cung cấp nhiều lợi ích như SEO, tốc độ và tính chuyên nghiệp.

Câu trả lời dài

một số đối số mã đó với thẻ tùy chỉnh có thể sử dụng được nhiều hơn.

Tuy nhiên, nó dẫn đến HTML không hợp lệ. Điều này không tốt cho trang web của bạn.

Điểm của CSS / HTML hợp lệ | StackOverflow

  • Google thích nó vì vậy nó là tốt cho SEO.
  • Nó làm cho trang web của bạn có nhiều khả năng hoạt động trong các trình duyệt mà bạn chưa thử nghiệm.
  • Nó làm cho bạn trông chuyên nghiệp hơn (đối với một số nhà phát triển ít nhất)
  • Trình duyệt tuân thủ có thể hiển thị [HTML hợp lệ nhanh hơn]
  • Nó chỉ ra một loạt các lỗi mơ hồ mà bạn có thể đã bỏ lỡ ảnh hưởng đến những thứ bạn có thể chưa thử nghiệm, ví dụ: trang mã hoặc tập hợp ngôn ngữ của trang.

Tại sao xác thực | W3C

  • Xác thực là công cụ gỡ lỗi
  • Xác nhận là kiểm tra chất lượng chứng minh trong tương lai
  • Xác nhận giúp giảm thiểu bảo trì
  • Xác thực giúp dạy thực hành tốt
  • Xác nhận là một dấu hiệu của tính chuyên nghiệp

99
2017-12-03 14:22



Một lập luận khác cho mã hợp lệ là, nếu bạn cần giao cho một nhà phát triển khác hoặc bạn đang làm việc trong một nhóm, các thành viên khác hoặc nhà phát triển mới sẽ ngay lập tức hiểu những gì bạn đang cố gắng đạt được. . . Với thẻ không hợp lệ, được tạo nên, điều này có thể trở nên rất khó khăn ... - Pat Dobson
AKA. Phát triển trong tương lai và bảo trì nới lỏng. - screenmutt


YADA (một câu trả lời khác (khác))

Chỉnh sửa: Vui lòng xem nhận xét từ BoltClock bên dưới về loại so với thẻ so với phần tử. Tôi thường không lo lắng về ngữ nghĩa nhưng nhận xét của ông rất thích hợp và mang tính thông tin.

Mặc dù đã có một loạt các câu trả lời hay nhưng bạn đã chỉ ra rằng Giáo sư đã nhắc bạn đăng câu hỏi này để có vẻ như bạn (chính thức) ở trường. Tôi nghĩ tôi sẽ giải thích sâu hơn một chút về không chỉ CSS mà còn cơ học các trình duyệt web. Theo Wikipedia, "CSS là ngôn ngữ định kiểu được sử dụng để mô tả ... tài liệu được viết bằng một ngôn ngữ đánh dấu. "(Tôi đã thêm nhấn mạnh vào" a ") Chú ý rằng nó không nói" viết bằng HTML "ít hơn nhiều so với một phiên bản HTML cụ thể. CSS có thể được sử dụng trên HTML, XHTML, XML, SGML, XAML, v.v. Tất nhiên, bạn cần cái gì đó sẽ kết xuất mỗi loại tài liệu này cũng sẽ áp dụng kiểu dáng. Theo định nghĩa, CSS không biết / hiểu / quan tâm các thẻ ngôn ngữ đánh dấu cụ thể. Vì vậy, các thẻ có thể là "không hợp lệ" như xa như HTML là có liên quan, nhưng không có khái niệm về một "hợp lệ" thẻ / yếu tố / loại trong CSS.

Hiện đại trình duyệt trực quan không phải là chương trình nguyên khối. Họ là một hỗn hợp của "động cơ" khác nhau có công việc cụ thể để làm. Tại một mức tối thiểu Tôi có thể nghĩ đến 3 công cụ, công cụ hiển thị, công cụ CSS và công cụ javascript / VM. Không chắc chắn nếu trình phân tích cú pháp là một phần của công cụ hiển thị (hoặc ngược lại) hoặc nếu nó là một công cụ riêng biệt, nhưng bạn sẽ có được ý tưởng.

Có hay không trực quan trình duyệt (những người khác đã giải quyết thực tế là màn hình độc giả có thể có những thách thức khác đối phó với thẻ không hợp lệ) áp dụng định dạng phụ thuộc vào việc trình phân tích cú pháp có để lại thẻ "không hợp lệ" trong tài liệu hay không và sau đó liệu công cụ hiển thị có áp dụng kiểu cho thẻ đó hay không. Vì nó sẽ làm cho việc phát triển / duy trì khó khăn hơn, các công cụ CSS không được ghi vào hiểu không rằng "Đây là một tài liệu HTML nên đây là danh sách các thẻ / yếu tố / loại hợp lệ". Các công cụ CSS đơn giản là tìm thẻ / yếu tố / loại và sau đó nói với công cụ hiển thị "Đây là các kiểu bạn nên áp dụng". Cho dù công cụ hiển thị có quyết định áp dụng thực sự các kiểu đó hay không.

Đây là một cách dễ dàng để nghĩ về căn bản chảy từ động cơ đến động cơ: phân tích cú pháp -> CSS -> hiển thị. Trong thực tế nó là phức tạp hơn nhiều nhưng điều này là đủ tốt cho người mới bắt đầu.

Câu trả lời này đã quá dài nên tôi sẽ kết thúc ở đó.


69
2017-12-03 16:38



Đừng quên SVG! CSS cũng làm việc với SVG. - david25272
Mặc dù bạn đã đề cập rằng "thẻ" đã trở thành thuật ngữ chung cho các yếu tố mà tôi không thể và sẽ không đồng ý, điều đó không thay đổi thực tế rằng cụm từ chính xác cho chúng vẫn là "yếu tố". Thẻ cụ thể là một tính năng cú pháp của HTML và XML và có thể không tồn tại trong các ngôn ngữ tài liệu khác tương thích với CSS. Vì vậy, nói rằng phong cách CSS "thẻ" như mọi người thường gọi họ không phải là làm rất nhiều toàn bộ công lý cho ngôn ngữ tài liệu thuyết bất khả tri của CSS. - BoltClock♦


Các phần tử không xác định được coi là divbởi các trình duyệt hiện đại. Đó là lý do tại sao họ làm việc. Đây là một phần của tiêu chuẩn HTML5 sắp tới giới thiệu một cấu trúc mô-đun mà các thành phần mới có thể được thêm vào.

Trong các trình duyệt cũ hơn (tôi nghĩ IE7-) bạn có thể áp dụng Javascript-trick sau đó chúng sẽ hoạt động tốt.

Đây là câu hỏi liên quan Tôi tìm thấy khi tìm kiếm một ví dụ.

Đây là câu hỏi về bản sửa lỗi Javascript. Hóa ra nó thực sự là IE7 mà không hỗ trợ các yếu tố này ra khỏi hộp.

Cũng thế; tại sao anh ta không biết rằng các thẻ trang điểm tồn tại và làm việc với CSS. Có phải họ không phổ biến?

Vâng, khá. Nhưng đặc biệt là: họ không phục vụ mục đích bổ sung. Và chúng là mới đối với html5. Trong các phiên bản trước của HTML, một thẻ không xác định không hợp lệ.

Ngoài ra, các giáo viên dường như có những khoảng trống trong kiến ​​thức của họ, đôi khi. Điều này có thể là do họ cần phải dạy cho sinh viên những điều cơ bản về một chủ đề cụ thể, và nó không thực sự trả hết để biết tất cả các ins and outs và được thực sự cập nhật. Tôi đã từng bị giam giữ bởi vì một giáo viên nghĩ rằng tôi đã lập trình một loại virus, chỉ vì tôi có thể làm cho một máy tính chơi nhạc bằng cách sử dụng play lệnh trong GWBasic. (Câu chuyện có thật, và vâng, lâu rồi). Nhưng bất kể lý do gì, tôi nghĩ lời khuyên không sử dụng các yếu tố theo yêu cầu là một yếu tố âm thanh.


54
2017-12-03 14:23



Có thật không? Tôi nghĩ chúng được hiển thị dưới dạng thẻ <span>. Sống và học hỏi... - OnoSendai
@OnoSendai Bạn làm tôi nghi ngờ, nhưng tôi thực sự nghĩ rằng họ được kết xuất như 'các yếu tố khối mà không cần đánh dấu bổ sung', vì vậy về cơ bản giống như divs. - GolezTrol
@OnoSendai Một phần tử khối có thể có thuộc tính hiển thị của khốinhưng không bắt buộc. Ví dụ, các thẻ neo được đẩy lên để chặn trạng thái (nghĩa là bạn được phép đặt các phần tử khối như các div bên trong chúng), nhưng vẫn có thuộc tính hiển thị nội tuyến. - cimmanon
Giá trị ban đầu của display Là inline, do đó, nhận xét của OnoSendai là chính xác. - BoltClock♦
@cimmanon: a các phần tử có một mô hình nội dung minh bạch ngay bây giờ để cho dù chúng là khối hay nội tuyến phụ thuộc vào việc tổ tiên của chúng là khối hay nội dòng. Câu trả lời này đang nói về các yếu tố không xác định, mà HTML không xác định một mô hình nội dung. Theo như CSS có liên quan, nếu không có trình duyệt mặc định display giá trị nó sử dụng giá trị ban đầu. - BoltClock♦


Trên thực tế bạn có thể sử dụng các yếu tố tùy chỉnh. Đây là thông số kỹ thuật của W3C về chủ đề này:

http://w3c.github.io/webcomponents/spec/custom/

Và đây là một hướng dẫn giải thích cách sử dụng chúng:

http://www.html5rocks.com/en/tutorials/webcomponents/customelements/

Như được chỉ ra bởi @Quentin: đây là một đặc tả dự thảo trong những ngày đầu phát triển và nó áp đặt các hạn chế về tên của các phần tử có thể là gì.


27
2017-12-03 14:24



Cần lưu ý rằng đó là một đặc tả dự thảo trong những ngày đầu phát triển và nó áp đặt các hạn chế về tên của các phần tử có thể là gì. - Quentin
+1 Không biết sử dụng W3C github nhưng thực sự họ sử dụng. - Vitor Canova


Có một vài điều về các câu trả lời khác, hoặc chỉ là một cách sai lầm nhỏ hoặc có lẽ không chính xác một chút.

FALSE (ish): Các phần tử HTML không chuẩn "không được phép", "bất hợp pháp" hoặc "không hợp lệ".

Không cần thiết. Họ "không phù hợp". Có gì khác biệt? Cái gì đó có thể "không phù hợp" và vẫn được "cho phép". W3C sẽ không gửi cảnh sát HTML đến nhà của bạn và đưa bạn đi.

W3C để mọi thứ theo cách này vì một lý do. Sự phù hợp và thông số kỹ thuật được xác định bởi một cộng đồng. Nếu bạn tình cờ có một cộng đồng nhỏ hơn tiêu tốn HTML cho các mục đích cụ thể hơn và tất cả họ đều đồng ý với một số Yếu tố mới mà họ cần để làm mọi thứ dễ dàng hơn, họ có thể có những gì W3C đề cập đến "các thông số áp dụng khác". (điều này đơn giản hơn là đơn giản hóa, nhưng bạn có ý tưởng)

Điều đó nói rằng, người xác thực hợp lệ sẽ khai báo các phần tử không chuẩn của bạn thành "không hợp lệ". nhưng đó là vì công việc của người xác nhận là đảm bảo sự phù hợp với bất kỳ thông số nào mà nó xác nhận, không đảm bảo tính hợp pháp cho trình duyệt hoặc là sử dụng.

FALSE (ish): Các phần tử HTML không chuẩn sẽ dẫn đến các vấn đề hiển thị

Có thể, nhưng không chắc. Cách duy nhất này sẽ dẫn đến một vấn đề kết xuất là nếu phần tử tùy chỉnh của bạn mâu thuẫn với một đặc tả khác, chẳng hạn như thay đổi đối với đặc tả HTML hoặc một đặc tả khác được vinh danh trong cùng một hệ thống (chẳng hạn như SVG, Toán hoặc tùy chỉnh).

Trong thực tế, lý do CSS có thể tạo kiểu thẻ không chuẩn là vì đặc tả HTML rõ ràng cái đó:

Tác nhân người dùng phải xử lý các yếu tố và thuộc tính mà họ không hiểu là trung lập về mặt ngữ nghĩa; để chúng trong DOM (đối với các bộ xử lý DOM) và tạo kiểu cho chúng theo CSS (cho các bộ xử lý CSS), nhưng không suy luận bất kỳ ý nghĩa nào từ chúng

Chú thích: nếu bạn muốn sử dụng thẻ tùy chỉnh, chỉ cần nhớ thay đổi đối với thông số HTML sau đó có thể thổi kiểu dáng của bạn lên, vì vậy hãy chuẩn bị sẵn sàng. Nó thực sự không chắc rằng W3C sẽ thực hiện <imsocool> thẻ, tuy nhiên.

Thẻ và JavaScript không chuẩn (thông qua DOM)

Lý do bạn có thể truy cập và thay đổi các phần tử tùy chỉnh bằng JavaScript là vì đặc điểm kỹ thuật thậm chí nói về cách xử lý chúng trong DOM, đó là API (thực sự khủng khiếp) cho phép bạn thao tác các yếu tố trên trang của mình.

Giao diện HTMLUnknownElement phải được sử dụng cho các phần tử HTML không được xác định bởi đặc tả này (hoặc các đặc tả áp dụng khác).

TL; DR: Tuân thủ thông số được thực hiện cho mục đích giao tiếp và an toàn. Sự không phù hợp vẫn được cho phép bởi mọi thứ nhưng người kiểm chứng, với mục đích duy nhất là thực thi sự phù hợp, nhưng có sử dụng là tùy chọn.

Ví dụ:

var wee = document.createElement('wee');
console.log(wee.toString()); //[object HTMLUnknownElement]

(Tôi chắc chắn điều này sẽ rút ra ngọn lửa, nhưng có 2 xu của tôi)


22
2017-12-04 15:16



HTML không chỉ xác định cách xử lý các phần tử w.r.t. CSS, đặc tả CSS, phần lớn, ngôn ngữ tài liệu bất khả tri bởi thiết kế (điều này đã được kinda-sorta ngụ ý trong một số câu trả lời khác, nhưng tôi lưu ý nó ở đây để thuận tiện). Nếu có bất kỳ hành vi nào cụ thể đối với HTML và / hoặc XHTML, nó luôn được chỉ định, ngay cả trong văn bản thông tin (ví dụ: "ID của phần tử HTML được chỉ định bởi id thuộc tính "), không chỉ văn bản quy phạm (xem Hình nền và đường viền 3 Ví dụ). - BoltClock♦


Theo thông số kỹ thuật:

CSS

A bộ chọn loại là tên của một loại phần tử ngôn ngữ tài liệu được viết bằng cú pháp của các tên đủ điều kiện CSS

Tôi nghĩ điều này được gọi là thành phần bộ chọn, nhưng dường như nó thực sự là kiểu bộ chọn. Thông số tiếp tục nói về CSS qualified names không đặt giới hạn cho tên thực sự là gì. Đó là để nói rằng miễn là bộ chọn loại khớp với cú pháp tên đủ điều kiện CSS, đó là CSS đúng về mặt kỹ thuật và sẽ khớp với phần tử trong tài liệu. Không có giới hạn cụ thể cho CSS đối với các thành phần không tồn tại trong một đặc tả cụ thể - HTML hoặc cách khác.

HTML

Không có giới hạn chính thức về việc bao gồm bất kỳ thẻ nào trong tài liệu mà bạn muốn. Tuy nhiên, tài liệu này nói

Tác giả không được sử dụng các phần tử, thuộc tính hoặc giá trị thuộc tính cho các mục đích khác với mục đích ngữ nghĩa dự định thích hợp của chúng, vì làm như vậy ngăn phần mềm xử lý chính xác trang.

Và sau đó nó nói

Tác giả không được sử dụng các yếu tố, thuộc tính hoặc giá trị thuộc tính không được đặc tả này hoặc các đặc điểm áp dụng khác cho phép, vì làm như vậy làm cho ngôn ngữ đó khó mở rộng hơn trong tương lai.

Tôi không chắc chắn cụ thể ở đâu hoặc nếu spec nói rằng các yếu tố không rõ ràng là được phép, nhưng nó nói về HTMLUnknownElement giao diện cho các yếu tố không được công nhận. Một số trình duyệt thậm chí có thể không nhận ra các phần tử có trong thông số hiện tại (IE8 được đề cập đến).

Đây là một dự thảo cho các yếu tố tùy chỉnh, tuy nhiên, tôi nghi ngờ nó được thực hiện ở bất cứ đâu.


18
2017-12-03 14:42



Tôi nghĩ hầu hết chúng ta nghĩ về chúng như thành phần bộ chọn nhưng có nghĩa là chúng "chính thức" kiểu bộ chọn. - Andrew Steitz
@Andrew Steitz: Hãy nghĩ về nó theo cách này: phần tử: type :: person: name. Bạn có thể có nhiều yếu tố của các loại khác nhau, với mỗi phần tử thuộc một loại duy nhất và theo cùng cách bạn có thể có nhiều người, mỗi người có một tên. Bộ chọn hoạt động trên cây tài liệu và mọi bộ chọn có thể khớp với một số yếu tố cây tài liệu mà bạn có thể thu hẹp bằng bộ chọn lớp, bộ chọn ID, bộ chọn thuộc tính ... hoặc bộ chọn loại. Dù bạn sử dụng gì, bạn vẫn là yếu tố phù hợp. Vì vậy, "bộ chọn phần tử" sẽ không có ý nghĩa trong trường hợp này - tất cả những điều này sẽ là bộ chọn yếu tố. - BoltClock♦
@ BoltClock'saUnicorn: Đúng, nhưng lớp, ID và thuộc tính là tất cả, uh, thuộc tính (LOL) của một phần tử "", tức là "thingy" bên trong dấu ngoặc nhọn. Chúng mô tả "phần tử" có thẻ mở mà chúng cư trú. Có, <a> và <div> là các loại "phần tử" cụ thể, nhưng tôi nghi ngờ bất kỳ ai sẽ gọi lớp, ID và thuộc tính "các phần tử". Tôi hoàn toàn đồng ý rằng tất cả các bộ chọn thực sự là các bộ chọn "phần tử" nhưng trong COMMON USAGE, mọi người thường chỉ đến bộ chọn "loại" làm bộ chọn "phần tử". Đó là điểm nhận xét trước của tôi. Xin lỗi, nó không rõ ràng. :-) - Andrew Steitz
@ExplosionPills - Các thông số HTML không nói rằng các phần tử không xác định không được phép, nhưng vì mọi phần tử đều có một danh sách liệt kê các tên phần tử được phép làm con của nó, (tức là mô hình nội dung của nó), nó không phải. Chỉ đơn giản là không có một phần tử không xác định được cho phép như là phần tử con của một phần tử được phép. Áp dụng HTMLUnknownElement cho các phần tử như vậy là một phần của thông số bắt buộc - tức là người dùng HTML phải làm gì với các tài liệu hợp lệ hay không - và không phải là một phần của những gì tác giả phải làm để làm cho tài liệu của họ hợp lệ. - Alohci
@ Alohci Tôi có nghĩa là không được phép theo nghĩa rằng chúng sẽ bị loại bỏ khỏi DOM như trái ngược với ngữ nghĩa không hợp lệ - Explosion Pills


Điều này là có thể với html5 nhưng bạn cần phải xem xét các trình duyệt cũ hơn.

Nếu bạn quyết định sử dụng chúng sau đó, hãy chắc chắn để COMMENT html của bạn !! Một số người có thể gặp khó khăn trong việc tìm hiểu xem nó là gì để nhận xét có thể tiết kiệm cho họ rất nhiều thời gian.

Một cái gì đó như thế này,

<!-- Custom tags in use, refer to their CSS for aid -->

Khi bạn tạo thẻ / các phần tử tùy chỉnh của riêng mình, các trình duyệt cũ sẽ không có đầu mối nào giống như các phần tử html5 như nav/section.

Nếu bạn quan tâm đến khái niệm này thì tôi khuyên bạn nên làm điều đó đúng cách.

Bắt đầu

Các yếu tố tùy chỉnh cho phép nhà phát triển web xác định các loại HTML mới   các yếu tố. Thông số kỹ thuật là một trong số một số API nguyên thủy mới   Ô thành phần Web, nhưng nó có thể là   quan trọng. Thành phần Web không tồn tại mà không có các tính năng được mở khóa bởi   yếu tố tùy chỉnh:

Xác định các phần tử HTML / DOM mới Tạo các phần tử mở rộng từ các phần tử khác   Các yếu tố hợp lý gộp các chức năng tùy chỉnh vào một   tag Mở rộng API của các phần tử DOM hiện có

Có rất nhiều điều bạn có thể làm với nó và nó làm cho kịch bản của bạn đẹp như bài viết này thích đặt nó. Các yếu tố tùy chỉnh xác định các phần tử mới trong HTML.

Vì vậy, hãy tóm tắt lại,

Ưu điểm

  • Rất thanh lịch và dễ đọc.

  • Thật là tuyệt khi không thấy quá nhiều divs. : p

  • Cho phép cảm nhận mã duy nhất

Nhược điểm

  • Hỗ trợ trình duyệt cũ hơn là một điều mạnh mẽ để xem xét.

  • Các nhà phát triển khác có thể không biết phải làm gì nếu họ không biết về thẻ tùy chỉnh. (Giải thích cho họ hoặc thêm ý kiến ​​để thông báo cho họ)

  • Cuối cùng là một điều cần xem xét, nhưng tôi không chắc chắn, là khối và các yếu tố nội tuyến. Bằng cách sử dụng thẻ tùy chỉnh, bạn sẽ kết thúc bằng cách viết thêm css vì thẻ tùy chỉnh sẽ không có mặt mặc định cho thẻ đó.

Sự lựa chọn hoàn toàn tùy thuộc vào bạn và bạn nên dựa vào những gì dự án đang yêu cầu.

Cập nhật 1/2/2014

Đây là một bài viết rất hữu ích mà tôi đã tìm thấy và tôi đã chia sẻ, Yếu tố tùy chỉnh.

Tìm hiểu công nghệ Tại sao chọn yếu tố tùy chỉnh? Các yếu tố tùy chỉnh cho phép tác giả xác định   các yếu tố của riêng họ. Tác giả liên kết mã JavaScript với thẻ tùy chỉnh   tên và sau đó sử dụng các tên thẻ tùy chỉnh đó theo bất kỳ tiêu chuẩn nào   nhãn.

Ví dụ, sau khi đăng ký một loại nút đặc biệt gọi là   siêu nút, sử dụng nút siêu giống như thế này:

 Yếu tố tùy chỉnh vẫn là yếu tố. Chúng tôi   có thể tạo, sử dụng, thao tác và soạn chúng dễ dàng như mọi   tiêu chuẩn hoặc ngày hôm nay.

Điều này có vẻ giống như một thư viện rất tốt để sử dụng nhưng tôi đã nhận thấy nó không vượt qua trạng thái Xây dựng của Window. Đây cũng là một pre-alpha Tôi tin rằng vì vậy tôi sẽ giữ một mắt về điều này trong khi nó phát triển.


13
2017-12-03 14:28



"Other developers may have no clue what to do if they don't know about custom tags.Các nhà phát triển khác cũng phải học các công cụ mới và nếu họ không hiểu các kỹ thuật được sử dụng trong mã của bạn, họ nên biết ơn bạn vì đã chỉ ra những thiếu sót trong kiến ​​thức của họ. , bởi vì thẻ tùy chỉnh chỉ tồn tại dưới dạng bản nháp, nhưng tôi đã nghe được cùng một đối số khi sử dụng các kỹ thuật chuẩn hóa thích hợp. - GolezTrol
Tôi không nói rằng tôi ủng hộ điều đó nhưng rất nhiều nhà phát triển không tiếp tục học. Hầu như không có lý do gì để không bình luận gì đó nếu nó hơi phức tạp hoặc mới. Tất cả chúng ta đều bình luận kịch bản của chúng ta đúng không? Để hiển thị những gì chúng tôi đang thực hiện và cách thực hiện, giống với thẻ tùy chỉnh. - Josh Powell
Tất nhiên, nếu nó chỉ là về thêm ý kiến. Tôi mặc dù bạn có nghĩa là bạn không nên sử dụng các yếu tố tùy chỉnh ở tất cả vì những người khác sẽ không hiểu. Thêm một bình luận nhỏ khi bạn thêm một kỹ thuật ít được sử dụng là một điều tốt để làm. Tuy nhiên, hãy cẩn thận với các nhận xét trong HTML. Họ có thể kết thúc trên máy khách, tiêu thụ băng thông và có thể tiết lộ chi tiết triển khai mà bạn không muốn khách truy cập của mình tìm hiểu. Nhưng cách khác bạn có thể thêm ý kiến ​​như bình luận PHP / ASP, vì vậy họ vẫn còn trong mẫu, nhưng vẫn còn trên máy chủ. - GolezTrol
@ GolezTroi, nó không phải là bạn không bao giờ nên làm những điều mà thách thức các nhà phát triển khác, đó là một câu hỏi về lợi ích chi phí. Nếu làm điều gì đó theo cách khó hơn cho nhà phát triển tiếp theo hợp pháp làm cho mã của bạn tốt hơn và sạch hơn, hãy làm điều đó. Nhưng đừng làm những điều gnarly chỉ để cho vui. - BostonJohn
@ JoshPowell Bình luận không nên về những gì và làm thế nào (mã đã nói rằng, và nếu nó không đủ rõ ràng, viết lại mã cho đến khi nó được), nhưng nên cho tôi biết tại sao. Có vài điều tồi tệ hơn tải bình luận chỉ nói rằng sendmail chức năng gửi thư hoặc một cái gì đó như thế. Tôi quan tâm hơn đến lý do bạn gửi thư - và nếu tên chức năng làm cho điều đó rõ ràng, tuyệt vời! Sau đó, tôi không cần một bình luận, đó là trường hợp lý tưởng. Tôi sẽ đọc mã. - Christopher Creutzig


Tại sao anh ta không muốn bạn sử dụng chúng? Chúng không phổ biến hay là một phần của tiêu chuẩn HTML5. Về mặt kỹ thuật, chúng không được phép. Họ là một hack.

Mặc dù tôi thích chúng. Bạn có thể quan tâm đến XHTML5. Nó cho phép bạn xác định các thẻ của riêng bạn và sử dụng chúng như là một phần của tiêu chuẩn.

Ngoài ra, như những người khác đã chỉ ra, họ là không hợp lệ và do đó không di động.

Tại sao anh ta không biết rằng chúng tồn tại? Tôi không biết, ngoại trừ việc chúng không phổ biến. Có thể anh ta không biết rằng bạn có thể.


4
2017-12-03 14:21



Không có XHTML5 - có một nhóm làm việc cố gắng mang về XHTML 2 nhưng nó đã lúng túng nhiều năm trước. - max
@papirtiger: XHTML5 được HTML5 phân phát như XML, nhưng bạn nói đúng là không có chuẩn XHTML độc lập nào ngoài XHTML 1.1. - BoltClock♦
Vì vậy, có Là XHTML5, nhưng dường như nó khác với HTML5 về chủ đề này của thẻ tùy chỉnh. Do đó, tôi nghĩ rằng tuyên bố về XHTML5 cho phép bạn xác định các thẻ bổ sung trái ngược với HTML5 là sai, điều này có thể giải thích sự sụt giảm, mặc dù tôi không chắc chắn về XHTML5 để trả lời hoặc từ chối câu trả lời này. - GolezTrol
Theo dự thảo HTML5 của W3C, HTML và XHTML là (bây giờ) "cú pháp cụ thể" đại diện cho cùng một "ngôn ngữ trừu tượng". Chúng có các tính năng cơ bản giống nhau, ngoại trừ các tính năng chỉ có ý nghĩa trong một cú pháp (các không gian tên XML, công cụ phân tích cú pháp noscript HTML): w3.org/TR/html5/introduction.html#html-vs-xhtml - IMSoP