Trang Chủ | Diễn Đàn | Thành Viên (Đăng Ký) | Tìm Kiếm | Tutorial Room
HTML & JavaScript - Điên đầu với CSS và DIV
First page Previous page  (Page 1 )   1     2   Next page Last page
Điên đầu với CSS và DIV
Member
Member since
23:32 03-06-2003
Posts: 489
Fantasy Points: 5,559
Rank
question Posted at 05:48 25-06-2006 Move Move Topic   Pin/Unpin Pin Topic   Lock Lock Topic
Chào các bạn,

Cả tuần nay mình điên tiết với cái vụ thiết kế trang web với thẻ DIV và CSS thay vì dùng table. Mình đọc trên mạng thấy người ta có nói rằng khi layout cho trang web thì nên hạn chế dùng table nếu nó không phải là một bảng dữ liệu kiểu bảng nhiệt độ, tỉ số bóng đá, liệt kê danh sách. Và những web guru còn cho rằng dùng thẻ DIV thì linh hoạt hơn, thiết kế trang chạy nhanh hơn, linh hoạt hơn... nói chung, thẻ DIV + CSS được ca ngợi hết lời.

Chính vì lý do đó, mình mới ngẫm nghĩ rằng nên chuyển cái forum phpBB của mình sang dùng thẻ DIV thay cho table xem thế nào. Kết quả, đánh vật cả một tuần, làm hỏng luôn forum mà không ra được ngô khoai gì.

Sự thất bại thật thảm hại. Có mấy nguyên nhân sau đây:

- Vừa đọc tài liệu vừa làm chứ chưa thật rành về CSS và cách chế ngự các thuộc tính của các thẻ.

- Các trình duyệt xử lý khác nhau đối với các thẻ, CSS nên nếu xem tốt trong IE thì trong Firefox thất bại hoặc ngược lại mặc dù mình không đòi hỏi trang web của mình phải phục vụ mọi trình duyệt, nhưng đối với một trang web tối thiểu phải phục vụ được cho người dùng sử dụng 2 trình duyệt kia.

- Layout bằng thẻ DIV và CSS thì khi đánh dấu (bôi đen) để in một đoạn văn bản nào đó mà nằm ở 2 hay nhiều DIV khác nhau thì mới kinh khủng làm sao, nó đánh dấu rất mất trật tự, in ra đọc không hiểu. Cái này khi dùng Table không hề bị.

Kết quả cuối cùng phải chép lại các file .tpl của forum gốc nguyên thủy dùng với table.

Phải nói rằng mình rất bực tức vì tìm khắp trên mạng không thấy có cái forum nào người ta dùng thẻ DIV để layout cả. Như vậy là thế nào nhỉ? Phải chăng họ đã nhìn thấy rằng chưa đến lúc dùng nó (kể cả vBulletin nổi tiếng như thế vẫn dùng table).

Mình mong muốn bạn nào có kinh nghiệm về DIV và CSS viết giúp mình một đoạn code có thể chạy được trên IE và Firefox hiển thị đúng cái bảng như thế này:



Mình đã thử làm như thật là thất bại vì không biết dùng postion là relative hay absolute. Cái rất khó là khi màn hình có độ phân giải khác nhau thì phải có sự điều chỉnh layout chứ không thì xem không ra gì.

Mình đã thử làm như sau:
<style>
#board { width: 98%; margin-left: 1%; }
#firstrow { width: 100%; margin-left: 1%; background-color: green }
#firstrow_cell1 { width: 75%; margin-right: 1px; background-color: red }
#firstrow_cell2 { width: 7%; margin-right: 1px; background-color: red }
#firstrow_cell3 { width: 7%; margin-right: 1px; background-color: red }
#firstrow_cell4 { width: 7%; margin-right: 1px; background-color: red }
/* 4% use for padding between above cells, paddings like vertical grid */

#secondrow { width: 98%; margin-left: 1%; background-color: magenta }

#rowboard { width: 98%; margin-left: 1% }
#rowboard_col1 { width: 5%; }
#rowboard_col2 { width: 70%}
#rowboard_col3 { width: 7%}
#rowboard_col4 { width: 7% }
#rowboard_col5 { width: 7% }
</style>
<body>
<div id="board">
  <div id="firstrow">
      <div id="firstrow_cell1">Diễn đàn</div>
      <div id="firstrow_cell2">Chủ đề</div>
      <div id="firstrow_cell2">Bài gửi</div>
      <div id="firstrow_cell2">Bài cuối</div>
  </div>
  <div id="secondrow">Tên categories đặt ở dòng này</div>
  <div id="rowboard">
      <div id="rowboard_col1">Chèn cái ảnh biểu tượng có bài mới vào đây<div>
      <div id="rowboard_col2">Tên forum / tên box và tóm tắt về nó<div>
      <div id="rowboard_col3">Số lượng chủ đề<div>
      <div id="rowboard_col4">Số lượng bài gửi<div>
      <div id="rowboard_col5">Bài viết cuối của ai, lúc nào<div>
  </div>
</div>
</body>

Với đoạn mã gần tương tự như trên, mình không thể nào điều khiển được các thẻ DIV sắp xếp sao cho nó giống như cái hình minh họa trên kia được, tức nó nằm rất lộn xộn không ra table và các cell gì cả, lúc thì cái này đè lên cái kia, đa số là mỗi DIV xong thì xuống hàng nên không nối tiếp DIV khác vào theo hàng ngang được cho dù đã dùng các thuộc tính về postion khác nhau (relative, fixed, absolute), clear, v.v... đủ mọi kiểu vẫn chẳng thể nào làm được như hình minh họa.

Dường như nó quá khó, nhất là để chạy được trên cả IE6 và cả Firefox.

Còn rất khó khi mình muốn sắp xếp các DIV, vì để có thể điều chỉnh layout tùy theo độ phân giải nên mình dùng đơn vị đo là % hơn là pixel thì lại vướng cái là không biết được cái DIV trước kết thúc ở vị trí nào để cái DIV nối sau theo hàng ngang cách cái DIV trước 01px. Đang rất bí đến nổi mình định dùng Javascript để tính toán tọa độ trên màn hình nhằm bố trí các thứ đúng theo từ Pixel theo ý của mình (nhưng nghĩ lại cách này sẽ làm cho forum sinh mã khổng lồ => chạy như con rùa thì mục đích bị sai lạc, kém hơn dùng Table => cải lùi :-( )

Cầu cứu các bạn ra tay cứu giúp.

Rất cảm ơn những ai có ý kiến hay giúp mình giải quyết được vấn đề - mà không phải quay lại với các TABLE (mình rất ghét table vì nó không hứa hẹn sẽ cho phép nhúng Ajax vào).
SuperThin.
http://www.khoancatbetong.com => Lối nhỏ vào thời đại số, đã có thêm món Tả Pí Lù
Dịch vụ shared hosting chất lượng, giá phải chăng
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 6,528 time(s). 5 direct repli(es) and 5 indirect repli(es).
Title Poster
question Điên đầu với CSS và DIV
 
answer Re: Điên đầu với CSS và DIV
NBThanh
answer Re: Điên đầu với CSS và DIV
Girl_next_door
answer Re: Điên đầu với CSS và DIV
donghuc
answer Re: Điên đầu với CSS và DIV
hmh
answer Re: Điên đầu với CSS và DIV
hmh
Re: Điên đầu với CSS và DIV
Forum Moderator
Member since
20:03 17-08-2001
Posts: 18,047
Fantasy Points: 154,606
Rank
answer Posted at 00:08 26-06-2006
Reply to Điên đầu với CSS và DIV (superthin)
superthin:
Mình mong muốn bạn nào có kinh nghiệm về DIV và CSS viết giúp mình một đoạn code có thể chạy được trên IE và Firefox hiển thị đúng cái bảng như thế này:

Chỉ có 1 cách hiển thị "đúng như thế này" là...copy lại code HTML/Javascript/CSS của nó thôi ;-)

Để tránh nhức đầu bạn nên kết hợp cả table lẫn div. Chia hàng ngang thì dùng table chia ra nhiều column. Theo hàng dọc thì dùng div.
Như vậy tốt hơn vì div thep hàng ngang không chắc chạy đúng trên mọi trình duyệt!

superthin:
Rất cảm ơn những ai có ý kiến hay giúp mình giải quyết được vấn đề -  mà không phải quay lại với các TABLE (mình rất ghét table vì nó không hứa hẹn sẽ cho phép nhúng Ajax vào).

Nếu bạn có ý định dùng AJAX thì bạn nên dùng các bộ thư viện có sẵn hơn là tự viết 1 cái từ đầu :-)
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 6,059 time(s). 0 direct repli(es) and 0 indirect repli(es).
Re: Điên đầu với CSS và DIV
Member
Member since
19:40 22-08-2001
Posts: 1,393
Fantasy Points: 25,173
Rank
answer Posted at 12:15 28-06-2006
Reply to Điên đầu với CSS và DIV (superthin)
bạn vô xem site này http://www.codejock.com/ ! mình từng học tập nghiên cứu trên nó khi làm web site !

hix, thật kinh khũng , view source toàn thấy DIV không :-)

DIV từ đầu đến cuối , sắp xếp rất hợp lý .
Say men rượu ngày mai sẽ tỉnh
Say men tình muôn thuở vẩn còn Say
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 6,087 time(s). 2 direct repli(es) and 1 indirect repli(es).
Title Poster
answer Re: Điên đầu với CSS và DIV
 
answer Re: Điên đầu với CSS và DIV
superthin
answer Re: Điên đầu với CSS và DIV
azweb99
Re: Điên đầu với CSS và DIV
Member
Member since
23:32 03-06-2003
Posts: 489
Fantasy Points: 5,559
Rank
answer Posted at 19:59 30-06-2006
Reply to Re: Điên đầu với CSS và DIV (Girl_next_door)
Cám ơn bác NBThanh đã chỉ dẫn cách giải quyết tuy nó chưa thật tối ưu lắm nhưng còn hơn là bó tay.

Cũng rất biết ơn Girl_next_door đã chỉ cho mình một trang web rất hữu ích. Nó giúp mình biết phải bắt đầu như thế nào.
SuperThin.
http://www.khoancatbetong.com => Lối nhỏ vào thời đại số, đã có thêm món Tả Pí Lù
Dịch vụ shared hosting chất lượng, giá phải chăng
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 6,012 time(s). 0 direct repli(es) and 0 indirect repli(es).
Re: Điên đầu với CSS và DIV
Forum Moderator
Member since
03:29 09-01-2006
Posts: 584
Fantasy Points: 5,248
Rank
answer Posted at 19:56 11-07-2006
Reply to Re: Điên đầu với CSS và DIV (Girl_next_door)
Ở đây cũng có 1 site nói về cách dùng CSS + DIV thay cho table nè: http://stopdesign.com/p...attle/tables/?index=true
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 6,010 time(s). 1 direct repli(es) and 0 indirect repli(es).
Title Poster
answer Re: Điên đầu với CSS và DIV
 
answer Re: Điên đầu với CSS và DIV
donghuc
Re: Điên đầu với CSS và DIV
Forum Moderator
Member since
12:19 17-11-2001
Posts: 156
Fantasy Points: 2,613
answer Posted at 00:53 18-07-2006
Reply to Re: Điên đầu với CSS và DIV (azweb99)
MÌnh cũng đang nghiên cứu về kỹ thuật này (liquid layout), có rất nhiều thứ phải tìm hiểu, thực hành, rồi đọc cả phần recommendation của W3C nữa. Tuy nhiên mình thấy có một hạn chế là vấn đề tương thích giữa các trình duyệt. Để code một website với cấu trúc đơn giản hoặc dạng portal thị kô có vấn đề gì, nhưng khi muốn phát triển một số tính năng tương tác thì đúng là cực khổ. Thậm chí nhiều người còn phải dùng đến một số thủ thuật đánh lừa trình duyệt. Mình kô phải là 1 code guru nên mình kô quan tâm nhiều lắm đến mấy cái đó, nhưng nó cũng là một điều phiền phức khi mình cố gắng giữ cho phần xhtml code nó được quy chuẩn và đồng bộ. Hôm bữa mình vật lộn với cái drop down menu thuần CSS, cuối cùng vẫn phải sử dụng đoạn hack để nó hoạt động được trên IE (IE có vấn đề với thuộc tính hover của thẻ A).

Về vấn đề của bạn, mình nghĩ bản thân cái forum đó đã là dữ liệu dạng bảng rồi, vì thế kô nên cứng nhắc cứ phải dùng thuần CSS, bạn có thể kết hợp CSS với Table cho trường hợp này.

Project đầu tiên mình sử dụng kỹ thuật này là trang này http://vibforum.vcci.com.vn Hồi đó mình thật ngốc vì mới tiếp cận mà đã áp dụgn cho một site cũng tương đối cồng kềnh như vậy, tuy nhiên xoay qua xoay lại cũng xem được trên IE và Firefox. Giờ có kinh nghiệm hơn chút thì cố gắng làm sao cho nó quy chuẩn vì mình đặc biệt thích thú với web standard. YM ID của mình là donghuc, có gì trao đổi thêm nha.
................
http://hiendm.com
Bút sa gà chết !
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 5,995 time(s). 0 direct repli(es) and 0 indirect repli(es).
Re: Điên đầu với CSS và DIV
Forum Moderator
Member since
12:19 17-11-2001
Posts: 156
Fantasy Points: 2,613
answer Posted at 01:10 18-07-2006
Reply to Điên đầu với CSS và DIV (superthin)
superthin:


Còn rất khó khi mình muốn sắp xếp các DIV, vì để có thể điều chỉnh layout tùy theo độ phân giải nên mình dùng đơn vị đo là % hơn là pixel thì lại vướng cái là không biết được cái DIV trước kết thúc ở vị trí nào để cái DIV nối sau theo hàng ngang cách cái DIV trước 01px. Đang rất bí đến nổi mình định dùng Javascript để tính toán tọa độ trên màn hình nhằm bố trí các thứ đúng theo từ Pixel theo ý của mình (nhưng nghĩ lại cách này sẽ làm cho forum sinh mã khổng lồ => chạy như con rùa thì mục đích bị sai lạc, kém hơn dùng Table => cải lùi :-( )


Riêng với vấn đề sắp xếp cho các div ngang hàng, bạn chỉ cần dùng thuộc tính float là ngon lành, đừng định dạng position vì position đôi khi rất khó kiểm soát khi giải quyết với các độ phân giải khác nhau. Còn khoảng cách giữa các div có thể dùng thuộc tính margin
................
http://hiendm.com
Bút sa gà chết !
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 6,025 time(s). 0 direct repli(es) and 0 indirect repli(es).
Re: Điên đầu với CSS và DIV
Member
Member since
13:52 03-06-2002
Posts: 242
Fantasy Points: 5,000
Rank
answer Posted at 19:31 22-07-2006
Reply to Điên đầu với CSS và DIV (superthin)
Chào bạn,

Đúng là hiện nay W3 đang cổ vũ cho việc dùng CSS để layout một web page. Tuy nhiên, nếu bạn đọc kỹ hơn, bạn sẽ thấy rằng, W3 khuyên sử dụng đúng các thẻ HTML. Bạn có đồng ý rằng dùng đúng cặp thẻ cho nội dung cần trình bày sẽ hợp lý, đúng không? Thẻ <table> trong HTML 4, XHTML không bị deprecate, có nghĩa là nó vẫn hữu dụng, đúng không?

Trong ví du bạn đưa ra, nội dung đang cần trình bày là dạng bảng dữ liệu, vì vậy, dùng <table>, <tbody>, <thead> là rất phù hợp.
-----------------------------------------------
Em không yêu bằng chót lưỡi đầu môi.
Sâu trong tim và tận đáy lòng thành.
Em không yêu anh bằng lời.
Reply Reply   Quote Quote   Edit Edit   Delete Delete   Report Report
This post has been viewed 6,007 time(s). 1 direct repli(es) and 0 indirect repli(es).
Title Poster
answer Re: Điên đầu với CSS và DIV
 
answer Re: Điên đầu với CSS và DIV
tuannghia143
First page Previous page  (Page 1 )   1     2   Next page Last page

Permissions: Create Topic: No  |  Reply Topic: No  |  Attach File: No  |  Make Poll: No

Vietnamese Keyboard: AUTO TELEX VNI VIQR VIQR* OFF

Go top || Print page ||

All logos, trademarks and graphics artwork in this site are property of their respective owners.
Opinions expressed in articles within this site are those of their owners and may not reflect the opinion of TXBB.

TXBB: Home - Disclaimer - Help - Contact
Copyright (C) 2000-2006 TXBB. All rights reserved.

TreXanh Bulletin Board v2.0 (Build: #332 Nov 21, 2006)

DEBUG INFORMATION
Execution 0.354s - SQL used 8s - Concurrent process(es) 0