# 前端查漏补缺—HTML4
# 语义化标签
概念:用特定的标签表达特定的含义
原则:标签的默认效果不重要、语义很重要
优势:
代码的可读性强
有利于SEO(搜索引擎优化) 爬虫 代码 机器人
方便设备解析(屏幕阅读器、盲人阅读器)
# 块级元素和行内元素
- 规则1:块级元素中能写行内元素、块级元素(几乎什么都能写)
- 规则2:行内元素中能写行内元素,不能写块级元素
- 特殊规则:h1-h6不能互相嵌套
- 特殊规则:p标签中不能写块元素
# 文本标签
# 常用文本标签
- 用于包裹词汇短语
- 通常写在排版标签里
- 排版标签通常是大段文字,文本标签更微观(词汇、短语)
- 文本标签通常都是行内元素
标签名 | 标签语义 | 单/双标签 |
---|---|---|
em | 要着重阅读的内容 | 双 |
strong | 十分重要的内容 | 双 |
span | 没有语义,用于包裹 | 双 |
# 不常用文本标签
标签名 | 标签语义 |
---|---|
cite | 作品标题(书籍、歌曲) |
dfn | 特殊术语,专属名词 |
sub与sup | 上标和下标 |
code | 一段代码 |
kbd | 表示键盘文本,用于计算机操作手册 |
abbr | 表示缩写,配合title属性使用 |
bdo | 改变文本方向 |
u | 下划线 |
q | 短引用 |
blockquote | 长引用 |
备注:
- blockquote和address是块级元素,都是行内元素
- 语义感强的 h1~h6、p、em、div、strong、span
# 图片标签
<img src="./genshin.png" width="300" alt="原神送快递">
alt属性的两个作用:
- 搜索引擎识别图片内容
- 图片因为某种原因加载不出来的时候,显示文字
width、height属性一般只用一个,更改图片尺寸的时候会默认保持宽高比
img标签是一个行内元素
# 常见的图片格式
jpg
格式:有损压缩,体积小,用于对图片细节没有极高要求的场景,例如网站宣传图png
格式:无损压缩,用于需要透明背景,更高质量的场景,例如公司logobmp
格式:不压缩,支持颜色丰富、保留细节更多,占用空间极大,主要用于细节要求极高的场景,例如大型游戏中的图片,网页中很少使用gif
格式:仅支持256种颜色,支持简单透明背景,支持动态图webp
格式:谷歌推出专门在网页呈现图片,具备1-4的优点,但是兼容性不太好,IE无法使用base64
格式:本质是一串特殊的文本,要通过浏览器打开,适合一些比较小的图片
# 超链接
# 跳转页面
a标签,主要作用是从当前页面跳转
href属性为跳转的地址,可以使绝对地址,也可以是相对地址
target属性_blank
是在新标签页打开,_self
是在当前标签页打开
a标签虽然是行内元素,但是可以包裹除了自身的任何东西
# 跳转文件
a标签还有个作用是跳转资源,浏览器支持的文件会直接在浏览器打开,不支持的文件会默认触发下载,使用download
属性可以强制触发下载,属性值为文件名。
# 跳转锚点
// 跳转锚点
<a href="#anchor">跳转锚点</a>
// 两种写法
<a name="anchor">锚点位置1</a>
<p id="anchor">锚点位置2</p>
// 直接回到顶部
<a href="#">回到顶部</a>
// 刷新页面
<a href="">刷新页面</a>
// 跳转到别的页面的锚点
<a href="./19_超链接_跳转锚点.html#yuanshen">跳转到指定位置</a>
// 打开弹窗
<a href="javascript:alert(666);">点我弹窗</a>
点击跳转锚点会跳转到锚点位置,
设置锚点:
- 具有name属性的a标签
- 具有id属性的任意元素
# 唤起指定应用
<a href="tel:10010">电话联系</a>
<a href="mailto:123456@163.com">邮件联系</a>
<a href="sms:10086">短信联系</a>
在网页上会让你选择应用,手机上是真的好用
# 列表
# 分类
几个缩写:
- ol:有序列表 ordered list
- ul:无序列表 unordered list
- dl:自定义列表 definition list
- li:列表项 list item
- dt:术语名称 definition term
- dd:属于描述 definition description
<!-- 有序列表 -->
<h2>把大象放冰箱分几步?</h2>
<ol>
<li>把冰箱门打开</li>
<li>把大象放进去</li>
<li>把冰箱门关上</li>
<li>
<!-- 包裹元素 -->
<a href="https://www.baidu.com">去百度</a>
</li>
</ol>
<!-- 无序列表 -->
<h2>我想去的几个城市</h2>
<ul>
<li>新疆喀什</li>
<li>
<span>甘肃</span>
<ul>
<li>天水</li>
<li>甘南</li>
<li>扎尕那</li>
</ul>
</li>
<li>吉林长白山</li>
</ul>
<!-- 自定义列表:术语名称,术语定义 -->
<h2>如何更好的学习?</h2>
<dl>
<dt>做好笔记</dt>
<dd>笔记是复习的好工具</dd>
<dt>多加练习</dt>
<dd>学编程90%的时间都要敲代码</dd>
</dl>
# 注意事项
- 列表可以嵌套,但是要把结构写完整
- li必须在ol或者ul标签内
- 自定义列表用的很少,例如网站下方说明
# 表格
# 几个标签
- table 表格
- caption 标题
- thead 表头
- tr 表头行
- th 列名
- th 列名
- tr 表头行
- tbody 内容
- tr 内容行
- td 内容单元格
- td 内容单元格
- tr 内容行
- tfoot 脚注
- tr
- td
- td
- tr
# 常用属性
标签名 | 标签语义 | 常用属性 |
---|---|---|
table | 表格 | width :设置表格宽度height :设置表格最小高度border :设置表格边框宽度cellspacing :设置单元格之间间距 |
thead | 表格头部 | height :设置表格头部高度align : 设置单元格水平对齐方式valign : 设置垂直对齐 |
tbody | 表格主体 | 常用属性与thead 相同 |
tr | 行 | 常用属性与thead 相同 |
tfoot | 表格脚注 | 常用属性与thead 相同 |
td | 普通单元格 | width :设置单元格宽度,同列所有单元格都受影响。height :设置单元格高度,同列所有单元格都受影响。align :设置水平对齐valign : 设置垂直对齐rowspan :指定要跨的行数colspan :指定要跨的列数 |
th | 表头单元格 | 常用属性与td 相同 |
注意点:
- table的border属性可以控制表格边框,但并不控制单元格边框
# 补充常用标签
- br 换行
- hr 分隔线
- pre 按原文显示
# 表单标签
# 基本结构
- form :表单
- action:用于指定表单的提交地址
- target:用于控制表单提交后如何打开页面
- _self:在当前页打开
- _blank:在新窗口打开
- method:表单提交方法 get post
- input:输入框
- type: 输入值的类型
- name:用于指定提交数据的名字
- button:按钮
# 常用表单结构
- 文本输入框:
- name数据名称;
- value:输入框默认值,
- maxlength:输入框最大可输入长度
<input type='text'>
- 密码输入框:name、value、maxlength
<input type='password'>
- 单选框
name
:数据名称,多个radio的name要保持一致- value:提交的数据值
- checked:默认选中
<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female" checked>女
- 复选框
name
:数据名称value
:提交的数据值- checked:让复选框默认选中
<input type="checkbox" name="hobby" value="smoke" checked>抽烟
<input type="checkbox" name="hobby" value="drink">喝酒
<input type="checkbox" name="hobby" value="perm" checked>烫头
- 隐藏域:用户不可见的一个输入区域,作用是提交表单的时候携带一些固定数据
<input type="hidden" name="abc" value="123">
- 提交与重置
<!-- 确认第一种写法 -->
<!-- <button>确认</button> -->
<!-- 确认第二种写法 -->
<input type="submit" value="确认">
<!-- 重置第一种写法 -->
<!-- <button type="reset">重置</button> -->
<!-- 重置第二种写法 -->
<input type="reset" value="重置">
注意:button不要name属性,重置的button要写type=reset
- 普通按钮
<button type="button">检测账户是否被注册</button>
<input type="button" value="检测账户是否被注册">
- 文本域
- rows:行数
- cols:列数
<textarea name="other" cols="30" rows="3"></textarea>
- 下拉框
- name:数据名称
- option
- value:标签的值
- selected:默认选中
<select name="place">
<option value="冀">河北</option>
<option value="陕" selected>陕西</option>
<option value="鲁">山东</option>
</select>
- label标签:作用是让提示文字和表单控件产生关联,关联后点击对应的文字就可以获取焦点
两种方式:
- 让label标签的for属性等于表单控件的id
- 把表单控件嵌套在label标签中
# 分组
fieldset
可以为表单分组,legend
标签是分组的标题
<fieldset>
<legend>主要信息</legend>
...
</fieldset>
# 思考
单选和多选都是通过input标签的name属性实现的,下拉框是通过select标签的name实现的,注意区别
P30