2010-12-12 40 views
10

Tôi biết rằng <marquee> thẻ là điều xấu.
Nếu quá xấu để có văn bản cuộn, thì việc sử dụng JS để có được hiệu ứng tương tự không làm cho nó tốt hơn, phải không?<marquee> sử dụng thẻ/thay thế html

Và giả sử tôi quyết định có một số văn bản cuộn (gasp), có một số loại CSS (3?) Hoặc HTML (5?) Không?

Nếu không có một giải pháp CSS/HTML, tôi nên sử dụng:

  • Javascript, mà sẽ nặng hơn để tải về và có thể được tắt (? Là một pro hoặc một con), nhưng tôi nhận được tiền thưởng trở W3C chính xác và hợp lệ và không bị phản đối và thông minh,

hay tôi nên sử dụng

  • ghét <marquee> (< chớp > <blink>) thẻ, trọng lượng nhẹ (19 byte!), Được hỗ trợ đầy đủ bởi tất cả các trình duyệt trong tất cả các chế độ hiển thị và tất cả các loại tài liệu (mặc dù không nên), nhưng không được chấp nhận?

Cảm ơn.

P.S. Tôi cho rằng một tờ báo tin tức là sử dụng hợp lệ cho kiểu dáng 01. P.P.S. Nếu bất cứ ai nói với tôi rằng nếu tôi không muốn một giải pháp Javascript nặng tôi nên sử dụng JQuery vì nó nhẹ, tôi sẽ chụp chúng trong các ý kiến ​​

Edit: Tôi đang thêm thẻ JQuery vì nó có vẻ là tốt nhất cách để thu hút sự chú ý từ rất nhiều chuyên gia về các câu hỏi JS, và nó không hoàn toàn không liên quan ở đây.

+3

+1 cho mục đích để bắn jquery adepts – KooiInc

+5

@Koolinc Tôi không có gì chống lại JQuery bản thân mình, và tôi sử dụng nó khá thường xuyên. Tôi chỉ chống lại các tàu của tư tưởng: Ông nói ông không muốn sử dụng JS vì nó là nặng -> JQuery là nhẹ (nó nói như vậy trên trang web) -> Ông chỉ nghĩ về hai lựa chọn, nhưng JQuery là một thứ ba -> Anh ấy nên sử dụng JQuery! – baruch

Trả lời

6

Nó không phải là hiệu ứng xấu. Vấn đề với thẻ marquee, blink và font là chúng chuyển tải bản trình bày chứ không phải cấu trúc nội dung của bạn.

0

Nếu bạn chắc chắn rằng nó hoạt động trên tất cả các nền tảng bạn đang hướng đến, và bạn không quan tâm những gì w3c nói bạn chắc chắn có thể sử dụng thẻ marquee. Không có cách nào mà bạn có thể tìm thấy một giải pháp JavaScript hoạt động trong ít hơn 14 byte.

Điều đáng tiếc duy nhất là lý do tất cả các trình duyệt này hỗ trợ tất cả các yếu tố không được chấp nhận trong trường hợp này - thậm chí không phải là một phần của bất kỳ tiêu chuẩn HTML nào, là vì tất cả những người này sử dụng các yếu tố này và bắt đầu rên rỉ khi mới phiên bản không hỗ trợ trang web tuân thủ 1982 của họ nữa.

Vì vậy, hãy tiếp tục và sử dụng vùng chọn miễn là nó hoạt động cho bạn, nhưng vui lòng không phàn nàn nếu trang web của bạn ngừng hoạt động trong trình duyệt mới hơn.

+1

Trang web sẽ không hoạt động, chỉ phần tử marquee có thể biến mất. Không phải là tôi ủng hộ các yếu tố không được chấp nhận và/hoặc không chuẩn. – AUSteve

5

CSS3 đã hỗ trợ cho marquee, nhưng nó chỉ được hỗ trợ trong một vài trình duyệt (Safari và Chrome là người duy nhất, để kiến ​​thức của tôi)

http://www.w3.org/TR/css3-marquee/

Có một số plugin JQuery rằng thực hiện nó, nhưng họ đến tại các chi phí của tải JQuery (26Kb, nặng hơn so với các giải pháp duy HTML, nhưng không phải những gì tôi sẽ gọi nặng)

http://plugins.jquery.com/plugin-tags/marquee

Tất nhiên bạn có thể dễ dàng làm điều đó cho mình w ithout JQuery, nhưng nhìn vào các plugin có thể cung cấp cho bạn ý tưởng.

Một tùy chọn khác để xem xét là làm một hoạt ảnh Flash nhỏ.

+12

Vui lòng không sử dụng Flash cho những thứ như vậy –

+1

@Andreas Kuckartz: bạn có thể giải thích thêm một chút không? Tôi không thấy cách sử dụng Flash là tồi tệ nhất, ví dụ, bằng cách sử dụng JS trong trường hợp này. Thay thế CSS không đáng kể tại thời điểm này ... – nico

+2

Flash là độc quyền. Nó thường xuyên không tách rời hình thức/phong cách và nội dung. Nó không được hỗ trợ trên một vài "i" -Devices. Và - như bạn đã viết chính xác - các giải pháp được triển khai trong JavaScript đã tồn tại. Vì vậy, tôi nghĩ rằng Flash không phải là một lựa chọn hợp lý để cuộn văn bản. –

0

Here's the code thực hiện phần tử marquee trong Firefox, về cơ bản nó vẫn làm trong JavaScript, vì vậy bạn luôn có thể điều chỉnh mã đó và sử dụng trực tiếp trong tất cả các trình duyệt.

Mã có thể bị hack xung quanh để có thể triển khai vùng chọn trên bất kỳ phần tử nào trong Firefox, được áp dụng thông qua các ràng buộc CSS và XBL (Firefox only example). Tương đương trong IE sẽ là behaviours và bạn có thể sử dụng CSS3 trong Safari/Chrome như nico được đề xuất và bạn sẽ giữ nội dung thuyết minh ngoài đánh dấu của mình, nhưng chỉ bạn mới có thể biết liệu nó có đáng để nỗ lực không.

0

Tôi đã tìm kiếm hiệu quả nhấttrình duyệt chéo được hỗ trợ triển khai marquee. Vì bất kỳ lý do gì, ngay cả việc triển khai thực hiện marquee webkit CSS cũng không ổn định.

Cách tiếp cận chung là sử dụng bộ hẹn giờ (hoặc triển khai animate jQuery) để điều chỉnh thuộc tính CSS lề của phần tử. Điều này là quá trục trặc và rất kém hiệu quả. Tôi đã đưa ra thực hiện sử dụng các chuyển tiếp CSS3 cho các trình duyệt có hỗ trợ nó và nếu không hãy kích hoạt thuộc tính scrollLeft của phần tử chứa. Nó là một thực hiện thử nghiệm, mặc dù nó hoạt động tốt với IE7 +. Những người khác cũng có thể thấy nó hữu ích, https://github.com/gajus/marquee (demo https://dev.anuary.com/60244f3a-b8b2-5678-bce5-f7e8742f0c69/).

Các vấn đề liên quan