一、C/S架构与B/S架构
对于一个软件系统,用户是通过用户界面来完成与软件系统的交互的(用户是通过用户界面来使用软件系统的),根据软件不同的架构模式,软件系统界面设计的实现技术是不同的:
- C/S架构
- B/S架构
1.1 C/S架构
C/S Client-Server 基于客户端和服务器的架构模式
1.2 B/S架构
B/S Browser-Server 基于浏览器和服务器的架构模式
1.3 不同架构的前端技术栈
1.3.1 C/S
Java语言可以进行C/S架构开发,JDK提供的AWT(abstract window toolkit)可以进行窗体开发
- awt
- swing
1.3.2 B/S
Java语言主要应用于web系统的开发,web系统就是基于B/S架构,其系统界面都是通过网页实现的
- HTML 超文本标记语言 网页的结构
- CSS 层叠样式表 网页的样式
- JavaScript 网页脚本语言 网页的行为
1.3.3 移动应用
Java语言还可以用于进行Android和HarmonyOS应用开发
- AndroidUI xml及组件
- HarmonyOSUI xml及组件
二、HTML简介
2.1 什么是网页?
网页 —— 可以在网络中传输、通过浏览器解析并显示视图的页面
问题:一个文件通过网络传递给浏览器之后,浏览器是如何显示视图的呢?
- 存储在服务器上的
页面文件
中编写的是浏览器可以识别的代码 - 当浏览器请求服务器时,服务器将这个
写有浏览器可以识别的代码的页面文件
通过网络传递给浏览器 - 浏览器接收到文件后,不会将代码显示出来,而是对代码进行解析,显示出对应的视图
网页设计:就是在网页文件
中编写HTML代码(标签),通过浏览器可以显示特定的用户界面
2.2 HTML是什么?
HTML (Hyper Text Markup Language)超文本标记语言。以特定的标签在浏览器中呈现不同的视图
标记(标签):就是由
<>
和特定的单词组成的符号,可以被浏览器识别并显示对应的视图超文本:使用文本标签显示图片、视频、声音等非文本数据
2.3 HTML书写规范
HTML标签需要写在一个
网页文件
中,网页文件的规则:
网页文件是一个后缀名为
.html
或者.htm
的文件网页文件有一个基本结构:
- 在网页文件第一行通过
<!DOCTYPE html>
声明当前文档遵循的HTML规范- 在HTML规范声明之后,必须有一对根标签
<html></html>
(根标签:当前网页中其他的标签都在根标签的里面)- 在根标签中,有两对子标签
<head></head>
和<body></body>
- head标签:用于定义当前网页文档的标题、字符集等属性信息
- body标签:用于定义当前网页显示的主体内容
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>我的第一个网页</title> </head> <body bgcolor="red"> <input type="password"/> </body> </html>
标签:
- 双标签(围堵标签)
- 单标签
标签属性:在双标签前一个标签中、单标签的标签名后可以添加键值对,用于设置当前标签的特性
HTML标签是不区分大小写的,为了便于可读,建议统一写成小写
HTML版本规范
前端规范— w3c
HTML4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
XHTML 提出了基于HTML4更多的语法规则,让HTML编写规范更严谨
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
HTML5
<!DOCTYPE html>
2.4 前端开发工具
为了便于前端开发,有很多的前端开发工具,可以为我们进行网页设计提供代码自动补全、代码错误提示、项目文件管理等功能,常见的工具:
- webStorm
- vsCode
- subline
HBuilder
–HBuilderX
HBuilderX的使用
-
下载:www.dcloud.io
-
解压:解压到存放软件的目录(免安装)
-
运行:
-
首次运行,需要对HBuilderX进行用户使用习惯设置(主题)
-
第一次关闭HBuilderX的时候,会提示创建桌面快捷方式
-
创建web项目
-
创建网页文件:选择项目—右键—新建—HTML文件
创建的HTML文件默认会给出规范的网页文件结构
-
运行网页文件:
三、HTML常用标签
网页就是使用HTML标签构成的文档,在浏览器显示视图页面。HTML什么样的标签表示什么样的是呢?
网页界面:显示数据、输入数据
- 为用户提供一个界面,显示用户想要看到的数据(文本、图片、声音、视频)
- 为用户提供一个界面,可以输入数据(发表博客:输入文本、选择图片、点击按钮)
如何使用HTML标签在网页中显示数据和提供输入视图呢?
根据HTML标签的作用,我们将HTML标签分为以下:
- 显示标签:就是将图片、文本、声音、视频通过网页呈现给用户
- 表单标签:就是给用户提供输入框、按钮、单选按钮、复选框、文本域等视图供其输入数据
- 布局标签:对网页中的内容进行布局/排版
- 功能标签:能够提供特定用户功能的标签
- 框架标签:搭建页面框架(输入布局标签)
3.1 显示标签
将文本、图片、声音和视频显示到网页
3.1.1 文本
<!--显示文本-->
<!-- font标签:color属性设置颜色,fase属性设置字体,size属性设置大小 -->
<font color="red" face="华文行楷" size="7">千锋教育</font>
<font color="blue" face="微软雅黑" size="4">Java涛哥</font>
<!-- H5不推荐使用font标签,显示文本推荐使用label标签 -->
<!-- label标签没有字体属性,但是可以通过style属性值设置字体颜色、大小、样式 -->
<label style="color:green;font-size:100px;font-family:楷体">网页设计</label>
3.1.2 图片
<!-- 显示图片 --- img标签:
src属性用于指定显示的图片的路径,可以是网络图片路径,也可以本地图片路径
(本地图片:先在项目中创建一个存放图片的目录imgs,再将要显示的图片拷贝进来 )
width、hegiht属性,设置图片的宽度、高度 ,如果两个属性同时设置可能会改变图片的比例
可以只设置其中一个属性,另一个属性会等比缩放
alt属性,用于指定图片无法加载时的替换文本
-->
<img src="http://www.qfedu.com/images/new_logo.png"/>
<img src="imgs/logo.jpg" height="200" alt="千锋LOGO"/>
3.1.3 声音和视频
<!--audio标签 调用浏览器内置的音频播放器(默认是隐藏的)
src属性指定音频的路径(网络路径、本地路径)
controls属性表示显示播放器(此属性不需要属性值)
autoplay属性表示音乐自动播放(考虑浏览器兼容性)
-->
<audio src="meida/麻雀.mp3" controls autoplay></audio>
<!--video标签 调用浏览器内置的视频播放器(默认是隐藏的)
src属性指定视频的路径(网络路径、本地路径)
controls属性表示显示播放器的控制条(此属性不需要属性值)
autoplay属性表示视频自动播放(考虑浏览器兼容性)
width、height属性设置视频播放器的尺寸
-->
<video src="meida/Java学科宣传片.mp4" controls autoplay width="400"></video>
3.2 表单标签
用户提供输入视图供其输入数据:
3.2.1 input标签
input标签可以用来显示多种表单输入视图效果,input标签有一个type属性,不同的属性表示不同的视图
- 文本输入框:<input type="text"/><br/>
- 密码输入框:<input type="password"/><br/>
- 单选按钮:<input type="radio"/><br/>
- 复选框:<input type="checkbox"/><br/>
- 文件选择框:<input type="file"/><br/>
<!-- 普通按钮默认是没有文本的,通过value属性指定按钮文本 -->
-普通按钮:<input type="button" value="点我呀!"/><br/>
-重置按钮:<input type="reset"/><br/>
-提交按钮:<input type="submit"/><br/>
<!-- 图片按钮从功能讲和提交按钮一致,需要通过src属性指定按钮图片 -->
-图片按钮:<input type="image" src="imgs/btn.bmp"/><br/>
<!-- 以下input的type是HTML5新增的 ,要考虑浏览器的兼容性(浏览器是否支持)-->
<!-- type=number ,表示次输入框只能输入数字,min设置最小值,max设置最大值-->
- 数字输入框:<input type="number" min="10" max="20"/><br/>
- 日期输入框:<input type="date"/><br/>
- 颜色选择框:<input type="color"/><br/>
- 邮箱输入框:<input type="email"/><br/>
- 电话输入框:<input type="tel"/><br/>
- 搜索输入框:<input type="search"/><br/>
单选按钮和复选框:
<hr/>
<!-- 单选按钮使用注意事项:
1.如果多个单选按钮是同一个主题的选项,则需要提供name属性,且那么属性值必须相同(排他性)
2.单选按钮必须提供value属性,value属性值会在当前单选按钮被选中时提交
3.单选按钮可以通过添加checked属性使其默认被选中,如果有多个单选按钮添加checked属性,则选中最后一个
-->
性别:<input type="radio" name="gender" value="M" checked/>男
<input type="radio" name="gender" value="F"/>女
<input type="radio" name="gender" value="N" />不详
<hr/>
<!-- 复选框注意事项(与单选按钮一致) -->
爱好:<input type="checkbox" name="hobby" value="篮球" checked/>篮球
<input type="checkbox" name="hobby" value="足球"/>足球
<input type="checkbox" name="hobby" value="羽毛球" checked/>羽毛球
<input type="checkbox" name="hobby" value="溜溜球"/>溜溜球
3.2.2 select标签
下拉菜单(省、市、区选择)
<!--
select标签表示下拉菜单的容器
1.添加multiple属性,设置此下拉菜单多选(ctrl)
2.size属性,设置下拉列表中可见选项的数量
option子标签表示下拉菜单的选项
1.option标签中的标签文本用于指定选项显示的文字
2.option标签需要提供value属性,当选择此菜单式提交到后台
-->
<select multiple size="3">
<option value="BeiJing">北京</option>
<option value="ShangHai">上海</option>
<option value="GuangZhou">广州</option>
<option value="ShenZhen">深圳</option>
<option value="WuHan">武汉</option>
</select>
3.2.3 textarea标签
文本域、多行文本框
<!-- 多行输入框 textarea标签:
1、rows属性用于指定多行文本框显示的行数
2、cols属性用于设置多行文本输入框每行显示的字符个数(考虑浏览器兼容性)
3、输入框(文本输入框、密码输入框)是通过value属性来设置默认值的,textarea通过标签文本设置默认值
-->
<textarea rows="5" cols="30">这是文本域的默认值</textarea>
3.2.4 表单标签共有属性
对于表单标签,他们有一些共有属性
-
id
属性,不仅是表单标签共有的属性,几乎所有的HTML标签都可以有这个属性,它表示此标签在当前网页文件中的唯一表示,便于我们定位标签进行操作;在一个网页中标签的ID属性值要保持唯一性。 -
name
属性,用于将数据提交(同步提交)到后端时,在后端接收数据。 -
required
属性,设置此输入框必须输入数据,否则不能提交。<form> <input type="text" required="required"/> <input type="submit" /> </form>
-
placeholder
属性,用于设置输入框空值提示信息。 -
readonly
属性,表示设置此输入框,只能显示数据,不能点击输入。 -
disabled
属性,设置输入组件禁用(输入框不能输入、按钮不能点击、下拉菜单不能选择)。 -
value
属性,表示当前输入框的值、下拉菜单选中的选项的值。
3.2.5 form标签
form标签,在页面中没有显示效果,它用于将用户在输入视图中输入的数据提交到后台
<!-- form标签:用于提交数据的表单
作用:当点击form标签中的提交按钮时,可以将form标签中输入视图中的数据提交到action属性指定的url
注意:1.提交form表单的按钮必须是提交按钮(type=submit,type=image)
2.form表单中的输入标签需要提供name属性,否则输入标签中的值不会被提交
3.form标签的method属性,指定表单提交数据的方式(get显式提交 post隐藏提交;其他区别暂不关注)
method属性默认值是get,也就是说如果不写method属性,则get方式提交
4.enctype属性,用于设置表单提交时数据的编码方式
重置按钮:
必须在form表单中使用,用于重置表单中输入框的值(让输入框的值回到默认状态 ≠ 清空)
提交按钮:
必须用在form表单中,用于提交表单
-->
<form action="https://www.baidu.com" method="post" enctype="">
<input type="text" placeholder="请输入帐号" name="userName" value="123"/><br/>
<input type="password" placeholder="请输入密码" name="userPwd"/><br/>
<input type="reset" /><br/>
<input type="submit" value="登录"/>
</form>
在HTML5规范中,提交按钮也可以写在form外面,但是要通过form属性指定表单id
<form id="form1">
<input type="text" placeholder="请输入帐号" name="userName" value="123"/><br/>
<input type="password" placeholder="请输入密码" name="userPwd"/><br/>
<input type="reset" /><br/>
</form>
<!--对于同一个form,可以使用不同的提交按钮,提交到不同的URL-->
<input type="submit" value="登录1" form="form1" formaction="https://www.baidu.com" formmethod="get"/><br/>
<input type="submit" value="登录2" form="form1" formaction="http://www.qfedu.com" formmethod="post"/><br/>
3.3 布局标签
用于对网页中的视图组件进行排版
3.3.1 标题
h标签提供了默认的标题样式,HTML中提供了 h1~h6 用于表示6级标题
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<h6>六级标题</h6>
3.3.2 段落
p标签: HTML可以将文档分割成多个段落
hr标签: 水平分割线
br标签:换行
<hr/>
<p>
枫桥夜泊<br/>
张继<br/>
月落乌啼霜满天,<br/>
江枫渔火对愁眠;<br/>
姑苏城外寒山寺,<br/>
夜半钟声到客船。<br/>
</p>
<p>
静夜思<br/>
李白<br/>
床前明月光,<br/>
疑是地上霜;<br/>
举头望明月,<br/>
低头思故乡。<br/>
</p>
3.3.3 列表
将相关联的多行文本以列表的形式进行展示
1.有序列表
水龙头接水的步骤:
<!-- ol标签表示有序列表,li子标签表示列表项 -->
<!-- type属性用于指定序号的类型 1 A a I i-->
<ol type="i">
<li>放置水桶</li>
<li>打开水龙头</li>
<li>等待放水</li>
<li>关闭水龙头</li>
<li>提走水桶</li>
</ol>
2.无序列表
水果列表
<!-- ul标签表示无序列表,li子标签表示列表项 -->
<!-- type属性用于指定图标的类型 disc实心圆 circle空心圆 square方形实心 -->
<ul type="square">
<li>苹果</li>
<li>菠萝</li>
<li>西瓜</li>
<li>火龙果</li>
<li>香蕉</li>
</ul>
3.自定义列表
自定义列表
<dl>
<dt>分组1</dt>
<dd>1-1</dd>
<dd>1-2</dd>
<dt>分组2</dt>
<dd>2-1</dd>
<dd>2-2</dd>
</dl>
3.3.4 表格
在网页中显示一个表格,通过将页面的HTML元素存放在表格的不同单元格,以达到设置元素布局的效果
<!-- table标签:用于在网页中定义一个表格 ,表格是由若干行组成,行被分割成多个单元格-->
<!--
表格(table):table中的属性设置的是整个表格的属性
border属性:设置表格的边框宽度(同时设置表格外边框,以及每个单元格的边框)
cellspacing属性:设置单元格空隙
cellpadding属性:设置当前表格中单元格的内边距
width、height属性:设置当前表格的宽度、高度
align属性:设置当前表格在网页中的水平位置(left|center|right)
bgcolor属性:设置表格的背景颜色
background属性:设置当前表格的背景图片
行(tr):用在table标签里面,一对tr标签就表示表格中的一行 ,tr的属性设置影响当前行
height属性:设置当前行的高度,如果不设置行高,则平均分配
bgcolor属性:设置当前行的背景颜色
单元格(td):写在tr标签,一对td标签就表示当前行中的一个单元格 ,每一行的对应列都会自动对齐
width属性:设置当前单元格的宽度,设置某一行的单元格宽度,其他行对应单元格宽度同步修改
bgcolor属性:设置当前单元格的背景颜色
valign属性:设置当前单元格中的内容在当前单元格中的垂直位置(middle、top、bottom)
align属性:设置当前单元格中的内容在当前单元格中的水平位置(left、center、right)
colspan属性:横向合并单元格(设置当前单元格占用几个单元格的宽度)
rowspan属性:纵向合并单元格(设置当前单元格占用几行的高度)
-->
<table border="1" cellspacing="0" cellpadding="0" width="300" height="300" align="center" bgcolor="orange">
<tr height="50" bgcolor="aqua">
<td colspan="2">1-1</td>
<td width="50" rowspan="2">1-3</td>
</tr>
<tr>
<td width="50" rowspan="2">2-1</td>
<td valign="bottom" align="right">2-2</td>
</tr>
<tr height="50">
<td colspan="2">3-2</td>
</tr>
</table>
3.3.5 div层
区块元素(标签),在浏览器中进行显示的时候,通常会有换行 (例如:段落p、表格table…)
内联元素(标签),在浏览器中进行显示的时候,不会进行换行(例如:label img)
<!-- div标签:层,一个HTML标签的容器
1.如果不设置宽度,则默认宽度为父容器的宽度(如下:body就是div的父容器)
2.如果不设置高度,则DIV的高度默认与其中存放的元素高度相同
3.div中可以包含HTML标签,我通过对DIV标签的设置可以实现HTML标签的层叠
-->
<!-- <img src="imgs/img01.png" height="100"/>
<img src="imgs/img02.png" height="100"/>
<img src="imgs/img03.png" height="100"/> -->
<div style=" width: 83px; height: 100px; border: 1px solid red; position: absolute; left: 0px; top:0px">
<img src="imgs/img01.png" height="100"/>
</div>
<div style=" width: 83px; height: 100px; border: 1px solid green; position: absolute; left: 50px; top:50px">
<img src="imgs/img02.png" height="100"/>
</div>
<div style=" width: 83px; height: 100px; border: 1px solid blue; position: absolute;left: 100px; top: 100px;">
<img src="imgs/img03.png" height="100"/>
</div>
3.3.6 fieldset字段集
<!-- fieldset标签:网页中的模块,也是一个容器,默认带有边框,有内边距 -->
<!-- legend子标签:用于设置当前模块区域的标题 -->
<fieldset style="width: 300px; height: 100px;">
<legend>🏀管理员登录</legend>
<p>帐号:<input type="text"/></p>
<p>密码:<input type="password"/></p>
</fieldset>
3.4 功能标签
功能标签,在网页中没有对应的视图效果,但是可以实现特定的功能
- form表单,用于提交用户输入数据的
- a超链接
3.4.1 form表单
参考3.2.5
3.4.2 a 标签
超链接 激活文本可点击,当点击这个特定的文本之后,链接到对应的地址
<!-- a标签(超链接):激活文本/图片连接
href 属性指定当前文本/图片链接的地址-->
学Java开发就来<a href="http://www.qfedu.com">千锋教育</a> <br/>
<a href="https://www.baidu.com/s?wd=张韶涵"><img src="imgs/img01.png" height="50"/></a>
锚点 用于当前页面不同位置的跳转
<hr/>
<a href="#aaa">div1</a><!-- 跳转到锚点 -->
<a href="#bbb">div2</a>
<a href="#ccc">div3</a>
<a href="#ddd">div4</a>
<hr/>
<a id="aaa"></a><!-- 定义锚点 -->
<div style="height: 1000px; background-color: aquamarine;">div1</div>
<a id="bbb"></a><!-- 定义锚点 -->
<div style="height: 1000px; background-color: lawngreen;">div2</div>
<a id="ccc"></a><!-- 定义锚点 -->
<div style="height: 1000px; background-color: palevioletred;">div3</div>
<a id="ddd"></a><!-- 定义锚点 -->
<div style="height: 1000px; background-color: peru;">div4</div>
3.5 框架标签-iframe
框架标签,实现页面的模块化
- frameset frame 不建议使用
- iframe
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<table width="100%" height="880" cellpadding="0" cellspacing="0" >
<tr height="80" bgcolor="lightblue">
<td align="center">
<label style="font-size: 40px;">QQMail</label>
</td>
<td align="right" valign="top">
二狗,欢迎你![<a href="#">退出</a>]
</td>
</tr>
<tr>
<td width="200" bgcolor="lightgray" valign="top">
<ul>
<li><a href="page02-表单标签.html" target="mainFrame">新邮件</a></li>
<li><a href="https://www.taobao.com" target="mainFrame">淘宝</a></li>
<li><a href="http://www.qfedu.com" target="mainFrame">千锋</a></li>
</ul>
</td>
<td>
<!-- iframe标签,表示一个页面的容器,通过name属性可以设置点击超链接以后,将页面显示到当前容器
1.给iframe标签设置name属性
2.给超链接a标签设置target等于iframe的name属性值
-->
<iframe name="mainFrame" width="100%" height="800" frameborder="0"></iframe>
</td>
</tr>
</table>
</body>
</html>
3.6 其他标签
3.6.1 文本修饰
<b>粗体</b>
<i>斜体</i>
<u>下划线</u>
<del>删除线</del>
<strong>加重语气</strong>
<em>强调</em>
<small>小号文本</small>
10<sup>上标</sup>
4<sub>下标</sub>
3.6.2 计算机输出相关
<!-- 计算机输出标签,除了字体有所改变之外,更多的是语义上的设定 -->
<code>System.out.println("计算机代码!");</code>
<kbd>Ctrl+L</kbd>
<var>程序变量</var>
<pre>预定义</pre>
3.6.3 引用标签
<address>湖北省武汉市江夏区</address>
跟着涛哥一起学习<abbr title="Java DataBase Conectivity">JDBC</abbr>技术
<bdo dir="rtl">定义文字方向</bdo>
毛泽东同志说:<blockquote>生的伟大,死的光荣!</blockquote>
四、HTML页面设计案例
案例:使用HTML标签,完成华为商城的登录页面的设计
4.1 模仿页面分析
4.2 按照分析进行网页设计
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>华为商城欢迎您</title>
</head>
<body>
<table border="0" cellspacing="0" cellpadding="0" width="100%" height="960">
<tr height="40" bgcolor="#eeeeee">
<td width="355"</td>
<td>
<img src="imgs/logo.jpg" height="30"/>|千锋商城
</td>
<td></td>
<td width="355"></td>
</tr>
<tr height="150">
<td></td>
<td colspan="2" align="center">
<label style="font-size: 30px;">华为帐号登录</label>
</td>
<td></td>
</tr>
<tr>
<td></td>
<td align="center" width="30%">
<img src="imgs/qrcode.png" width="200" height="200" />
<br/>
<br/>
<br/>
<label style="font-size: 10px; color: lightgray;">若您使用华为手机,请进入“设置”>“华为帐号”扫码登录。</label>
</td>
<td width="30%">
<table height="320" width="400">
<tr>
<td align="center"><input type="text" placeholder="手机号/邮箱地址/账号名"/></td>
</tr>
<tr>
<td align="center">
<input type="password" placeholder="密码"/>
<br/>
<a href="#">短信验证码登录</a>
</td>
</tr>
<tr>
<td align="center"><input type="submit" value="登录"/></td>
</tr>
<tr>
<td align="center">
<a href="#">注册</a>
<a href="#">忘记密码</a>
<a href="#">遇到问题</a>
</td>
</tr>
<tr>
<td align="center">
<img src="imgs/qq.png" />
<img src="imgs/zfb.png" />
<img src="imgs/wx.png" />
</td>
</tr>
</table>
</td>
<td></td>
</tr>
<tr height="150">
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr height="100" bgcolor="#eeeeee">
<td></td>
<td colspan="2" align="center" valign="middle">
<a href="#">华为帐号用户协议</a> | <a href="#">关于华为帐号与隐私的声明</a> | <a href="#">常见问题</a> | <a href="#">Cookies</a>
<br/>
华为帐号 版权所有 © 2011-2021
</td>
<td></td>
</tr>
</table>
</body>
</html>
案例运行效果图 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J6TWoj76-1672149768237)(imgs/image-20211026153133691.png)] |
rc=“imgs/qq.png” />
华为帐号用户协议 | 关于华为帐号与隐私的声明 | 常见问题 | Cookies
华为帐号 版权所有 © 2011-2021
</body>
```
案例运行效果图 |
---|