美文网首页程序员我爱编程
你需要一个开始编程的契机~入门篇:来自于一个HTML页面的成就感

你需要一个开始编程的契机~入门篇:来自于一个HTML页面的成就感

作者: 一定要成长 | 来源:发表于2018-10-06 23:39 被阅读12次
    HTML Programming

    以下,一点不算废话的闲言碎语

    不管你现在学的是C系列语言还是类似于VB可视化编程语言 ,都这个时代了,你不另外学点HTML网页编程,还真是跟不上时代了
    比如我身边的软件开发同行,有做 嵌入式开发 的,有做 桌面应用开发 的,还有做 APP开发 的,其中不乏高手,但很多人都想学或是已经在学用一定程度的HTML网页编程技术

    为什么呢?打个通俗的比方(或许有些牵强),电脑上的输入法,不管你用拼音还是五笔甚至日文德文,都得使用键盘吧
    要打出各种语言文字,就相当于嵌入式开发呀桌面应用开发呀APP开发,而你可能需要用到ctrl或alt等快捷键,那么这就可能相当于使用HTML
    这种情形下,HTML类似于辅助性的功能,但并不代表要用它去做多么令人激动的事,所以这个比喻仅仅针对上面的命题,适用于非网页编程的开发者想做的事情

    还不知道HTML的朋友,不用着急可以自行找度娘问问,知道HTML的朋友可以更加期待本篇内容,不管怎样咱们从基础开始,进入正题


    初识HTML

    我尽量以HTML5为例解说
    另外,网上数不尽的各种官方的非官方的对于HTML的定义,大家可以先不用理会
    跟着本篇学会了,自然会有不少启发,到时再去看定义,应该会有较好的理解

    第一次的 扫盲篇,给大家拿出了案例“餐厅预约系统
    那么从本篇开始(包括后续各篇章)就围绕着这个案例引导大家进入角色--做软件(网站)

    上菜:怎样的情况?

    HTML制作出来的简单页面效果

    填写预约信息的页面

    贴上代码

    <!DOCTYPE HTML>
    <html>
      <head>
      <title>填写信息 | 王老二餐厅预约服务</title>
      </head>
      <body>
        <h3>请输入您要预约的以下信息:</h3>
        姓名:<input type="text" size="15"><br>
        电话:<input type="tel" size="15"><br>
        人数:<input type="number" style="width: 10em"><br>
        日期:<input type="date"><br>
        时间:<input type="time"><br>
        <input type="submit" value="预约确认">
      </body>
    </html>
    

    这里可以“动"起来:https://jsfiddle.net/codingme/xyz58L6t/
    另外,大家可以使用这个网站来任意编写前端代码 html + css + javascript,免费而无需在自己电脑上安装任何编程软件/编辑器,也不需要搭建什么服务器(目前这个阶段),只要能写出代码,展现出页面构成,是多么很有成就感的一件事

    调味:分析页面与代码

    页面的构成

    从截图可知,由姓名到时间的几个输入用的基本信息项目,和一个确认按钮等元素(element)组成

    • 姓名、电话、人数
      以三个文本输入框的形式表现出来

    • 日期、时间
      虽然也是文本输入框,但填充了一些文字和字符,为什么呢?放在下面的代码构成讲解

    • “预约确认”
      以按钮的形式表现出来,按照通常的理解,点击这个按钮,就会出现一些交互性的动作,也放在后面讲解

    • 其它
      还看出有什么了?

      • 还有一个可以称之为页面标题的“请输入您要预约的以下信息:”,它是以加粗且稍大号的字体显示的(可以想像成Word呀Excel里的粗体和字号)
        但它只是我们自称的标题,我甚至也可以把它叫做段落标题,因为一个页面中理论上可以有无数个这类标题,且字体大小可以比较随意地设定,但它并不是网页本身的标题,下面即将说明的便是网页本身的标题

      • “放眼”整个截图,除了浏览器本身的地址栏和书签栏以外,最上方网页的标题“填写信息 | 王老二餐厅预约服务”也是代码里一个组成部分
        从HTML代码的语法来说,它是可有可无的,不过你会觉得有了它(实际做网站也会)是一种完美 ;)

    代码的构成

    什么是标签?这里可以事先了解一下:http://www.w3school.com.cn/html/html_primary.asp

    • 第一行
      <!DOCTYPE HTML>
      

    “声明”自己是一个“合法的”html文档
    注意,<> 是始末配对标志,必须同时有,并且它俩对于html代码中的任意标签都是必须的

    • 第二行及最后一行
      <html>
       ...
      </html>
      

    在这个物理范围内,写下咱们的html代码(以及后面要讲的css和javascript)
    注意,这里在结束标签时,语法要求必须用 /

    • html头部(header)
      <head>
        <title>填写信息 | 王老二餐厅预约服务</title>
      </head>
      

    道理类似,必须有首尾标签 <head> ... </head><title> ... </title>
    这里切记,在 title 的物理范围以外的地方,不能有任何文本信息及符号(半角空格可)

    • body,是重点,直接决定了网页的展现内容

      <body>
        <h3>请输入您要预约的以下信息:</h3>
        姓名:<input type="text" size="15"><br>
        电话:<input type="tel" size="15"><br>
        人数:<input type="number" style="width: 10em"><br>
        日期:<input type="date"><br>
        时间:<input type="time"><br>
        <input type="submit" value="预约确认">
      </body>
      
      • <h3>:是 <h1>...<h5> 的其中一个,字体由大到小,看似调整字体的作用,实则它们是作为页面的一些标识性标签,尤其是面向搜索引擎很适用(seo-friendly

      • <input>:输入型元素中常见的一类,由 type 指定表现内容,可以参考这里 http://www.w3school.com.cn/html/html_form_input_types.asp
        本例中,除了 text以外,都是HTML5里新增加的内容,比如 number 的输入框中,只能输入数字,datetime 则适用于输入日期时间(tel 目前只有 Safari 8 支持)
        submit,这里暂不作详细解释,大家理解为进入要下一个页面(预约内容的确认)的按钮即可
        还有 size,是 <input> 标签特有的属性,设定输入框在页面上显示出来的长度为15个半角字符
        <br> 标签,起换行的作用,如果省略它,会是怎样的显示呢?
        大家可以在jsfiddle里自行调整,看看效果,包括上面提到的 size,现在是15,也可以调整数值大小,试试吧!

    • 缩进
      应该不难发现,上面第一次写出的完整代码中,除了第一行以外,其它行基本都是缩进的(2个半角空格),至少是开始标签的地方,这是为什么呢?
      这完全是为了“美观”!对,年轻人爱美,咱们写代码也不能含糊(开个玩笑)
      其实,缩不缩进,缩进几个空格,在语法上完全可以忽略,但这是作为一个程序员的素养,写出美观的代码是很有必要的,在工作中也是非常需要的
      关于缩进,这里有一些说法,可作参考 https://doc.yonyoucloud.com/doc/java-code-conventions/page04.html
      (因为每种编程语言的缩进都大同小异,所以暂时了解/实践一种就可以)

    • 其它
      大家可能发现,使用jsfiddle操作实例时,并没有第一行以及 <html> 标签,这是为什么呢?
      仅从HTML代码的语法来说,它们是可有可无的,但作为HTML文件来说,是必须的
      所以通过jsfiddle等编程环境来练习时,可以省略这些部分,尽情玩弄html代码于股掌,而要作为开发网站为目的时,请务必写完整!(今后会有相关文章来讲解)


    想把HTML用得更好?

    入门了?!或许吧,谦虚一点,下面继续...

    再加入几个常见元素

    HTML制作出来的页面效果

    填写预约信息的页面 更多项目

    贴上代码

    <!DOCTYPE HTML>
    <html>
      <head>
      <title>填写信息 | 王老二餐厅预约服务</title>
      </head>
      <body>
        <h3>请输入您要预约的以下信息:</h3>
        姓名:<input type="text" size="15" placeholder="张三"><br>
        电话:<input type="tel" size="15" placeholder="13712345678"><br>
        人数:<input type="number" style="width: 10em" placeholder="10"><br>
        日期:<input type="date"><br>
        时间:<input type="time"><br>
        包间:<input type="checkbox">如需要请勾选<br>
        菜品:
        <select>
          <option selected>随意点菜</option>
          <option>特色餐桌</option>
          <option>四季餐桌</option>
          <option>家庭餐桌</option>
          <option>商务餐桌</option>
          <option>豪华餐桌</option>
        </select><br>
        酒水:
        <input type="radio" name="drink">酒水单点
        <input type="radio" name="drink">酒水全包(+30元/人)
        <input type="radio" name="drink">仅软饮料(+10元/人)<br>
        备注:
        <textarea rows="5" cols="30" placeholder="例:有老人和3岁小孩各一位,麻烦到时安排一下,谢谢"></textarea><br>
        注:如果需要包场,请另外联系<br>
        <input type="submit" value="预约确认">
      </body>
    </html>
    

    仍然是jsfiddle,这里可以“动"起来:https://jsfiddle.net/codingme/tq8fyndb/

    分析页面与代码

    页面的构成

    在之间的基础项目上,加入了几个可选项目,作为细节,让顾客有更多选择性,也感到些许人性化
    加入了几个不同的页面元素,提供稍微丰富的可视性,及提高了操作上的便利性

    代码的构成

    • 复选项
      包间:<input type="checkbox">如需要请勾选
      

    可以理解为想表达 YES / NO 的意思
    实际生活中,经常看到的页面上会使用复选项让咱们确定某商品的筛选条件,比如颜色、大小、品牌

    • 下拉列表
      菜品:
      <select>
        <option selected>随意点菜</option>
        ...
      </select>
      

    只要觉得想加入的内容,“恋人餐桌”“尊师餐桌”“哥们餐桌”...,可以随意增加N多个选项 option,其中我用 selected 属性把第一个选项设定成默认被选择的状态
    理论上应该没有限制,不过,你不会想往里面加入上百个选项!!那会有多么地难看,以咱们这个例子,从jsfiddle试试便知 ;)
    实际生活中,经常看到的页面上会使用下拉列表显示各省自治区的名称

    • 单选项
      酒水:
      <input type="radio" name="drink">酒水单点
      <input type="radio" name="drink">酒水全包(+30元/人)
      <input type="radio" name="drink">仅软饮料(+10元/人)
      

    与复选项类似,不过,这时只能选定其中一种
    如果没有 name 这个属性,且必须要写成同一个属性值(因为是想表达河水,所以这里是drink),不然,选定后的效果会与复选项一样了,达不到单选的目的!以咱们这个例子,去掉所有 name="drink", 挨个点击选项,从jsfiddle试试便知 ;)
    实际生活中,经常看到的页面上会使用单选项让咱们选择性别:男 or 女

    • 文本域(多行输入)
      备注:
      <textarea rows="5" cols="30" placeholder="例:有老人和3岁小孩各一位,麻烦到时安排一下,谢谢"></textarea>
      

    这个也很常见,可以改变属性 rows 以及 cols 的值大小试试效果

    • placeholder属性
      看出例子中各输入框里的效果了吗?
      这是HTML5里新增加的属性之一,主要是起到提示的作用,在它诞生之前,总会通过在旁边写上说明文,占用显示地盘还得考虑写怎样的文字描述才能让用户更容易地明白
      以咱们这个例子,去掉所有 placeholder 属性和它的值,从jsfiddle看看效果吧

    编辑软件/工具

    那么多标签和代码,都得自己一个个敲键盘吗?!
    大家可能有这样的担心,所以如果你不够勤奋的话,这确实是一个问题...
    但又不用过于担心,有妙招,尤其在实际工作中,需要高效编码(不过,初学者还是多敲敲键盘吧,有益无害)

    • 模板
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8">
        <title></title>
        </head>
        <body>
      
        </body>
      </html>
      

    这一段代码,我没有敲一个键盘,鼠标轻轻一点,自动生成,编码效率大幅提高(稍后讲解)
    有些模板已经做得很人性化,甚至你连代码都不用怎么写,一个完整的页面就出来了
    现在,作为html的骨架部分已经有具备,那么本篇前面部分讲述那些的 <title> <body>,接下来就该你来表演了

    提示 :虽然说骨架已经具备,但因为只是初学编写html,这样足够了,而实际工作中要开发一个网站的话,这里也是有很多学问的,今后的文章中会有涉及

    • 自动补全
      注:<input> 标签有点特殊,可以忽略
      开始标签(<h3> <select> <option> <textarea>),可以从jsfiddle试试,只要键盘敲出了,那么结尾标签(</h3> </select> </option> </textarea>) 自动就给咱们补全了,是不是很省心,而且会减少键盘敲打错误的几率,也即是降低了语法错误的几率

    • 编辑器/工具介绍
      一方面,类似于jsfiddle这类在线编辑器,且能实时看到效果的还有很多,我自己一般都不去下载什么编辑软件了,直接在线上(云端)编程

      另一方面,现在收费或免费编辑工具很多,为程序员所钟爱的也不少,确实能极大地提升编码效率,大家可以参考一下主流的编辑器 https://zhuanlan.zhihu.com/p/29498175

      由于种种原因,我平时用了一个叫做PSPad的编辑器,顺便推荐一下
      通过它,鼠标轻轻一点,自动生成了稍前提到的模板代码的骨架,大家自行摸索实践吧
      它好像没有在主流编辑器一览中,但我觉得挺好用,除了编码外相关功能也很齐全,它支持多国语言,官网提供汉化包

      还有一些“神作”,比如Emmet,大家可以在今后的工作实践中好好利用,这里不作讲解

    页面显示太死板了,看不下去...

    作者表示,这是一件很尴尬的事情 :(
    本篇主要是想让大家知道怎样能写出html代码,且讲解了页面构成和相关元素的使用
    为了进一步激发大家的兴趣化解迷局,接下来把原本放在下一篇要讲的内容稍作提示,也为本篇作个了结

    “前端工程师”,想必大家经常听到,尤其是准备就职的朋友们,html + css + ?,这个组合是必备技能
    “?”的地方先保留一下,现在只是针对本节的尴尬局面,对css作点预习

    还是先上页面的效果

    填写预约信息的页面 稍加修饰

    代码

    <head>
      <title>填写信息 | 王老二餐厅预约服务</title>
    </head>
    
    <body style="font-family: Microsoft YaHei">
      <h3 style="background-color: lightgray">请输入您要预约的以下信息:</h3>
      姓名:<input type="text" size="15" placeholder="张三" style="border-radius: 5px; border:solid 1px black; margin:5px;"><br>
      电话:<input type="tel" size="15" placeholder="13712345678" style="border-radius: 5px; border:solid 1px black; margin:5px;"><br>
      人数:<input type="number" style="width: 10em" placeholder="10" style="border-radius: 5px; border:solid 1px black; margin:5px;"><br>
      日期:<input type="date" style="border-radius: 5px; border:solid 1px black; margin:5px;"><br>
      时间:<input type="time" style="border-radius: 5px; border:solid 1px black; margin:5px;"><br>
      包间:<input type="checkbox">如需要请勾选<br>
      菜品:
      <select style="border-radius: 5px; border:solid 1px black; margin:5px;">
        <option selected>随意点菜</option>
        <option>特色餐桌</option>
        <option>四季餐桌</option>
        <option>家庭餐桌</option>
        <option>商务餐桌</option>
        <option>豪华餐桌</option>
      </select><br>
      酒水:
      <input type="radio" name="drink">酒水单点
      <input type="radio" name="drink">酒水全包(+30元/人)
      <input type="radio" name="drink">仅软饮料(+10元/人)<br>
      备注:
      <textarea rows="5" cols="30" placeholder="例:有老人和3岁小孩各一位,麻烦到时安排一下,谢谢" style="border-radius: 5px; border:solid 1px black; margin:5px;"></textarea><br><br>
      注:如果需要包场,请另外联系<br>
      <input type="submit" value="预约确认" style="border-radius: 5px; border:solid 1px black; padding:5px; margin: 10px 0 0 150px; display: block">
    </body>
    

    jsfiddle实例在这里 https://jsfiddle.net/codingme/5j6obdgf/

    这里只作了简单的变化,所以页面并没有被我改得多么漂亮...
    不过,大家看出什么端倪了吗?
    除了我把页面整体(<body>)的字体从默认的宋体变化成了微软雅黑,更多魔法在于 style 属性
    我在每个输入框类的元素中,分别加入了一小串代码,即所谓的css(与下篇要讲解的css文件异曲同工,本质是一样的),修饰需要变化的元素
    大家可以自行实践,网上查阅css的用法等,期待下篇更精彩!

    下一篇 《或许程序员与艺术家有前世的缘分~入门篇:Hello Style! 化妆师CSS带来的问候》


    希望能为社会尽一份绵薄之力,更多和您类似的迷惘中的朋友能看到
    无论点赞、收藏、分享或是打赏,您的关注,便是我继续写作的动力
    原创作品,欢迎转发,但求注明出处,谢谢合作!

    相关文章

      网友评论

        本文标题:你需要一个开始编程的契机~入门篇:来自于一个HTML页面的成就感

        本文链接:https://www.haomeiwen.com/subject/xfvhaftx.html