CSS執行個體:定義列表dl頁面元素 注重語義建立良好結構(轉載52css)

來源:互聯網
上載者:User

  大家都在學習CSS網頁布局,研究著CSS定位、浮動,以及各種CSS屬性的應用與設定技巧。這本身並沒有什麼問題。也值得大家去研究學習。但往往忽視了一個重要的領域,那就是HTML。我在52CSS.com的文章中,不止一次的強調,語義和結構。大家可能也看得煩了。認為這沒有什麼,認為這並不重要。

  沒有良好的HTML文檔作為基礎,我們的CSS網頁布局往往困難重重。如同是,一幛建築,本身就有品質問題。你去裝修,怎麼弄都會有問題,除了消耗更多的材料、精力,還會讓最終的裝修效果大打折扣。CSS網頁布局同樣如此,如果HTML文檔,本身結構不合理,沒有注重語義,我們除了要編寫更多的CSS樣式去定義,還會讓HTML代碼繁瑣。這與WEB標準本身的理念是背道而馳的。

  我們52CSS.com今天繼續與大家討論這方面的內容。或許您看了下面的案例,你對HTML將會有新的認識。同時也希望能引起你學習的慾望,能意識到,CSS網頁布局,不止是學習CSS。

  一、引子

  在52CSS.com的論壇,有網友提出這樣一個問題,說是頁面元素在FF中出現了錯位的現象。

  原貼:

  開啟他的頁面,我們看到如下效果:

  

 

  查看HTML源檔案,得到了如下的代碼:  

 

  1. <div id=product> 

  2.  

  3. <span><a href="/product/Stainless_Steel_runching_hole_mesh/">Stainless Steel runching hole mesh</a></span><br /> 

  4. <div id=list align="left"> 

  5. <a href="/product/Stainless_Steel_runching_hole_mesh/"><img src="/up_files/image/article/2009/02/20/TN/34812561_70_80.jpg" alt="Stainless Steel runching hole mesh" border=0 /></a> <em>We can provide perforated metals for decoration, screening, separation, sifting,..</em> 

  6. </div> 

  7.  

  8. <span><a href="/product/aluminim_plate_runching_hole_mesh/">aluminim plate runching hole mesh</a></span><br /> 

  9. <div id=list align="left"> 

  10. <a href="/product/aluminim_plate_runching_hole_mesh/"><img src="/up_files/image/article/2009/02/20/TN/33976161_70_80.jpg" alt="aluminim plate runching hole mesh" border=0 /></a> <em>Weaving and Characteridtic :it is punched to mesh ,including:aluminim plate mesh..</em> 

  11. </div> 

  12.  

  13. <span><a href="/product/Expanded_Metal_Mesh/">Expanded Metal Mesh</a></span><br /> 

  14. <div id=list align="left"> 

  15. <a href="/product/Expanded_Metal_Mesh/"><img src="/up_files/image/article/2009/02/19/TN/60598081_70_80.jpg" alt="Expanded Metal Mesh" border=0 /></a> <em>Material: Superior steel material Processing: Expanded with steel or other meta..</em> 

  16. </div> 

  17.  

  18. <span><a href="/product/crimped_wire_mesh/">crimped wire mesh</a></span><br /> 

  19. <div id=list align="left"> 

  20. <a href="/product/crimped_wire_mesh/"><img src="/up_files/image/article/2009/02/19/TN/60198941_70_80.jpg" alt="crimped wire mesh" border=0 /></a> <em>Material: Stainless steel wire 301 ,302 ,304, 304L ,316 ,316L, 321 Iron Wire Red..</em> 

  21. </div> 

  22.  

  23. <span><a href="/product/Punching_Hole_Mesh/">Punching Hole Mesh</a></span><br /> 

  24. <div id=list align="left"> 

  25. <a href="/product/Punching_Hole_Mesh/"><img src="/up_files/image/article/2009/02/19/TN/34749721_70_80.jpg" alt="Punching Hole Mesh" border=0 /></a> <em>Also named mine screen mesh, mechanic screen mesh. It can be supplied in folded ..</em> 

  26. </div> 

  27.  

  28. </div> 

  相關CSS代碼:  

 

  1. #product{  

  2. margin: 2px;  

  3. }  

  4. #product a{  

  5. color: #1A9CCE;  

  6. }  

  7. #product a:hover{  

  8. color: #EF8D3D;  

  9. }  

  10. #product span{  

  11. font-family: Arial, Helvetica, sans-serif;  

  12. font-size: 13px;  

  13. line-height: 25px;  

  14. font-weight: bold;  

  15. color: #5199DB;  

  16. float: left;  

  17. margin-left: 2px;  

  18. width: 250px;  

  19. text-align: left;  

  20. display: block;  

  21. }  

  22. .list{}  

  23. .list img{  

  24. float: left;  

  25. height: 50px;  

  26. width: 50px;  

  27. border: 1px solid #CCCCCC;  

  28. padding: 2px;  

  29. margin: 2px;  

  30. }  

  31. .list em{  

  32. clear: none;  

  33. float: left;  

  34. height: 50px;  

  35. font-family: Arial, Helvetica, sans-serif;  

  36. font-size: 12px;  

  37. line-height: normal;  

  38. color: #3587B3;  

  39. padding: 2px;  

  40. margin: 2px;  

  41. font-style: normal;  

  對上面的代碼,作一下簡要的評述,可能並不全面。

  1、id的定義需要用引號。如,div id=product,應為,div id="product"

  2、同一個頁面中id具有唯一性,樓主將多個div的id設定為list

  3、將樣式徹底分離到CSS中,而不是在HTML檔案內,align="left"類似這樣的代碼都要去除。

  4、未重視HTML結構語義。HTML標籤應用不規範,如,標題用span,描述性圖片與文字用div。

  5、再談語義,這個頁面元素本身的結構就是列表。可以用無序列表,也可以用定義列表。而不是樓主所理解的標籤組織方式。

  6、頁面存在的問題可能是id為list的CSS定義,選取器是.list,樣式未產生作用。也可能是寬度理解差異造成的。

  二、思考

  上面的代碼編寫思路,在初學的時候往往認為是非常正確、無可厚非。只要用標籤將內容組織起來,然後應用CSS樣式進行定義,使HTML文檔在瀏覽器中顯示出想要的效果,即是進行了CSS網頁布局,不再是table布局而符合WEB標準了。

  本文作者:52CSS.com 如需轉載請建立本站連結(http://www.52css.com/),並且不得隨意改動文章內容、保留此著作權聲明文本!

  其實不然,CSS網頁布局本身需要設定的對象就是HTML標籤與頁面元素。如果這些沒有組織好,再強大的CSS知識可能也無能為力。如上面的編碼,CSS設定繁瑣,更容易出錯。樣式本身不易於管理,等等。

  那我們該如何對這樣的頁面元素進行定義呢?

  或許您會想到無序列表ul,將每一組單元,看成是一個清單項目li,清單項目li中,再包括標題,縮圖和標題文字。。

  

 

  我們的HTML代碼可以是這樣:  

 

  1. <ul> 

  2.     <li> 

  3.     <strong><a href="">CSS執行個體:一個簡單的form搜尋表單</a></strong> 

  4.     <p><a href=""><img src="01.jpg" alt="01" /></a></p> 

  5.     CSS網頁布局中不可避免的會遇到表單元素。有網友提出了這樣的問題。對錶單...  

  6.     </li> 

  7. </ul> 

  然而這樣應用也並不貼切。在XHTML中還有另外一種列表形式,定義列表dl。

  可以參考這裡:

  dt——代表HTML自訂欄表標題

  可以將標題視為定義列表中列表組的標題dt。

  dd——代表HTML自訂欄表描述

  可以將縮圖和標題文字視為列表組中對標題的描述與釋義dd。

  。

  

 

  我們的編碼可以是這樣的:  

 

  1. <dl> 

  2.     <dt><a href="">CSS執行個體:一個簡單的form搜尋表單</a></dt> 

  3.     <dd><a href=""><img src="01.jpg" alt="01" /></a>CSS網頁布局中不可避免的會遇到表單元素。有網友提出了這樣的問題。對錶單...</dd> 

  4. </dl> 

  三、解決

  以上面的思考為基礎,開始對這個頁面元素重新編寫。HTML編碼。  

 

  1. <dl id="product"> 

  2.     <dt><a href="">CSS執行個體:一個簡單的form搜尋表單</a></dt> 

  3.     <dd><a href=""><img src="01.jpg" alt="01" /></a>CSS網頁布局中不可避免的會遇到表單元素。有網友提出了這樣的問題。對錶單...</dd> 

  4.     <dt><a href="">用ul+li打造圖書目錄效果</a></dt> 

  5.     <dd><a href=""><img src="02.jpg" alt="02" /></a>ul無序列表是一個非常重要的HTML標籤,頁面中許多元素都用它來組織。圖書目錄...</dd> 

  6.     <dt><a href="">CSS經典技巧:text-indent隱藏文字</a></dt> 

  7.     <dd><a href=""><img src="03.jpg" alt="03" /></a>以圖換字是CSS布局中非常常用的一種手段,因為圖片文字有時候比可選的文字的...</dd> 

  8.     <dt><a href="">製作CSS半透明效果的浮動層</a></dt> 

  9.     <dd><a href=""><img src="04.jpg" alt="04" /></a>CSS網頁布局中常常會遇到各種各樣的問題,由於產品和項目的需要,往往引出...</dd> 

  10.     <dt><a href="">純CSS實現中英文雙語 導覽功能表</a></dt> 

  11.     <dd><a href=""><img src="05.jpg" alt="05" /></a>CSS導覽功能表一直是大家所關心的問題。52CSS推出的執行個體也很多,今天向大家介...</dd> 

  12. </dl> 

  對上面的編碼進行CSS樣式定義.

  

  重設CSS樣式。

 

  1. * {  

  2.     margin:0;  

  3.     padding:0;  

  定義整個dl的寬度,設定外邊距、內邊距和邊框。 

 

  1. #product {  

  2.     width:240px;  

  3.     margin:30px auto;  

  4.     padding:0 4px 8px 4px;  

  5.     border:1px solid #ccc;  

  定義dt標題的樣式,設定寬度和高度,定義上外邊距、行距。強制在一行顯示,溢出隱藏。可以避免文字過多撐開dt的現象。  

 

  1. #product dt {  

  2.     width:240px;  

  3.     height:26px;  

  4.     margin-top:8px;  

  5.     line-height:26px;  

  6.     white-space:nowrap;  

  7.     overflow:hidden;  

  定義dt標題的連結樣式。  

 

  1. #product dt a {  

  2.     font-size:14px;  

  3.     color:#06f;  

  4.     text-decoration:none;  

  5. }  

  6. #product dt a:hover {  

  7.     color:#00f;  

  8.     text-decoration:underline;  

  定義dd描述的CSS樣式,設定寬度和高度,定義文字大小與行距。設定溢出隱藏。這樣就將描述中的文字部分的CSS樣式編寫完畢了。  

 

  1. #product dd {  

  2.     width:240px;  

  3.     height:64px;  

  4.     font-size:13px;  

  5.     line-height:21px;  

  6.     color:#333;  

  7.     overflow:hidden;  

  定義dd描述中連結元素a的CSS樣式,向左浮動,定義邊框,右外邊距定義。使圖片與文字產生一定的距離。

  定義縮圖的大小。使連結a元素的邊框與圖片有1px的距離,將外邊距設定為1px。設定邊框為0。

  本文作者:52CSS.com 如需轉載請建立本站連結(http://www.52css.com/),並且不得隨意改動文章內容、保留此著作權聲明文本!

  在懸停狀態下,定義連結元素a的邊框顏色為藍色。

  此至,編碼全部完成。

  最終的效果:

  

相關關鍵詞:
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.