HTML(Hyper Text Markup Language)

1 网站的组成

  1. 用户通常使用浏览器(Browser)或客户端(Client)访问网站服务
  2. 用户在展示出来的页面上做操作,一旦操作就会给对应的 WEB 服务器发送请求
  3. WEB 服务器在接收到请求后,会按照预设的业务逻辑对请求进行处理
  4. 期间涉及到数据的增删改查,还需要访问数据库服务器
  5. 最后,WEB 服务器会将处理好的结果响应给用户端
  6. 用户端将拿到的结果渲染出页面展示给用户看
    注意:目前我们的 WEB 服务器(Tomcat)与数据库服务器(MySQL)在同一台 PC 上

2 网页基础

什么是前端和后端

  • 前端和后端是软件开发中的两个重要组成部分,它们会涉及到不同的技术和任务
  • 前端主要关注用户页面和用户交互(页面相关)
  • 后端主要关注服务器端的业务逻辑和服务可靠性,包括处理业务请求、存储数据、保证服务稳定可靠等等

2.1 什么是WEB前端

指使用 HTML、CSS、JavaScript 等技术,根据设计师提供的网页标注图进行代码编写,并将其转换为浏览器可以识别的网页界面,俗称网页。

  • HTML(内容层):负责页面的内容-文字 链接 图片…
  • CSS(样式层):负责页面的样式-颜色 大小 位置 表现…
  • JavaScript(行为层):负责页面的行为-交互效果 轮播图

页面的内容与样式也有标准,它的标准是由W3C(万维网联盟)制定的

2.2 基本概念

HTML(Hyper Text Markup Language)超文本标记语言,负责网页的内容
超文本: 除了文本以外,我们还可以向网页中插入图片、超链接、表格、表单、音频、视频等等
目前我们学习的版本是最新的 HTML5,简称 H5

  1. HTML 由大量的标记/标签构成,分为:
  2. 双标记标签:<head></head>
  3. 单标记标签:<br/><br>,两种写法都可以
  4. 完整的网页结构:
<!-- 表示当前文档是html5版本 让浏览器使用h5的规范解析 -->
<!DOCTYPE html>
<!--表示网页的开始与结束 lang="en"表示网页是一个英文网站 zh表示中文-->
<html lang="en">
<!--网页头部,存放一些配置信息-->
<head>
    <meta charset="UTF-8"> <!--配置编码,为了认识中文-->
    <title>我是网页标题</title> <!-- 配置网页的标题 -->
</head>
<body> <!--网页展示的内容-->
第一个网页的内容
</body>
</html>
  1. HTML 文件的后缀名是 .html 或 .htm,会按顺序从上往下、从左往右依次解析执行

  2. HTML 属性
    属性:也称为特征,描述标签某一方面的特点
    html 有很多的属性和值,用来修改元素的样式和状态
    写法:<标签 属性名 1=“属性值 1” 属性名 2=“属性值 2”></标签>

要求:

  1. 属性的声明必须在开始标记里
  2. 一个元素可能不只有一个属性,多个属性之间使用空格隔开
  3. 多个属性之间不区分先后顺序
  4. 属性名与属性值之间使用等号连接
  5. 属性值要包裹在引号中
  6. 单值属性:只有一个与属性名同名值,值可以省略不写,比如 readonly 只读

2.3 注释

  1. 用来解释代码且不会执行的文本
  2. 注释格式: <!-- 被注释掉的内容 -->
  3. 快捷键: Ctrl+/ 添加注释,再按一次取消注释
  4. 注释不能嵌套注释,也不可以写在标签里!

3 HTML常用标签

3.1 文本相关标签

  • <b>加粗文字</b>
  • <i> 斜体文字</i>
  • <u>下划线文字</u>
  • <s>删除线文字</s>
  • <hn>n级标题</hn>n为1到 6 独占一行,字体加粗,有垂直行间距
  • <p>段落</p> 独占一行,有垂直行间距
  • <hr>独占一行的灰色水平分割线
  • 空格折叠现象:连续的多个空格或换行会折叠成一个空格显示,使用<br>换行
  • 转义字符: &lt;小于号 &gt;大于号 &nbsp;空格
  • 生成假文:输入 lorem 按 Tab 补全即可
  • 有序列表OrderedList<ol></ol>
  • 无序列表UnorderedList<ul></ul>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文本处理</title>
</head>
<body>
<!-- 1.文本标签 -->
普通文字
<b>加粗文字</b>
<s>删除线文字</s>
<i>斜体文字</i>
<u>下划线文字</u>
<mark>高亮&nbsp;&nbsp;&nbsp;标记文字</mark>

<!--换行标签-->
<br>
<!--&lt;转义符号,在页面显示一个小于号 less than
&gt;转义符号,在页面显示一个大于号greater than-->
我最喜欢&lt;tom&gt;写的静夜思

<!--2.标题字-->
<!--h1~h6 h4的字号和普通文字一样大-->
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<h6>六级标题</h6>
<h7>七级</h7>

<!-- 3.段落标签 -->
<p>吃葡萄不吐葡萄皮</p>
<p>吃葡萄不吐葡萄皮</p>
<p>吃葡萄不吐葡萄皮</p>
<!--生成假文 先写lorem 再按Tab补全-->
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad assumenda at corporis dolore eum in inventore nobis numquam, obcaecati quaerat quis quo ratione saepe sint tempora unde, velit voluptate voluptates?</p>

<!-- 生成一条水平的灰色分割线   -->
<hr>

<!-- 4.有序列表 ordered list 里面每一条数据称作:列表项 list item-->
<!--type属性默认1阿拉伯数字 A大写字母 a小写字母 I大写罗马数字 i小写罗马数字-->
<ol type="i">
    <li>把冰箱门打开</li>
    <li>把大象塞进去</li>
    <li>把冰箱门关上</li>
</ol>
<!-- 5.无序列表ul(unordered list) 列表项还是li(list item)-->
<!-- type="none"去掉无序列表项前的标识符(黑色实心圆) -->
<ul type="none">
    <li>《Think in Java》</li>
    <li>《Java从入门到精通》</li>
    <li>《颈椎康复指南》</li>
</ul>
<hr>
</body>
</html>

3.2 分区元素

分区标签:可以理解为一个区域,对多个具有相同或相似结构的标签进行统一管理

  • <div></div>块级分区
  • <span></span>行内分区
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>分区元素</title>
</head>
<body>
<!--行内分区元素 span不会换行 用来选中一行中的一部分 -->
我是JSD240328班级的<span style="color:red;">小可爱</span>
<hr>
<!--块级分区元素 独占一行 默认宽度为父级宽度的100% 高度为0-->
<div></div>
我是文字
<div>我是文字</div>
我是文字
</body>
</html>

HTML5 新增了一些带有语义的分区标签

  • <header></header>定义网页或一个区域的头部
  • <nav></nav>定义网页的导航部分
  • <main></main>定义网页的主要内容
  • <section></section>定义网页的一个区块或章节
  • <article></article>定义网页中独立完整的内容,比如博客文章或新闻报道
  • <aside></aside>定义网页的侧边栏或者附属信息
  • <footer></footer>定义网页或一个区域的页脚部分
<hr>
<!-- 目前div的使用频率较高   -->
<div class="header">顶部条</div>
<div class="nav">导航栏</div>
<div class="aside">侧边栏</div>
<div class="main">主体</div>
<div class="article">文章</div>
<div class="footer">尾部</div>
<hr>
<!-- h5新增的一些带有语义的分区标签 -->
<header>头部</header>
<nav>导航栏</nav>
<main>主体</main>
<article>文章</article>
<section>区域</section>
<aside>侧边栏</aside>
<footer>页脚</footer>

其实在用户看来是没有区别的,只不过这样会大大提高代码的可读性与模块复用性、也有利于检索

3.3 URL路径

URL(Uniform Resource Locator)统一资源定位符,俗称路径,用来标识资源的位置

3.3.1 相对路径

  1. 从当前 html 文件的位置出发去找资源
  2. 如果 html 与资源在同一个目录下,直接写资源的名字,如:1.png
  3. 如果资源在 html 的下一级目录,先写目录名再写目录里的资源,如:img/2.png
  4. 如果资源在 html 的上一级目录,先回到上一级再找资源,如: …/3.png

3.3.2 绝对路径

从根目录处开始找资源,不需要当前文件的位置

  1. 优点:节省本地服务器的存储空间
  2. 缺点:资源不稳定 如果远程服务器删除此资源,本地服务器就引用不到了
  3. 网络资源:从协议开始,如: https://cdn.tmooc.cn/bsfile//courseImg///f044221ee737404e91584a4d083764bd.png

3.4 图片插入

img 标签用来向页面插入图片

  • src 表示资源的路径
  • alt 表示图片无法显示时的替代文本
  • title 鼠标悬停时显示的描述文本
  • 图片本身有大小,修改图片宽高时要注意图片本身的宽高比 如果设置的宽高不符合图片本身的宽高比,图片会变形–图片比例失真
  • 解决方案:宽或者高只设置一个,另外一个会自动随之更改
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>图片插入</title>
</head>
<body>
<!--
从当前文件出发去找资源:
1)图片与文件在同一个文件夹,直接写图片的全名
2)图片在文件的下一级文件夹,先写文件夹名,再写文件夹下的图片全名
3)图片在文件的上一级文件夹,先写../回到上一级,再写图片全名
-->
<!-- alt图片不能正常显示时替换的文字  -->
<!-- title表示鼠标悬停在图片上显示的描述文字   -->
<img src="2.png" alt="">
<img src="img/1.jpg" alt="">
<img src="../3.png" alt="" title="我是一张五常大米的图片">
<img src="../3.pg" alt="哎呀,图片走丢了">
<!-- 使用绝对路径 -->
<!-- 如果远程服务器的资源删除,绝对路径就引用不到图片资源了  -->
<img src="https://cdn.tmooc.cn/bsfile//courseImg///5f791c0985cc4a67a5c4dca6627155b0.jpg" alt="">
<!-- width设置图片宽度 height设置图片高度
   只要设置一个,另外一个会跟着改,如果两个一起设置,注意图片的原始比例防止图片失真-->
<img src="img/zly.jpg" width="300px" height="300px" alt="">
</body>
</html>

3.5 超链接练习

a 标签用于向页面插入超链接

  • href 表示要链接的资源路径
  • 超链接可以链接网络与内部资源,还可以链接图片
  • 通过 a 标签包裹 img 标签可以实现图片超链接
  • 锚点:先给对应的 html 内容添加 id,再通过#id 值选中,即可跳转到锚点位置,#表示直接跳转到页面顶部
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>超链接</title>
</head>
<body>
<!-- 跳转到本地资源 -->
<a href="p2_文本处理.html">跳转到今日的第2个页面</a>
<a href="p4_图片插入.html">跳转到今日的第4个页面</a>
<!-- 跳转到外部资源 -->
<a href="https://www.baidu.com/">百度首页</a>
<a href="https://www.tmooc.cn/">TMOOC首页</a>
<!-- 跳转至本地的图片资源 -->
<a href="2.png">即将打开一张图片</a>
<!-- 图片链接   -->
<a href="https://www.baidu.com/">
  <img src="2.png" alt="" width="300px">
</a>
<hr>
<!-- _blank打开一个空白页 _self刷新当前页面  -->
<a href="https://www.baidu.com/" target="_blank">百度1</a>
<a href="https://www.baidu.com/" target="_self">百度2</a>
<hr>
<!-- 锚点 -->
<!--p*20>lorem Tab补全-->
<h1>第一序列</h1>
<a href="#c1">快速跳转至第1章</a>
<a href="#c2">快速跳转至第2章</a>
<a href="#c3">快速跳转至第3章</a>

<h3 id="c1">第一章</h3>
第一章内容:从黑暗的混沌中醒来,少年任小粟擦了擦自己额头上的汗,然后看向门口的那个十三、四岁小男孩。

“六元,有没有什么事情?”任小粟问道。

被称呼为六元的小孩其实全名叫颜六元。

颜六元长得一副人畜无害的模样,看起来就很无辜,然而他手里却握着一柄骨刀守在门口,此时深夜,他看起来已经很困了但始终不曾闭眼,因为他要守夜。

颜六元摇摇头说道:“没事,你脑袋里面这病到底怎么回事,集镇上的医生也看不出是什么病吗?”

“你不用操心这种事情,我这不是病,”任小粟语气果决地说道:“天快亮了,我准备出去打猎,你睡一会儿按时去学堂上课。”

“哦,”颜六元低沉的点点头:“在这废土里,学习好有什么用……”

“我说有用就有用,”任小粟用不容置疑的语气说道。

“我也要去打猎,”颜六元瘪着嘴巴。

“你要出点什么意外谁来守夜?昏迷的我?”任小粟站起身来准备去集镇中心打水,天亮的时候集镇上就没有那么危险了。

这里的夜晚,是法外之地。

……

阴霾的天空有乌云在不断翻滚,云层中一滴酸雨终于坠落,它在狂风中不断飘摇,最终啪嗒一声,落在了任小粟的面前。

少年任小粟趴在荒野的地面上,他皱了皱眉头心说今天运气有点不好,猎物还没等来竟然先等来了酸雨。

有人说,在这废土之上行走必须要小心野兽。

<h3 id="c2">第二章</h3>
第二章内容:从黑暗的混沌中醒来,少年任小粟擦了擦自己额头上的汗,然后看向门口的那个十三、四岁小男孩。

“六元,有没有什么事情?”任小粟问道。

被称呼为六元的小孩其实全名叫颜六元。

颜六元长得一副人畜无害的模样,看起来就很无辜,然而他手里却握着一柄骨刀守在门口,此时深夜,他看起来已经很困了但始终不曾闭眼,因为他要守夜。

颜六元摇摇头说道:“没事,你脑袋里面这病到底怎么回事,集镇上的医生也看不出是什么病吗?”

“你不用操心这种事情,我这不是病,”任小粟语气果决地说道:“天快亮了,我准备出去打猎,你睡一会儿按时去学堂上课。”

“哦,”颜六元低沉的点点头:“在这废土里,学习好有什么用……”

“我说有用就有用,”任小粟用不容置疑的语气说道。

“我也要去打猎,”颜六元瘪着嘴巴。

“你要出点什么意外谁来守夜?昏迷的我?”任小粟站起身来准备去集镇中心打水,天亮的时候集镇上就没有那么危险了。

这里的夜晚,是法外之地。

……

阴霾的天空有乌云在不断翻滚,云层中一滴酸雨终于坠落,它在狂风中不断飘摇,最终啪嗒一声,落在了任小粟的面前。

少年任小粟趴在荒野的地面上,他皱了皱眉头心说今天运气有点不好,猎物还没等来竟然先等来了酸雨。

有人说,在这废土之上行走必须要小心野兽。

<h3 id="c3">第三章</h3>
第三章内容:
从黑暗的混沌中醒来,少年任小粟擦了擦自己额头上的汗,然后看向门口的那个十三、四岁小男孩。

“六元,有没有什么事情?”任小粟问道。

被称呼为六元的小孩其实全名叫颜六元。

颜六元长得一副人畜无害的模样,看起来就很无辜,然而他手里却握着一柄骨刀守在门口,此时深夜,他看起来已经很困了但始终不曾闭眼,因为他要守夜。

颜六元摇摇头说道:“没事,你脑袋里面这病到底怎么回事,集镇上的医生也看不出是什么病吗?”

“你不用操心这种事情,我这不是病,”任小粟语气果决地说道:“天快亮了,我准备出去打猎,你睡一会儿按时去学堂上课。”

“哦,”颜六元低沉的点点头:“在这废土里,学习好有什么用……”

“我说有用就有用,”任小粟用不容置疑的语气说道。

“我也要去打猎,”颜六元瘪着嘴巴。

“你要出点什么意外谁来守夜?昏迷的我?”任小粟站起身来准备去集镇中心打水,天亮的时候集镇上就没有那么危险了。

这里的夜晚,是法外之地。

……

阴霾的天空有乌云在不断翻滚,云层中一滴酸雨终于坠落,它在狂风中不断飘摇,最终啪嗒一声,落在了任小粟的面前。

少年任小粟趴在荒野的地面上,他皱了皱眉头心说今天运气有点不好,猎物还没等来竟然先等来了酸雨。

有人说,在这废土之上行走必须要小心野兽。

<a href="#">快速跳转至顶部</a>
</body>
</html>

3.6 表格练习

<table></table> 表示整个表格 包含表格的全部内容
<tr></tr> 表示表格中的一行 table row
<td></td> 表示表格中的一个单元格 table datacell
单元格是真正存放数据的地方,一行有几个单元格,表示一行有几列
<caption></caption> 表格的标题
<th></th> 行/列的标题 文字加粗居中显示
表格属性:
border=“1px” 给表格添加边框
style=“border-collapse: collapse;” 表格默认的边框是带有间距的,想去掉可以加这句代码
合并单元格:写在 td 里,被合并的单元格一定得删掉!
colspan=“n” 跨列
从当前单元格开始,向右合并 n 个单元格(n 也包含当前单元格)
rowspan="n"跨行
从当前单元格开始,向下合并 n 个单元格(n 也包含当前单元格)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>网页表格</title>
</head>
<body>
<!--table表格的开始与结束 border表格边框-->
<table border="1px" style="border-collapse: collapse;">
  <caption>爱好表</caption>
  <!--tr表格行 table row-->
  <tr>
    <!--th表格标题 文字加粗居中-->
    <th>序号</th>
    <th>姓名</th>
    <th>爱好</th>
  </tr>
  <tr>
    <!--单元格 table datacell 真正存放数据的地方 一行有几个单元格就有几列-->
    <td>1</td>
    <td>传奇</td>
    <td>玩偶</td>
  </tr>
  <tr>
    <td>2</td>
    <td>伟超</td>
    <td>丽颖啊赵丽颖</td>
  </tr>
  <tr>
    <td>3</td>
    <td>硕博</td>
    <td>伟超</td>
  </tr>
</table>
<table border="1px">
  <tr>
    <td>1-1</td>
    <td>1-2</td>
    <td>1-3</td>
    <td>1-4</td>
  </tr>
  <tr>
    <!-- colspan横着合并,跨列 从当前单元格开始向右合并n个单元格-->
    <!-- rowspan竖着合并,跨行 从当前单元格开始向下合并n个单元格-->
    <!-- 注意:被合并的单元格一定得删掉!-->
    <td colspan="2">2-1</td>
    <!-- <td>2-2</td>-->
    <td>2-3</td>
    <td rowspan="3">2-4</td>
  </tr>
  <tr>
    <td>3-1</td>
    <td>3-2</td>
    <td>3-3</td>
    <!--        <td>3-4</td>-->
  </tr>
  <tr>
    <td>4-1</td>
    <td>4-2</td>
    <td>4-3</td>
    <!--        <td>4-4</td>-->
  </tr>
</table>

<table border="1ox" style="border-collapse: collapse;">
  <caption>购物车</caption>
  <tr>
    <th>商品编号</th>
    <th>商品名称</th>
    <th>商品价格</th>
  </tr>
  <tr>
    <td>1</td>
    <td>小米Air</td>
    <td>5877</td>
  </tr>
  <tr>
    <td>2</td>
    <td>华为遥遥领先</td>
    <td>8877</td>
  </tr>
  <tr>
    <td>总价:</td>
    <td colspan="2">10000</td>
  </tr>
</table>
</body>
</html>

3.7 表单

表单提供了一些可视化的输入控件,会自动收集整理用户输入的内容,并提交给服务器
<form></form> 表示表单的开始与结束
属性:

  • action=“url” 向哪个地址提交数据,如果不写会提交给当前页面,也可以写一个#号占位
  • type 控件类型
  • name 控件名
  • value 可以设置输入框的默认值,如果是按钮,则设置的是按钮上显示的文本
  • placeholder 提示占位文本
  • maxlength 设置输入的最大长度
  • readonly 设置文本控件只读,能看不能改,数据可以提交
  • checked 单选框使用此属性可以设置选项默认选中
<input type="text"> 文本输入框
<input type="password"> 密码框
<input type="radio"> 单选框 注意设置name与value属性!
<input type="checkbox">多选框 注意设置name与value属性!
<input type="date">日期
<input type="file">文件
<input type="submit" value="提交按钮">    
<input type="reset" value="重置按钮">    
<input type="button" value="普通按钮">

按钮的另外一种写法:

<button type="submit">提交</button>    
<button type="reset">重置</button>    
<button type="button">按钮</button>

下拉选框: selected 可以设置默认选中

<select name="city">       
   <option value="1" selected>北京</option>        
  <option value="2">上海</option>        
</select>

label 关联控件:用于 form 中文本和控件的关联,单击文本如同单击控件

<input type="checkbox" id="agree">    
<label for="agree">我同意相关的服务协议</label>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>表单</title>
</head>
<body>
<!--表单的所有内容都需要写到form标签里
action表示表单收集到的数据提交到哪 #占位符表示暂时提交到当前页 -->
<form action="#">
    <!-- input输入框 type控制输入框的类型 placeholder设置提示文本
    表单元素必须加name属性才可以提交 uname=tom&upwd=123
    value设置输入框的默认值,如果是按钮,设置的是按钮上显示的文字-->
    <!--text普通文本输入框 password密码输入框 -->
    用户名<input type="text" value="tom" placeholder="请输入用户名" name="uname">
    密码<input type="password" placeholder="请输入密码" name="upwd">
    <hr>
    <br>
    <!--type为radio表示单选 必须要设置同一个name才能实现单选
     而且每个单选项要设置value值,否则提交的是on-->
    性别:
    <input type="radio" name="gender" value="1" checked><input type="radio" name="gender" value="0"><br>
    爱好:
    <input type="checkbox" name="like" value="cy" checked>抽烟
    <input type="checkbox" name="like" value="hj">喝酒
    <input type="checkbox" name="like" value="tt">烫头
    <input type="checkbox" name="like" value="java" checked>学Java
    <br>
    生日:<input type="date"><br>
    幸运色:<input type="color"><br>
    头像:<input type="file"><br>
    <br>
    <input type="checkbox" id="yes">
    <!--label关联控件的for属性值是被关联控件的id-->
    <label for="yes">请同意此协议</label>
    <hr>
    <!--submit提交按钮 reset重置按钮 button普通按钮配合后面的JS使用-->
    <input type="submit" value="点我提交">
    <input type="reset" value="点我重置">
    <input type="button" value="普通按钮">
    <button>普通按钮</button>
    <hr>
    <!--selected单值属性 设置默认被选中-->
    <select name="city">
        <option value="bj">北京</option>
        <option value="sh" selected>上海</option>
        <option value="cq">重庆</option>
        <option value="yt">烟台</option>
    </select>
</form>
</body>
</html>

必须掌握!

  • value加在输入框上,是设置什么?设置显示的默认值,用户输入的值也保存在value属性中
  • value加在按钮上,是设置什么?设置按钮上显示的文字
  • value加在单选/多选/下拉选框选项上,是设置什么? 设置选中当前选项时提交的值
  • 只读属性是什么?readonly单值属性 只允许看,不允许编辑
  • 怎么设置单选/多选选项的默认选中? checked单值属性
  • 怎么设置下拉选框选项的默认选中? selected单值属性
  • 写单选时,必须要写的两个属性是什么? name将所有选项分到同一组 value不然提交的是on

3.8 视频插入

  • src= “插入视频资源的路径”
  • controls 显示播放控件 单值属性
  • muted 设置静音,必须设置静音才能自动播放 单值属性
  • autoplay 自动播放 单值属性
  • loop 循环播放 单值属性
  • poster= "…/2.png"设置封面,未播放时显示,有自动播放可不设置封面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>视频插入</title>
</head>
<body>
<video src="img/wdsj.mp4" controls muted autoplay loop style="width:500px;">
</video>
</body>
</html>

3.9 拓展

你认识哪些类型的图片?

  1. 最常用的图片展示格式–JPG/JPEG
  2. 透明图层展示格式–PNG
  3. 表情包常用到的格式–GIF
  4. 修图师常用的格式–PSD
  5. 打印文档常用的图片格式–TIFF
  6. 画图工具和windows系统常用图片格式–BMP
  7. 谷歌新出的图片格式–WEBP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值