HTML 可以通过 <div> 和 <span>将元素组合起来。
HTML 区块元素
大多数 HTML 元素被定义为 块级元素 或 内联元素 。
块级元素在浏览器显示时,通常会以新行来开始(和结束)。
实例: <h1>, <p>, <ul>, <table>
HTML 内联元素
内联元素在显示时通常不会以新行开始。
实例: <b>, <td>, <a>, <img>
<div> 元素
HTML <div> 元素是块级元素,它可用于组合其他 HTML 元素的容器。
<div> 元素没有特定的含义。除此之外,由于它属于块级元素,浏览器会在 <div> 前后显示折行。
如果与 CSS 一同使用,<div> 元素可用于对大的内容块设置样式属性。
<div> 元素的另一个常见的用途是文档布局。它取代了使用表格定义布局的老式方法。使用 <table> 元素进行文档布局不是表格的正确用法。<table> 元素的作用是显示表格化的数据。
<span> 元素
HTML <span> 元素是内联元素,可用作文本的容器
<span> 元素也没有特定的含义。
当与 CSS 一同使用时,<span> 元素可用于为部分文本设置样式属性。
(一)使用 DIV 布局 Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<body> <div id="container" style="width:500px"> <div id="header" style="background-color:#FFA500;"> <h1 style="margin-bottom:0;">主要的网页标题</h1> </div> <!-- 使用 float:left; 使其靠左浮动 --> <div id="menu" style="background-color:#FFD700;height:200px;width:100px;float:left;"> <b>菜单</b> <br> HTML <br> CSS <br> JavaScript </div> <!-- 使用 float:left; 使其靠左浮动 --> <div id="content" style="background-color:#EEEEEE;height:200px;width:400px;float:left;"> 内容在这里 </div> <div id="footer" style="background-color:#FFA500;clear:both;text-align:center;"> 版权 © runoob.com </div> </div> </body> |
显示效果:
(二)使用 div 布局 Demo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<body> <table width="500" border="0"> <tr> <td colspan="2" style="background-color:#FFA500;"> <h1>主要的网页标题</h1> </td> </tr> <tr> <td style="background-color:#FFD700;width:100px;vertical-align:top;"> <b>菜单</b> <br> HTML <br> CSS <br> JavaScript </td> <td style="background-color:#eeeeee;height:200px;width:400px;vertical-align:top;"> 内容在这里 </td> </tr> <tr> <td colspan="2" style="background-color:#FFA500;text-align:center;"> 版权 © runoob.com</td> </tr> </table> </body> |
显示效果:
HTML 表单
<form>
元素用于创建表单,action
属性定义了表单数据提交的目标 URL,method
属性定义了提交数据的 HTTP 方法(这里使用的是 “post”)。<label>
元素用于为表单元素添加标签,提高可访问性。<input>
元素是最常用的表单元素之一,它可以创建文本输入框、密码框、单选按钮、复选框等。type
属性定义了输入框的类型,id
属性用于关联<label>
元素,name
属性用于标识表单字段。<select>
元素用于创建下拉列表,而<option>
元素用于定义下拉列表中的选项。
常用输入类型的标签
<input> 标签
<input> 标签,其输入类型是由 type 属性定义。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<form> First name: <input type="text" name="firstname"><br> Last name: <input type="text" name="lastname"> <!-- 密码字段 --> Password: <input type="password" name="pwd"> <!-- 单选按钮 --> <input type="radio" name="sex" value="male">男 <br> <input type="radio" name="sex" value="female">女 <!-- 复选框 --> <input type="checkbox" name="vehicle[]" value="Bike">我喜欢自行车 <br> <input type="checkbox" name="vehicle[]" value="Car">我喜欢小汽车 <!-- 提交按钮 --> <input type="submit" value="Submit"> </form> |
参:https://www.runoob.com/html/html-forms.html
iframe 用法
1 |
<iframe src="URL"></iframe> |
iframe – 移除边框
frameborder 属性用于定义iframe表示是否显示边框。
设置属性值为 “0” 移除iframe的边框:
1 |
<iframe src="demo_iframe.htm" frameborder="0"></iframe> |
使用 iFrame 的场景
1. 沙箱隔离。
2. 引用第三方内容。
3. 独立的带有交互的内容,比如幻灯片。
4. 需要保持独立焦点和历史管理的子窗口,如复杂的Web应用。
注:登录弹窗用 iframe 未必合适。HTML标准新增了dialog元素,可能更适合。
为什么不推荐使用 iFrame ?
iframe是全新的一个页面,所有资源消耗都会+1。
参:https://www.zhihu.com/question/23683645/answer/2672342843
性能问题:
使用 <iframe> 会引入额外的页面渲染和加载过程,增加页面的复杂度和加载时间。每个 <iframe> 都需要独立加载和渲染,可能导致页面性能下降,尤其是在包含大量 <iframe> 的情况下。
无法保持网页状态:
<iframe> 是一种嵌套页面的方式,每个 <iframe> 都会创建一个独立的文档上下文。这意味着在主页面和 <iframe> 之间无法直接访问和操作彼此的 DOM 元素,也无法共享状态。这增加了跨页面通信和数据同步的复杂性。
SEO(搜索引擎优化)问题:
搜索引擎通常不会解析和索引 <iframe> 内部的内容,因此如果重要的内容被放在 <iframe> 中,可能会导致搜索引擎无法正确抓取和理解网页的内容。
安全风险:
由于 <iframe> 允许加载外部网页,存在着安全问题。恶意网站可以通过 <iframe> 注入恶意内容、进行点击劫持(clickjacking)等攻击。尤其是在加载不受信任的第三方网页时,需要格外谨慎。
响应式布局问题:
在移动设备上,特别是小屏幕上,<iframe> 的使用可能会导致布局问题和用户体验不佳。因为 <iframe> 的大小通常是固定的,不会自适应屏幕大小。
尽管 <iframe> 有一些特定的使用场景(如嵌入第三方内容),但在一般的前端开发中,应尽量避免过度使用 <iframe>。可以考虑使用其他替代方案,如 AJAX、组件化开发、动态加载内容等,以提高性能、可维护性和用户体验。