前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端最重要的工作——HTML构架

前端最重要的工作——HTML构架

作者头像
FungLeo
发布2022-11-28 08:50:12
5370
发布2022-11-28 08:50:12
举报

前端的工作是上承设计师,下接后端工程师的。其工作主要有三个方面——html\css\javascript(下简称为JS);

其中,难度最小的是html,最大的是JS。

就我本人而言,JS依然是难以逾越的高峰,其中的逻辑需要大大超乎了我这个文科生所能理解的范畴。因此,我只能简单的写一些jQuery。遇到难题,则要去求教团队中的技术大拿。

而我今天不准备讨论JS方面的难度。因为水平远远不够。

我个人是从设计开始入行的,也就是从PS开始的。逐渐的进入到前端这个无底深坑里面。

今天我想说的是HTML。

一个良好的HTML基础是非常重要的。但是有太多的前端不把HTML当回事情,因为这是最简单的。

我想说的是HTML一点也不简单,想要写好HTML,必须遵循一下原则

  1. 善用HTML标签,不要一路DIV+SPAN
  2. 良好的结构,排除冗余
  3. 良好的HTML语义,利于后端理解,更加利于项目的SEO工作
  4. 善用ID,善用CLASS。不要全部ID,更不要全部CLASS
  5. 充分考虑改版需求,构架要灵活。

就第一条来说,善用HTML标签,就有太多的人做不到。在他们看来,HTML只要两个标签就够了,一个是DIV,一个是SPAN,不同的用途,加上不同的CLASS即可。

能不能完成工作?当然能,但是我认为这是远远不够的。

举个例子。

代码语言:javascript
复制
<div id="head"></div>
<div id="body">
    <div id="bar"></div>
    <div id="main"></div>
</div>
<div id="foot"></div>

如上代码,就是很多前端写出来的布局。可不可以?当然可以。问题是,这样不够优秀,没有充分使用HTML5的更加丰富的标签,没有严格的语义。

那么我是如何来写的呢?我会像下面这样写:

代码语言:javascript
复制
<header id="head"></header>
<section id="body">
    <aside id="bar"></aside>
    <section id="main"></section>
</section>
<footer id="foot"></footer>

看上去好像是差不多。但是在语义方面就相差甚远了。这一点是非常重要的。然而,这个例子并不能说服大家放弃DIV,因为这个实在是太顺手了。那么我们再来举个例子。

代码语言:javascript
复制
<ul>
    <li>
        <a href="#"><img src="test.jpg" alt="title"></a>
        <a href="#"><span>title</span></a>
    </li>
    ......
</ul>

这段代码是很常见的。但是我认为这是有问题的。因为,出现了两个链接,这就造成了冗余。而且标题使用了没有语音的span。我会写如下的代码:

代码语言:javascript
复制
<ul>
    <li>
        <a href="#" title="title">
            <img src="test.jpg" alt="title">
            <h5>title</h5>
        </a>
    </li>
    ......
</ul>

这样,就优化重复出现的a的问题,并且使用了有更加语义化的h5标题。当然,并非一定要使用h5。使用其他的h标签,或者strong也是没有问题的。

好吧,这个例子还是不极端,那么我就举一个极端的例子来说明问题。

代码语言:javascript
复制
<ul>
    <li>
        <a href="#" title="title">
            <img src="test.jpg" alt="title">
            <span class="title">title</span>
            <span class="tejia">特价</span>
            <span class="jiage">¥2000</span>
            <span class="buy">立即购买</span>
        </a>
    </li>
    ......
</ul>

在商城中,是会出现一些更多的文字的,如上面的例子。这已经非常好了,因为很清楚各个span是干嘛的,因为用了不同的class。但我认为这非常糟糕,我们可以这样优化这段代码:

代码语言:javascript
复制
<ul>
    <li>
        <a href="#" title="title">
            <img src="test.jpg" alt="title">
            <h5>title</h5>
            <span>特价</span>
            <strong>¥2000</strong>
            <em>立即购买</em>
        </a>
    </li>
    ......
</ul>

我不需要使用一个class,善用html标签,就能完成这一段代码,并且这段代码中的重点已经非常有层次了。这也为我们写css提供了极大的方便。

当然,要写好html并不仅仅是如此。其实有一些原则还是可以把握的:

  1. 不要在HTML中出现装饰性的内容,这些内容应该在css中去呈现。
  2. 良好的缩进,便于检查代码。我看到乱糟糟的缩进就疯了。
  3. 复杂的地方最好留有注释。

最最讨厌的还有一种情况,就是用DIV去模拟TABLE。这简直是吃饱了撑的。有TABLE不用,非得去模拟。如果是简单的还好,如果是复杂的,天哪,那个代码就不能看。

从我08年转型写div+css以来,就一直有讨论,要不要模拟table。我的回答就一句话——是表格的地方就用table,不是表格,就不用,因为,table,就是表格!!

另外,在不考虑搜索引擎优化的项目中(比如网站后台),则可以更多的使用table来制作列表,因为非常方便,代码量非常少。

当然,写好table也不是一件简单的事情。确实是有太多的人写太多糟糕的TABLE了。那么,我是如何来写table的呢?举个例子:

代码语言:javascript
复制
<table>
    <col>
    <col width="100">
    <col width="200">
    <col width="140">
    <col width="80">
    <tr>
        <th>title1</th>
        <th>title2</th>
        <th>title3</th>
        <th>title4</th>
        <th>title5</th>
    </tr>
    <tr>
        <td>content1</td>
        <td>content2</td>
        <td>content3</td>
        <td>content4</td>
        <td>content5</td>
    </tr>
    <tr>
        <td>content1</td>
        <td>content2</td>
        <td>content3</td>
        <td>content4</td>
        <td>content5</td>
    </tr>
    <tr>
        <td>content1</td>
        <td>content2</td>
        <td>content3</td>
        <td>content4</td>
        <td>content5</td>
    </tr>
</table>

如上面这个表格。表头就用th,语义非常好。也便于css使用不同的标签来给予不同的样式。与此同时,使用col来控制每一列的宽度(第一个留空,就表示自由拉伸)。这样,就不用在每一个TD里面去写宽度了。代码量非常的精简。

也不要在css中去控制宽度,只要给予table的宽度为100%即可。

这样做的好处是什么?就是在不同的地方可以使用同一个表格构架,根据展示内容的不同,给予不同的宽度即可。

一般来说,一个横列的表格和一个纵列的表格,两个样式,即可搞定一个网站后台的所需了。

当然,这篇文章只是我这么多年的工作的总结,如果有不对的地方,欢迎斧正!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-09-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档