Tôi nên sử dụng thẻ HTML5 nào để đánh dấu tên tác giả?


96

Ví dụ về một bài đăng blog hoặc bài báo.

<article>
<h1>header<h1>
<time>09-02-2011</time>
<author>John</author>
My article....
</article>

Tuy nhiên, authorthẻ không tồn tại ... Vậy thẻ HTML5 thường được sử dụng cho các tác giả là gì? Cảm ơn.

(Nếu không có, không nên có một cái?)


<cite>có lẽ? Tôi không biết lol. : P Mặc dù không tạo ra sự khác biệt nhiều về phong cách.
Joseph Marikle

2
Nó không phải là về phong cách. Về mặt kỹ thuật, bạn có thể sử dụng <p> để tạo tiêu đề chỉ bằng cách tăng kích thước phông chữ. Nhưng các công cụ tìm kiếm sẽ không hiểu nó như vậy.
jalgames

2
Bạn không được phép sử dụng timephần tử như vậy. Vì dd-mm-yyykhông phải là một trong những định dạng được công nhận, nên bạn phải cung cấp phiên bản máy đọc được (ở một trong những định dạng được công nhận) trong một datetimethuộc tính của timephần tử. Xem w3.org/TR/2014/REC-html5-20141028/…
Andreas Rejbrand

1
Bây giờ có một câu trả lời tốt hơn câu trả lời được chấp nhận (của robertc).
Dan Dascalescu

Câu trả lời:


113

Cả hai rel="author"<address>đều được thiết kế cho mục đích chính xác này. Cả hai đều được hỗ trợ trong HTML5. Thông số cho chúng ta biết rằng rel="author"có thể được sử dụng trên và các phần tử. Google cũng khuyến nghị cách sử dụng của nó . Kết hợp sử dụng và có vẻ tối ưu. HTML5 tốt nhất cung cấp thông tin về dòng tiêu đề và dòng bên trong như vậy:<link> <a><area><address>rel="author"<article><header>

<article>
    <header>
        <h1 class="headline">Headline</h1>
        <div class="byline">
            <address class="author">By <a rel="author" href="/author/john-doe">John Doe</a></address> 
            on <time pubdate datetime="2011-08-28" title="August 28th, 2011">8/28/11</time>
        </div>
    </header>

    <div class="article-content">
    ...
    </div>
</article>
  • Các pubdatethuộc tính chỉ ra rằng đó là ngày công bố.

  • Các titlethuộc tính là cầu vượt tùy chọn.

  • Ngoài ra, thông tin dòng có thể được gói <footer>trong một<article>

Nếu bạn muốn thêm vi định dạng hcard , thì tôi sẽ làm như thế này:

<article>
    <header>
        <h1 class="headline">Headline</h1>
        <div class="byline vcard">
            <address class="author">By <a rel="author" class="url fn n" href="/author/john-doe">John Doe</a></address> 
            on <time pubdate datetime="2011-08-28" title="August 28th, 2011">on 8/28/11</time>
        </div>
    </header>

    <div class="article-content">
    ...
    </div>
</article>

3
Không nên đặt "By" trước thẻ <address>? Nó không thực sự là một phần của địa chỉ.
aridlehoover

1
@aridlehoover Có vẻ đúng theo whatwg.org/specs/web-apps/current-work/multipage/… - Nếu bên ngoài, hãy sử dụng .byline address { display:inline; font-style:inherit }để ghi đè blockmặc định trong trình duyệt.
ryanve

@aridlehoover Tôi cũng nghĩ rằng điều đó <dl>là khả thi. Ví dụ: hãy xem đánh dấu dòng bên trong nguồn demo.actiontheme.com/sample-page .
ryanve

4
pubdatethuộc tính này đã biến mất khỏi cả thông số kỹ thuật WHATWG và W3C, như Bruce Lawson viết ở đây , tôi khuyên bạn nên xóa nó khỏi câu trả lời của mình.
Paul Kozlovitch

51

HTML5 có loại liên kết tác giả :

<a href="http://johnsplace.com" rel="author">John</a>

Điểm yếu ở đây là nó cần phải nằm trên một số loại liên kết, nhưng nếu bạn có điều đó, có một cuộc thảo luận dài về các lựa chọn thay thế ở đây . Nếu bạn không có liên kết, thì chỉ cần sử dụng thuộc tính lớp, đó là những gì nó dành cho:

<span class="author">John</span>

3
@Quang Vâng, tôi nghĩ rằng một loại liên kết không có liên kết thực sự sẽ đánh bại mục đích cố gắng đánh dấu nó về mặt ngữ nghĩa.
robertc

3
@Quang: relthuộc tính ở đó để mô tả đích của liên kết là gì. Nếu liên kết không có đích, rellà vô nghĩa.
Paul D. Waite

2
Bạn cũng có thể muốn xem schema.org để biết các cách thể hiện loại thông tin này.
Michael Mior

1
@ jdh8 Vì John không phải là tiêu đề của tác phẩm
robertc

6
Câu trả lời này không còn là tốt nhất nữa. Google không còn hỗ trợrel="author" và như ryanve và Jason đề cập, addressthẻ cũng được thiết kế rõ ràng để thể hiện quyền tác giả.
Dan Dascalescu

19

Theo thông số kỹ thuật HTML5, bạn có thể muốn address.

Phần tử địa chỉ đại diện cho thông tin liên hệ của tổ tiên phần tử nội dung hoặc bài viết gần nhất của nó.

Các tài liệu tham khảo thêm addressvề các tác giả ở đây

Dưới 4.4.4

Thông tin tác giả được liên kết với phần tử bài viết (qv phần tử địa chỉ) không áp dụng cho các phần tử bài viết lồng nhau.

Dưới 4,4,9

Thông tin liên hệ của tác giả hoặc người biên tập của một phần nằm trong phần tử địa chỉ, có thể chính nó bên trong chân trang.

Tất cả những điều đó làm cho nó có vẻ addresslà thẻ tốt nhất cho thông tin này.

Điều đó nói rằng, bạn cũng có thể đưa ra addressmột relhoặc classcủa mình author.

<address class="author">Jason Gennaro</address>

Đọc thêm: http://dev.w3.org/html5/spec/section.html#the-address-element


1
Cảm ơn Jason, bạn có biết "qv" nghĩa là gì không? Trong> 4.4.4> Thông tin tác giả được liên kết với một phần tử bài viết (qv phần tử địa chỉ) không áp dụng cho các phần tử bài viết lồng nhau.
Quảng Văn

3
@QuangVan - (chờ đã, tên viết tắt của bạn là ... qv hmm) - qv có nghĩa là "quod vide" hoặc "về vấn đề này (vấn đề) đi xem" - con trai về vấn đề "qv", hãy xem english.stackexchange.com/questions / 25252 /… (qv) haha
pageman

@JasonGennaro haha ​​nanos gigantum humeris insidentes!
pageman

lol, đã cho tôi một thời gian để con số ra những gì những ý kiến đã được đề cập đến ... Cảm ơn lession Latin :)
Quang Vân

9

Hỗ trợ của Google cho rel = "author" không được dùng nữa :

"Đánh dấu quyền tác giả không còn được hỗ trợ trong tìm kiếm trên web."

Sử dụng phần tử Danh sách Mô tả (Danh sách Định nghĩa trong HTML 4.01).

Từ thông số kỹ thuật HTML5 :

Phần tử dl đại diện cho một danh sách liên kết bao gồm không hoặc nhiều nhóm tên-giá trị (danh sách mô tả). Nhóm tên-giá trị bao gồm một hoặc nhiều tên (phần tử dt) ​​theo sau là một hoặc nhiều giá trị (phần tử dd), bỏ qua bất kỳ nút nào ngoài phần tử dt và dd. Trong một phần tử dl, không được có nhiều hơn một phần tử dt cho mỗi tên.

Nhóm giá trị tên có thể là thuật ngữ và định nghĩa, chủ đề và giá trị siêu dữ liệu, câu hỏi và câu trả lời hoặc bất kỳ nhóm dữ liệu giá trị tên nào khác.

Quyền tác giả và thông tin meta bài viết khác hoàn toàn phù hợp với cấu trúc cặp giá trị: khóa sau:

  • ai là tác giả
  • ngày bài báo được xuất bản
  • cấu trúc trang web mà theo đó bài viết được tổ chức (danh mục / thẻ: chuỗi / mảng)
  • Vân vân.

Một ví dụ cố ý:

<article>
  <header>
    <h1>Article Title</h1>
    <p class="subtitle">Subtitle</p>
    <dl class="dateline">
      <dt>Author:</dt>
      <dd>Remy Schrader</dd>
      <dt>All posts by author:</dt>
      <dd><a href="http://www.blog.net/authors/remy-schrader/">Link</a></dd>
      <dt>Contact:</dt>
      <dd><a mailto="remy@blog.net"><img src="email-sprite.png"></a></dd>
    </dl>
  </header>
  <section class="content">
    <!-- article content goes here -->
  </section>
</article>

Như bạn có thể thấy khi sử dụng <dl>yếu tố để biết thông tin bài viết meta, chúng tôi được tự do để quấn <address>, <a>và thậm chí cả <img>thẻ trong <dt>và / hoặc <dd>thẻ theo bản chất của nội dung và nó chức năng dự định .
Các thẻ <dl>, <dt><dd>được tự do thực hiện công việc của chúng - về mặt ngữ nghĩa - truyền đạt thông tin về nguồn gốc <article>; <a>, <img><address>là tương tự miễn phí để làm công việc của họ - một lần nữa, ngữ nghĩa - truyền đạt thông tin về nơi để tìm nội dung có liên quan, trình bày trực quan không lời, và thông tin liên lạc cho các bên có thẩm quyền tương ứng.


9

Trong HTML5, chúng tôi có thể sử dụng một số nhãn ngữ nghĩa giúp tổ chức thông tin liên quan đến loại nội dung của bạn, nhưng bổ sung và liên quan đến chủ đề bạn có thể kiểm tra schema.org . Đây là một sáng kiến ​​của Google, Bing và Yahoo nhằm giúp các công cụ tìm kiếm hiểu rõ hơn về các trang web thông qua các thuộc tính vi dữ liệu. Tu bài podría tener el siguiente khía cạnh:

<article itemscope itemtype="http://schema.org/Article">
<header>
  <h1 itemprop="headline">header</h1>
  <time itemprop="dateCreated datePublished">09-02-2011</time>
  <div itemprop="author publisher" itemscope itemtype="http://schema.org/Organization">
    <p>
        <img itemprop="image logo" src="..."/>
        <span itemprop="name">John</span>
    </p>
  </div>
</header>
<section itemprop="articleBody" >
    My article....
    <img itemprop="image" src="..."/>
</section>
</article>

1
Chắc chắn là câu trả lời chính xác nhất cho năm 2019.
Simon G

3
Lưu ý rằng schema.org không phải là một phần của HTML5. Nó là một đặc điểm kỹ thuật riêng biệt.
ya.teck


3

Làm thế nào về vi dữ liệu :

<article>
<h1>header<h1>
<time>09-02-2011</time>
<div id="john" itemscope itemtype="http://microformats.org/profile/hcard">
 <h2 itemprop="fn">
  <span itemprop="n" itemscope>
   <span itemprop="given-name">John</span>
  </span>
 </h2>
</div>
My article....
</article>

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.