• CSS实例:定义列表dl页面元素 注重语义建立良好结构(转载52css)


      大家都在学习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.  250px;  

    19. text-align: left;  

    20. display: block;  

    21. }  

    22. .list{}  

    23. .list img{  

    24. float: left;  

    25. height: 50px;  

    26.  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.     240px;  

    3.     margin:30px auto;  

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

    5.     border:1px solid #ccc;  

      定义dt标题的样式,设置宽度和高度,定义上外边距、行距。强制在一行显示,溢出隐藏。可以避免文字过多撑开dt的现象。  


    1. #product dt {  

    2.     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.     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的边框颜色为蓝色。

      此至,编码全部完成。

      最终的效果如图所示:

      

  • 相关阅读:
    C#:String.Format数字格式化输出
    System.BadImageFormatException : 未能加载文件或程序集“Medici.PaymentRecover, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。
    How to debug windows service
    中文字符utf-8编码原则
    获取当前文件的绝对路径
    finfo_file
    usort 函数
    snmp 简单网管协议
    $this
    prinft he sprintf
  • 原文地址:https://www.cnblogs.com/showker/p/1741403.html
Copyright © 2020-2023  润新知