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

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带来的问候》


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,946评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,709评论 2 59
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明先生_X自主阅读 15,975评论 3 119
  • 看着深秋的雨点敲打在玻璃窗上,思绪又回到两天前的那个阴郁的风雨之夜,那天晚上,同样阴郁的还有工段长胡扒皮的心情,从...
    吃破产阅读 206评论 0 0
  • 给“花卷”的一封信 To花卷: 花卷,转眼间又要到我们相遇的日子。时间的沙漏在一点一滴静静地流淌,岁月的痕迹在一笔...
    花卷要给妞妞辫花辫阅读 407评论 2 3