Bootstrap5 复选框与单选框

最后更新于:2022-03-27 03:03:40

Bootstrap5 复选框与单选框

如果您希望用户从预设选项列表中选择任意数量的选项,可以使用复选框:

实例

<div class="form-check">
<input class="form-check-input" type="checkbox" id="check1" name="option1" value="something" checked>
<label class="form-check-label">Option 1</label>
</div>

尝试一下 »

复选框通过使用 class=”form-check” 来确保标签和复选框有适当边距。

.form-check-label 类添加到标签元素,.form-check 容器内添加 .form-check-input 类来设置复选框的样式。

checked 属性用于设置默认选中的选项。

单选框

如果您希望用户从预设选项列表中选择一个选项,可以使用复选框:

实例

<div class="form-check">
<input type="radio" class="form-check-input" id="radio1" name="optradio" value="option1" checked>Option 1
<label class="form-check-label" for="radio1"></label>
</div>
<div class="form-check">
<input type="radio" class="form-check-input" id="radio2" name="optradio" value="option2">Option 2
<label class="form-check-label" for="radio2"></label>
</div>
<div class="form-check">
<input type="radio" class="form-check-input" disabled>Option 3
<label class="form-check-label"></label>
</div>

尝试一下 »

切换开关

如果你想把复选框变成一个可切换的开关,可以在 .form-check 容器内使用 .form-switch 类:

实例

<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="mySwitch" name="darkmode" value="yes" checked>
<label class="form-check-label" for="mySwitch">Dark Mode</label>
</div>

尝试一下 »

Bootstrap5 下拉菜单

最后更新于:2022-03-27 03:03:36

Bootstrap5 下拉菜单

下拉菜单可以是单选下拉菜单,也可以是多选的下拉菜单。

单选下拉菜单:

多选下拉菜单:

在 Bootstrap5 中下拉菜单 <select> 元素可以使用 .form-select 类来渲染 :

实例

<select class="form-select">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>

尝试一下 »

下拉菜单通过 .form-select-lg.form-select-sm 类来修改大小:

实例

<select class="form-select form-select-lg">
<select class="form-select">
<select class="form-select form-select-sm">

尝试一下 »

效果如下图:

disabled 属性可以禁止下拉菜单被选择:

实例

<select class="form-select" disabled>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>

尝试一下 »

数据列表

Bootstrap 也可以通过 datalist 标签为 <input> 元素设置下拉菜单:

以下实例从列表中选择一个网站:

实例

<label for="browser" class="form-label">选择你喜欢的网站:</label>
<input class="form-control" list="sites" name="site" id="site">
<datalist id="sites">
<option value="Google">
<option value="Runoob">
<option value="Taobao">
<option value="Wiki">
<option value="Zhihu">
</datalist>

尝试一下 »

效果如下图:

Bootstrap5 表单

最后更新于:2022-03-27 03:03:32

Bootstrap5 表单

在本章中,我们将学习如何使用 Bootstrap 创建表单。Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单。

表单元素 <input>, <textarea>, 和
<select> elements
在使用 .form-control 类的情况下,宽度都是设置为 100%。

Bootstrap5 表单布局

  • 堆叠表单 (全屏宽度):垂直方向
  • 内联表单:水平方向

Bootstrap 提供了两种类型的表单布局:


堆叠表单

以下实例使用两个输入框,一个复选框,一个提交按钮来创建堆叠表单:

实例

<form>
<div class="mb-3 mt-3">
<label for="email" class="form-label">Email:</label>
<input type="email" class="form-control" id="email" placeholder="Enter email" name="email">
</div>
<div class="mb-3">
<label for="pwd" class="form-label">Password:</label>
<input type="password" class="form-control" id="pwd" placeholder="Enter password" name="pswd">
</div>
<div class="form-check mb-3">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="remember"> Remember me
</label>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>

尝试一下 »

显示效果:

实例中我们使用 .form-label 类来确保标签元素有一定的内边距。

复选框(checkboxe)使用不同的标记。 它们使用 .form-check 包裹在容器元素周围。复选框和单选按钮使用 .form-check-input,它的标签可以使用 .form-check-label 类。


内联表单

如果您希望表单元素并排显示,请使用 .row.col

以下实例的两个输入框并排显示,创建内联表单:

实例

<form>
<div class="row">
<div class="col">
<input type="text" class="form-control" placeholder="Enter email" name="email">
</div>
<div class="col">
<input type="password" class="form-control" placeholder="Enter password" name="pswd">
</div>
</div>
</form>

尝试一下 »

显示效果:

文本框

使用 textarea 标签创建文本框提交表单,使用 .form-control 类渲染文本框 textareas 标签:

实例

<label for="comment">请输入评论:</label>
<textarea class="form-control" rows="5" id="comment" name="text"></textarea>

尝试一下 »

显示效果:


输入框大小

我们可以通过在 .form-control 输入框中使用 .form-control-lg.form-control-sm 类来设置输入框的大小:

实例

<input type="text" class="form-control form-control-lg" placeholder="大号输入框">
<input type="text" class="form-control" placeholder="正常大小输入框">
<input type="text" class="form-control form-control-sm" placeholder="小号输入框">

尝试一下 »

显示效果:


禁用/只读表单

使用 disabled/readonly 属性设置输入框禁用/只读:

实例

<input type="text" class="form-control" placeholder="Normal input">
<input type="text" class="form-control" placeholder="Disabled input" disabled>
<input type="text" class="form-control" placeholder="Readonly input" readonly>

尝试一下 »


纯文本输入

使用 .form-control-plaintext 类可以删除输入框的边框::

实例

<input type="text" class="form-control-plaintext" placeholder="Plaintext input">
<input type="text" class="form-control" placeholder="Normal input">

尝试一下 »


取色器

使用 .form-control-color 类可以创建一个取色器:

实例

<input type="color" class="form-control form-control-color" value="#CCCCCC">

尝试一下 »

显示效果:

Bootstrap5 Flex(弹性)布局

最后更新于:2022-03-27 03:03:27

Bootstrap5 Flex(弹性)布局

Bootstrap5 通过 flex 类来控制页面的布局。


弹性盒子(flexbox)

Bootstrap 3 与 Bootstrap 4/5 最大的区别就是 Bootstrap 4/5 使用弹性盒子来布局,而不是使用浮动来布局。

弹性盒子是 CSS3 的一种新的布局模式,更适合响应式的设计,如果你还不了解 flex,可以阅读我们的 CSS3 弹性盒子(Flex Box) 教程

注意:IE9 及其以下版本不支持弹性盒子,所以如果你需要兼容 IE8-9,请使用 Bootstrap 3

以下实例使用 d-flex 类创建一个弹性盒子容器,并设置三个弹性子元素:

实例

<div class="d-flex p-3 bg-secondary text-white">
<div class="p-2 bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 bg-primary">Flex item 3</div>
</div>

尝试一下 »

创建显示在同一行上的弹性盒子容器可以使用 d-inline-flex 类:

实例

<div class="d-inline-flex p-3 bg-secondary text-white">
<div class="p-2 bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 bg-primary">Flex item 3</div>
</div>

尝试一下 »


水平方向

.flex-row 可以设置弹性子元素水平显示,这是默认的。

使用 .flex-row-reverse 类用于设置右对齐显示,即与 .flex-row 方向相反。

实例

<div class="d-flex flex-row bg-secondary">
<div class="p-2 bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 bg-primary">Flex item 3</div>
</div>

<div class="d-flex flex-row-reverse bg-secondary">
<div class="p-2 bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 bg-primary">Flex item 3</div>
</div>

尝试一下 »


垂直方向

.flex-column 类用于设置弹性子元素垂直方向显示, .flex-column-reverse 用于翻转子元素:

实例

<div class="d-flex flex-column">
<div class="p-2 bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 bg-primary">Flex item 3</div>
</div>

<div class="d-flex flex-column-reverse">
<div class="p-2 bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 bg-primary">Flex item 3</div>
</div>

尝试一下 »


内容排列

.justify-content-* 类用于修改弹性子元素的排列方式,* 号允许的值有:start (默认), end, center, between 或 around:

实例

<div class="d-flex justify-content-start"></div>
<div class="d-flex justify-content-end"></div>
<div class="d-flex justify-content-center"></div>
<div class="d-flex justify-content-between"></div>
<div class="d-flex justify-content-around"></div>

尝试一下 »


等宽

.flex-fill 类强制设置各个弹性子元素的宽度是一样的:

实例

<div class="d-flex">
<div class="p-2 bg-info flex-fill">Flex item 1</div>
<div class="p-2 bg-warning flex-fill">Flex item 2</div>
<div class="p-2 bg-primary flex-fill">Flex item 3</div>
</div>

尝试一下 »


扩展

.flex-grow-1 用于设置子元素使用剩下的空间。以下实例中前面两个子元素只设置了它们所需要的空间,最后一个获取剩余空间。 :

实例

<div class="d-flex">
<div class="p-2 bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 bg-primary flex-grow-1">Flex item 3</div>
</div>

尝试一下 »

提示: 使用 .flex-shrink-1 用于设置子元素的收缩规则。


排序

.order 类可以设置弹性子元素的排序,从 .order-1.order-12,数字越低权重越高( .order-1 排在 .order-2 之前) :

实例

<div class="d-flex bg-secondary">
<div class="p-2 bg-info order-3">Flex item 1</div>
<div class="p-2 bg-warning order-2">Flex item 2</div>
<div class="p-2 bg-primary order-1">Flex item 3</div>
</div>

尝试一下 »


外边距

.ms-auto 类可以设置子元素右外边距为 auto,即 margin-right: auto!important;.me-auto 类可以设置子元素左外边距为 auto,即 margin-left: auto!important;:

实例

<div class="d-flex mb-3 bg-secondary">
<div class="p-2 ms-auto bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 bg-primary">Flex item 3</div>
</div>
<div class="d-flex mb-3 bg-secondary">
<div class="p-2 bg-info">Flex item 1</div>
<div class="p-2 bg-warning">Flex item 2</div>
<div class="p-2 me-auto bg-primary">Flex item 3</div>
</div>

尝试一下 »


包裹

弹性容器中包裹子元素可以使用以下三个类: .flex-nowrap (默认), .flex-wrap 或 .flex-wrap-reverse。设置 flex 容器是单行或者多行。

实例

<div class="d-flex flex-wrap">..</div>

<div class="d-flex flex-wrap-reverse">..</div>

<div class="d-flex flex-nowrap">..</div>

尝试一下 »


内容对齐

我们可以使用 .align-content-* 来控制在垂直方向上如何去堆叠子元素,包含的值有:.align-content-start (默认), .align-content-end, .align-content-center, .align-content-between, .align-content-around 和 .align-content-stretch。

这些类在只有一行的弹性子元素中是无效的。

实例

<div class="d-flex flex-wrap align-content-start">..</div>

<div class="d-flex flex-wrap align-content-end">..</div>

<div class="d-flex flex-wrap align-content-center">..</div>

<div class="d-flex flex-wrap align-content-around">..</div>

<div class="d-flex flex-wrap align-content-stretch">..</div>

尝试一下 »


子元素对齐

如果要设置单行的子元素对齐可以使用 .align-items-* 类来控制,包含的值有:.align-items-start, .align-items-end, .align-items-center, .align-items-baseline, 和 .align-items-stretch (默认)

实例

<div class="d-flex align-items-start">..</div>

<div class="d-flex align-items-end">..</div>

<div class="d-flex align-items-center">..</div>

<div class="d-flex align-items-around">..</div>

<div class="d-flex align-items-stretch">..</div>

尝试一下 »


指定子元素对齐

如果要设置指定子元素对齐对齐可以使用 .align-self-* 类来控制,包含的值有:.align-self-start, .align-self-end, .align-self-center, .align-self-baseline, 和 .align-self-stretch (默认)。

实例

<div class="d-flex bg-light" style="height:150px">
<div class="p-2 border">Flex item 1</div>
<div class="p-2 border align-self-start">Flex item 2</div>
<div class="p-2 border">Flex item 3</div>
</div>

尝试一下 »


响应式 flex 类

我们可以根据不同的设备,设置 flex 类,从而实现页面响应式布局,以下表格中的 * 号可以的值有:sm, md, lg 或 xl, 对应的是小型设备、中型设备,大型设备,超大型设备。

实例 实现
弹性容器
.d-*-flex 根据不同的屏幕设备创建弹性盒子容器 尝试一下
.d-*-inline-flex 根据不同的屏幕设备创建行内弹性盒子容器 尝试一下
方向
.flex-*-row 根据不同的屏幕设备在水平方向显示弹性子元素 尝试一下
.flex-*-row-reverse 根据不同的屏幕设备在水平方向显示弹性子元素,且右对齐 尝试一下
.flex-*-column 根据不同的屏幕设备在垂直方向显示弹性子元素 尝试一下
.flex-*-column-reverse 根据不同的屏幕设备在垂直方向显示弹性子元素,且方向相反 尝试一下
内容对齐
.justify-content-*-start 根据不同屏幕设备在开始位置显示弹性子元素 (左对齐) 尝试一下
.justify-content-*-end 根据不同屏幕设备在尾部显示弹性子元素 (右对齐) 尝试一下
.justify-content-*-center 根据不同屏幕设备在 flex 容器中居中显示子元素 尝试一下
.justify-content-*-between 根据不同屏幕设备使用 “between” 显示弹性子元素 尝试一下
.justify-content-*-around 根据不同屏幕设备使用 “around” 显示弹性子元素 尝试一下
等宽
.flex-*-fill 根据不同的屏幕设备强制等宽 尝试一下
扩展
.flex-*-grow-0 不同的屏幕设备不设置扩展  
.flex-*-grow-1 不同的屏幕设备设置扩展  
收缩
.flex-*-shrink-0 不同的屏幕设备不设置收缩  
.flex-*-shrink-1 不同的屏幕设备设置收缩  
包裹
.flex-*-nowrap 不同的屏幕设备不设置包裹元素 尝试一下
.flex-*-wrap 不同的屏幕设备设置包裹元素 尝试一下
.flex-*-wrap-reverse 不同的屏幕设备反转包裹元素 尝试一下
内容排列
.align-content-*-start 根据不同屏幕设备在起始位置堆叠元素 尝试一下
.align-content-*-end 根据不同屏幕设备在结束位置堆叠元素 尝试一下
.align-content-*-center 根据不同屏幕设备在中间位置堆叠元素 尝试一下
.align-content-*-around 根据不同屏幕设备,使用 “around” 堆叠元素 尝试一下
.align-content-*-stretch 根据不同屏幕设备,通过伸展元素来堆叠 尝试一下
排序
.order-*-0-12 在小屏幕尺寸上修改排序 尝试一下
元素对齐
.align-items-*-start 根据不同屏幕设备,让元素在头部显示在同一行。 尝试一下
.align-items-*-end 根据不同屏幕设备,让元素在尾部显示在同一行。 尝试一下
.align-items-*-center 根据不同屏幕设备,让元素在中间位置显示在同一行。 尝试一下
.align-items-*-baseline 根据不同屏幕设备,让元素在基线上显示在同一行。 尝试一下
.align-items-*-stretch 根据不同屏幕设备,让元素延展高度并显示在同一行。 尝试一下
单独一个子元素的对齐方式
.align-self-*-start 据不同屏幕设备,让单独一个子元素显示在头部。 尝试一下
.align-self-*-end 据不同屏幕设备,让单独一个子元素显示在尾部 尝试一下
.align-self-*-center 据不同屏幕设备,让单独一个子元素显示在居中位置 尝试一下
.align-self-*-baseline 据不同屏幕设备,让单独一个子元素显示在基线位置 尝试一下
.align-self-*-stretch 据不同屏幕设备,延展一个单独子元素 尝试一下

HTML DOM matches() 方法

最后更新于:2022-03-27 03:03:25

HTML DOM matches() 方法

HTML DOM matches() 方法 元素对象

实例

元素是否匹配 CSS 选择器?

const element = document.getElementById("demo");
let answer = element.matches(".container");

尝试一下 »

实例

元素是否匹配两个 CSS 选择器中的一个?

const element = document.getElementById("demo");
let answer = element.matches(".container, .wrapper");

尝试一下 »


定义和用法

如果元素匹配指定的 CSS 选择器,matches() 方法就返回 true,否则返回 false。


浏览器支持

表格中的数字是第一个完全支持 matches() 方法的浏览器版本:

Chrome
33
Edge
15
Firefox
34
Safari
7
Opera
21
Feb 2014 Apr 2017 Dec 2014 Oct 2013 May 2014

语法

element.matches(selectors)

参数

参数 描述
selectors 必需。
要匹配的一个或多个 (多个用逗号 , 分隔) CSS 选择器。
返回的元素是在 HTML 文档中找到的第一个元素。

查看所有 CSS 选择器参考手册

返回值

类型 描述
Boolean

true – 元素匹配 CSS 选择器。

false – 元素与 CSS 选择器不匹配。


HTML DOM matches() 方法 元素对象

HTML DOM firstElementChild 属性

最后更新于:2022-03-27 03:03:23

HTML DOM firstElementChild 属性

HTML DOM firstElementChild 属性 元素对象

实例

获取 HTML 中 <ul> 元素的第一个子元素:

var x = document.getElementById(“myList”).firstElementChild.innerHTML;

尝试一下 »


定义和用法

firstElementChild 属性返回指定元素的第一个子元素。

firstElementChild 属性与 firstChild, 属性的区别在于 firstChild 返回第一个子节点作为元素节点,包含文本节点或注释节点(取决于哪个是第一个),而 firstElementChild 返回第一个子节点作为元素节点(忽略文本和注释节点)。

该属性是只读的。

提示:使用 children 属性返回指定元素的任何子元素。

提示:要返回指定元素的最后一个子元素,请使用 lastElementChild 属性。


浏览器支持

属性
firstElementChild 2.0 9.0 3.5 4.0 10.0

语法

element.firstElementChild

参数

None

返回值

类型 描述
Object 返回 Node 对象,表示元素的第一个子元素,如果没有子元素,则返回 null

技术细节

DOM 版本 Core Level 3 Element Traversal

更多实例

实例

获取 <div> 元素第一个子元素的标签名:

var x = document.getElementById("myDIV").firstElementChild.tagName;
document.getElementById("demo").innerHTML = x;

尝试一下 »

实例

获取 <select> 元素第一个子元素的文本:

var x = document.getElementById("mySelect").firstElementChild.text;

尝试一下 »


HTML DOM firstElementChild 属性 元素对象

HTML DOM lastElementChild 属性

最后更新于:2022-03-27 03:03:21

HTML DOM lastElementChild 属性

HTML DOM lastElementChild 属性 元素对象

实例

获取 HTML 中 <ul> 元素的最后一个子元素:

var x = document.getElementById(“myList”).lastElementChild.innerHTML;

尝试一下 »


定义和用法

lastElementChild 属性返回指定元素的最后一个子元素。

lastElementChild 属性与 lastChild 属性的区别在于 lastChild 返回最后一个子节点作为元素节点,包含文本节点或注释节点(取决于哪个是最后一个),而 lastElementChild 返回最后一个子节点作为元素节点(忽略文本和注释节点)。

该属性是只读的。

提示:使用 children 属性返回指定元素的任何子元素。

提示:要返回指定元素的第一个子元素,请使用 firstElementChild 属性。


浏览器支持

属性
lastElementChild 2.0 9.0 3.5 4.0 10.0

语法

element.lastElementChild

参数

None

返回值

类型 描述
Object 返回 Node 对象,表示元素的最后一个子元素,如果没有子元素,则返回 null

技术细节

DOM 版本 Core Level 3 Element Traversal

更多实例

实例

获取 <div> 元素最后一个子元素的标签名:

var x = document.getElementById("myDIV").lastElementChild.tagName;
document.getElementById("demo").innerHTML = x;

尝试一下 »

实例

获取 <select> 元素最后一个子元素的文本:

var x = document.getElementById("mySelect").lastElementChild.text;

尝试一下 »


HTML DOM lastElementChild 属性 元素对象

Python 推导式

最后更新于:2022-03-27 03:03:18

Python 推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

Python 支持各种数据结构的推导式:

  • 列表(list)推导式
  • 字典(dict)推导式
  • 集合(set)推导式
  • 元组(tuple)推导式

列表推导式

列表推导式格式为:

[表达式 for 变量 in 列表] 
[out_exp_res for out_exp in input_list]

或者 

[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
  • out_exp_res:列表生成元素表达式,可以是有返回值的函数。
  • for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
  • if condition:条件语句,可以过滤列表中不符合条件的值。

过滤掉长度小于或等于3的字符串列表,并将剩下的转换成大写字母:

实例

>>> names = [‘Bob’,‘Tom’,‘alice’,‘Jerry’,‘Wendy’,‘Smith’]
>>> new_names = [name.upper()for name in names if len(name)>3]
>>> print(new_names)
[‘ALICE’, ‘JERRY’, ‘WENDY’, ‘SMITH’]

计算 30 以内可以被 3 整除的整数:

实例

>>> multiples = [i for i in range(30) if i % 3 == 0]
>>> print(multiples)
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

字典推导式

字典推导基本格式:

{ key_expr: value_expr for value in collection }

或

{ key_expr: value_expr for value in collection if condition }

使用字符串及其长度创建字典:

实例

listdemo = [‘Google’,‘Runoob’, ‘Taobao’]
# 将列表中各字符串值为键,各字符串的长度为值,组成键值对
>>> newdict = {key:len(key) for key in listdemo}
>>> newdict
{‘Google’: 6, ‘Runoob’: 6, ‘Taobao’: 6}

提供三个数字,以三个数字为键,三个数字的平方为值来创建字典:

实例

>>> dic = {x: x**2 for x in (2, 4, 6)}
>>> dic
{2: 4, 4: 16, 6: 36}
>>> type(dic)
<class ‘dict’>

集合推导式

集合推导式基本格式:

{ expression for item in Sequence }
或
{ expression for item in Sequence if conditional }

计算数字 1,2,3 的平方数:

实例

>>> setnew = {i**2 for i in (1,2,3)}
>>> setnew
{1, 4, 9}

判断不是 abc 的字母并输出:

实例

>>> a = {x for x in ‘abracadabra’ if x not in ‘abc’}
>>> a
{‘d’, ‘r’}
>>> type(a)
<class ‘set’>

元组推导式

元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。

元组推导式基本格式:

(expression for item in Sequence )
或
(expression for item in Sequence if conditional )

元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [],另外元组推导式返回的结果是一个生成器对象。

例如,我们可以使用下面的代码生成一个包含数字 1~9 的元组:

实例

>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50>  # 返回的是生成器对象

>>> tuple(a)       # 使用 tuple() 函数,可以直接将生成器对象转换成元组
(1, 2, 3, 4, 5, 6, 7, 8, 9)

JavaScript 静态方法

最后更新于:2022-03-27 03:03:16

JavaScript 静态方法

静态方法是使用 static 关键字修饰的方法,又叫类方法,属于类的,但不属于对象,在实例化对象之前可以通过 类名.方法名 调用静态方法。

静态方法不能在对象上调用,只能在类中调用。

实例

class Runoob {
constructor(name) {
this.name = name;
}
static hello() {
return "Hello!!";
}
}

let noob = new Runoob("菜鸟教程");

// 可以在类中调用 ‘hello()’ 方法
document.getElementById("demo").innerHTML = Runoob.hello();

// 不能通过实例化后的对象调用静态方法
// document.getElementById("demo").innerHTML = noob.hello();
// 以上代码会报错

尝试一下 »

实例对象调用静态方法会报错:

如果你想在对象 noob 中使用静态方法,可以作为一个参数传递给它:

实例

class Runoob {
constructor(name) {
this.name = name;
}
static hello(x) {
return "Hello " + x.name;
}
}
let noob = new Runoob("菜鸟教程");
document.getElementById("demo").innerHTML = Runoob.hello(noob);

尝试一下 »

JavaScript 类继承

最后更新于:2022-03-27 03:03:13

JavaScript 类继承

JavaScript 类继承使用 extends 关键字。

继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。

super() 方法用于调用父类的构造函数。

当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类(父类),新建的类称为派生类(子类)

继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是动物,等等。

代码如下:

// 基类
class Animal {
// eat() 函数
// sleep() 函数
};

//派生类
class Dog extends Animal {
// bark() 函数
};

以下实例创建的类 “Runoob” 继承了 “Site” 类:

实例

class Site {
constructor(name) {
this.sitename = name;
}
present() {
return 我喜欢 + this.sitename;
}
}

class Runoob extends Site {
constructor(name, age) {
super(name);
this.age = age;
}
show() {
return this.present() + , 它创建了 + this.age + 年。;
}
}

let noob = new Runoob("菜鸟教程", 5);
document.getElementById("demo").innerHTML = noob.show();

尝试一下 »

super() 方法引用父类的构造方法。

通过在构造方法中调用 super() 方法,我们调用了父类的构造方法,这样就可以访问父类的属性和方法。

继承对于代码可复用性很有用。

getter 和 setter

类中我们可以使用 getter 和 setter 来获取和设置值,getter 和 setter 都需要在严格模式下执行。

getter 和 setter 可以使得我们对属性的操作变的很灵活。

类中添加 getter 和 setter 使用的是 get 和 set 关键字。

以下实例为 sitename 属性创建 getter 和 setter:

实例

class Runoob {
constructor(name) {
this.sitename = name;
}
get s_name() {
return this.sitename;
}
set s_name(x) {
this.sitename = x;
}
}

let noob = new Runoob("菜鸟教程");

document.getElementById("demo").innerHTML = noob.s_name;

尝试一下 »

注意:即使 getter 是一个方法,当你想获取属性值时也不要使用括号。

getter/setter 方法的名称不能与属性的名称相同,在本例中属名为 sitename。

很多开发者在属性名称前使用下划线字符 _ 将 getter/setter 与实际属性分开:

以下实例使用下划线 _ 来设置属性,并创建对应的 getter/setter 方法:

实例

class Runoob {
constructor(name) {
this._sitename = name;
}
get sitename() {
return this._sitename;
}
set sitename(x) {
this._sitename = x;
}
}

let noob = new Runoob("菜鸟教程");

document.getElementById("demo").innerHTML = noob.sitename;

尝试一下 »

要使用 setter,请使用与设置属性值时相同的语法,虽然 set 是一个方法,但需要不带括号

实例

class Runoob {
constructor(name) {
this._sitename = name;
}
set sitename(x) {
this._sitename = x;
}
get sitename() {
return this._sitename;
}
}

let noob = new Runoob("菜鸟教程");
noob.sitename = "RUNOOB";
document.getElementById("demo").innerHTML = noob.sitename;

尝试一下 »

提升

函数声明和类声明之间的一个重要区别在于, 函数声明会提升,类声明不会。

你首先需要声明你的类,然后再访问它,否则类似以下的代码将抛出 ReferenceError:

实例

// 这里不能这样使用类,因为还没有声明
// noob = new Runoob("菜鸟教程")
// 报错

class Runoob {
constructor(name) {
this.sitename = name;
}
}

// 这里可以使用类了
let noob = new Runoob("菜鸟教程")

使用前没有声明会报错:

使用前已经声明可以正常执行:

JavaScript 类(class)

最后更新于:2022-03-27 03:03:09

JavaScript 类(class)

类是用于创建对象的模板。

我们使用 class 关键字来创建一个类,类体在一对大括号 {} 中,我们可以在大括号 {} 中定义类成员的位置,如方法或构造函数。

每个类中包含了一个特殊的方法 constructor(),它是类的构造函数,这种方法用于创建和初始化一个由 class 创建的对象。

创建一个类的语法格式如下:

class ClassName {
constructor() {}
}

实例:

实例

class Runoob {
constructor(name, url) {
this.name = name;
this.url = url;
}
}

以上实例创建了一个类,名为 “Runoob”。

类中初始化了两个属性: “name” 和 “url”。

浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

Chrome 49 Edge 12 Firefox 45 Safari 9 Opera 36
Mar, 2016 Jul, 2015 Mar, 2016 Oct, 2015 Mar, 2016

使用类

定义好类后,我们就可以使用 new 关键字来创建对象:

实例

class Runoob {
constructor(name, url) {
this.name = name;
this.url = url;
}
}

let site = new Runoob("菜鸟教程", "https://docs.gechiui.com/w3school");

尝试一下 »

创建对象时会自动调用构造函数方法 constructor()

类表达式

类表达式是定义类的另一种方法。类表达式可以命名或不命名。命名类表达式的名称是该类体的局部名称。

实例

// 未命名/匿名类
let Runoob = class {
constructor(name, url) {
this.name = name;
this.url = url;
}
};
console.log(Runoob.name);
// output: "Runoob"

// 命名类
let Runoob = class Runoob2 {
constructor(name, url) {
this.name = name;
this.url = url;
}
};
console.log(Runoob.name);
// 输出: "Runoob2"

构造方法

构造方法是一种特殊的方法:

  • 构造方法名为 constructor()。
  • 构造方法在创建新对象时会自动执行。
  • 构造方法用于初始化对象属性。
  • 如果不定义构造方法,JavaScript 会自动添加一个空的构造方法。

类的方法

我们使用关键字 class 创建一个类,可以添加一个 constructor() 方法,然后添加任意数量的方法。

class ClassName {
constructor() {}
method_1() {}
method_2() {}
method_3() {}
}

以下实例我们创建一个 “age” 方法,用于返回网站年龄:

实例

class Runoob {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
let date = new Date();
return date.getFullYear()this.year;
}
}

let runoob = new Runoob("菜鸟教程", 2018);
document.getElementById("demo").innerHTML =
"菜鸟教程 " + runoob.age() + " 岁了。";

尝试一下 »

我们还可以向类的方法发送参数:

实例

class Runoob {
constructor(name, year) {
this.name = name;
this.year = year;
}
age(x) {
return xthis.year;
}
}

let date = new Date();
let year = date.getFullYear();

let runoob = new Runoob("菜鸟教程", 2020);
document.getElementById("demo").innerHTML=
"菜鸟教程 " + runoob.age(year) + " 岁了。";

尝试一下 »

严格模式 “use strict”

类声明和类表达式的主体都执行在严格模式下。比如,构造函数,静态方法,原型方法,getter 和 setter 都在严格模式下执行。

如果你没有遵循严格模式,则会出现错误:

实例

class Runoob {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
// date = new Date(); // 错误
let date = new Date(); // 正确
return date.getFullYear()this.year;
}
}

尝试一下 »

下图实例使用类未声明的变量:

更多严格模式可以参考:JavaScript 严格模式(use strict)

Python 移除列表中重复的元素

最后更新于:2022-03-27 03:03:06

Python 移除列表中重复的元素

Python 移除列表中重复的元素 Python3 实例

本章节我们将学习如何从列表中删除重复的元素。

知识点有:

  • Python 集合:集合(set)是一个无序的不重复元素序列。

  • Python 列表:列表是一种数据项构成的有限序列,即按照一定的线性顺序排列而成的数据项的集合,在这种数据结构上进行的基本操作包括对元素的的查找、插入和删除。

实例

list_1 = [1, 2, 1, 4, 6]

print(list(set(list_1)))

执行以上代码输出结果为:

[1, 2, 4, 6]

在以上实例中,我们首先将列表转换为集合,然后再次将其转换为列表。集合中不能有重复元素,因此 set() 会删除重复的元素。

删除两个列表中重复的元素

在以下实例中,两个列表中同时存在的元素会被删除。

实例

list_1 = [1, 2, 1, 4, 6]
list_2 = [7, 8, 2, 1]

print(list(set(list_1) ^ set(list_2)))

首先,使用 set() 将两个列表转换为两个集合,用于删除列表中的重复元素。

然后,使用 ^ 运算符得到两个列表的对称差。

执行以上代码输出结果为:

[4, 6, 7, 8]

首先,将两个列表转换为两个集合,以从每个列表中删除重复项。
然后,^ 得到两个列表的对称差(排除两个集合的重叠元素)。

Python 移除列表中重复的元素 Python3 实例

Python3 数据类型转换

最后更新于:2022-03-27 03:03:04

Python3 数据类型转换

有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。

Python 数据类型转换可以分为两种:

  • 隐式类型转换 – 自动完成
  • 显式类型转换 – 需要使用类型函数来转换

隐式类型转换

在隐式类型转换中,Python 会自动将一种数据类型转换为另一种数据类型,不需要我们去干预。

以下实例中,我们对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。

实例


num_int = 123
num_flo = 1.23

num_new = num_int + num_flo

print("datatype of num_int:",type(num_int))
print("datatype of num_flo:",type(num_flo))

print("Value of num_new:",num_new)
print("datatype of num_new:",type(num_new))

以上实例输出结果为:

num_int 数据类型为: <class 'int'>
num_flo 数据类型为: <class 'float'>
num_new: 值为: 124.23
num_new 数据类型为: <class 'float'>

代码解析:

  • 实例中我们对两个不同数据类型的变量 num_intnum_flo 进行相加运算,并存储在变量 num_new 中。
  • 然后查看三个变量的数据类型。
  • 在输出结果中,我们看到 num_int整型(integer)num_flo 浮点型(float)
  • 同样,新的变量 num_new 浮点型(float),这是因为 Python 会将较小的数据类型转换为较大的数据类型,以避免数据丢失。

我们再看一个实例,整型数据与字符串类型的数据进行相加:

实例

num_int = 123
num_str = "456"

print("Data type of num_int:",type(num_int))
print("Data type of num_str:",type(num_str))

print(num_int+num_str)

以上实例输出结果为:

num_int 数据类型为: <class 'int'>
num_str 数据类型为: <class 'str'>
Traceback (most recent call last):
  File "/runoob-test/test.py", line 7, in <module>
    print(num_int+num_str)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

从输出中可以看出,整型和字符串类型运算结果会报错,输出 TypeError。 Python 在这种情况下无法使用隐式转换。

但是,Python 为这些类型的情况提供了一种解决方案,称为显式转换。

显式类型转换

在显式类型转换中,用户将对象的数据类型转换为所需的数据类型。 我们使用 int()、float()、str() 等预定义函数来执行显式类型转换。

int() 强制转换为整型:

实例

x = int(1)   # x 输出结果为 1
y = int(2.8) # y 输出结果为 2
z = int("3") # z 输出结果为 3

float() 强制转换为浮点型:

实例

x = float(1)     # x 输出结果为 1.0
y = float(2.8)   # y 输出结果为 2.8
z = float("3")   # z 输出结果为 3.0
w = float("4.2") # w 输出结果为 4.2

str() 强制转换为字符串类型:

实例

x = str("s1") # x 输出结果为 ‘s1’
y = str(2)    # y 输出结果为 ‘2’
z = str(3.0)  # z 输出结果为 ‘3.0’

整型和字符串类型进行运算,就可以用强制类型转换来完成:

实例

num_int = 123
num_str = "456"

print("num_int 数据类型为:",type(num_int))
print("类型转换前,num_str 数据类型为:",type(num_str))

num_str = int(num_str)    # 强制转换为整型
print("类型转换后,num_str 数据类型为:",type(num_str))

num_sum = num_int + num_str

print("num_int 与 num_str 相加结果为:",num_sum)
print("sum 数据类型为:",type(num_sum))

以上实例输出结果为:

num_int 数据类型为: <class 'int'>
类型转换前,num_str 数据类型为: <class 'str'>
类型转换后,num_str 数据类型为: <class 'int'>
num_int 与 num_str 相加结果为: 579
sum 数据类型为: <class 'int'>

以下几个内置的函数可以执行数据类型之间的转换。这些函数返回一个新的对象,表示转换的值。

函数 描述

int(x [,base])

将x转换为一个整数

float(x)

将x转换到一个浮点数

complex(real [,imag])

创建一个复数

str(x)

将对象 x 转换为字符串

repr(x)

将对象 x 转换为表达式字符串

eval(str)

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个 (key, value)元组序列。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串

Vue3 创建项目

最后更新于:2022-03-27 03:03:02

Vue3 创建项目

在上一章节 Vue3 安装 我们使用了 vue init 命令创建过一个项目,本章节我们主要介绍 vue create 命令创建项目以及使用 vue ui 命令打开图形化的安装界面。


vue create 命令

vue create 命令创建项目语法格式如下:

vue create [options] <app-name>

创建一个由 vue-cli-service 提供支持的新项目:

options 选项可以是:

  • -p, –preset <presetName>: 忽略提示符并使用已保存的或远程的预设选项
  • -d, –default: 忽略提示符并使用默认预设选项
  • -i, –inlinePreset <json>: 忽略提示符并使用内联的 JSON 字符串预设选项
  • -m, –packageManager <command>: 在安装依赖时使用指定的 npm 客户端
  • -r, –registry <url>: 在安装依赖时使用指定的 npm registry
  • -g, –git [message]: 强制 / 跳过 git 初始化,并可选的指定初始化提交信息
  • -n, –no-git: 跳过 git 初始化
  • -f, –force: 覆写目标目录可能存在的配置
  • -c, –clone: 使用 git clone 获取远程预设选项
  • -x, –proxy: 使用指定的代理创建项目
  • -b, –bare: 创建项目时省略默认组件中的新手指导信息
  • -h, –help: 输出使用帮助信息

接下来我们创建 runoob-vue3-app 项目:

vue create runoob-vue3-app

执行以上命令会出现安装选项界面:

Vue CLI v4.4.6
? Please pick a preset: (Use arrow keys)
❯ default (babel, eslint)
  Manually select features

按下回车键后就会进入安装,等候片刻即可完成安装。

安装完成后,我们进入项目目录:

cd runoob-vue3-app2

启动应用:

npm run serve

然后打开 http://localhost:8080/,就可以看到应用界面了:


vue ui 命令

除了使用 vue create 命令创建项目,我们还可以使用可视化创建工具来创建项目。

运行命令:

$ vue ui
&#x1f680;  Starting GUI...
&#x1f320;  Ready on http://localhost:8000
...

执行以上命令,会在浏览器弹出一个项目管理的界面:

我们可以点击“创建”选项来创建一个项目,选择底部”在此创建项目”,页面上方也可以选择路径:

然后输入我们的项目名称,选择包管理工具为 npm,然后点击下一步:

配置选择默认即可:

接下来就等待完成安装,安装完成管理界面如下:

HTML 国家/地区参考手册

最后更新于:2022-03-27 03:02:56

HTML 国家/地区 参考手册


ISO 国家和地区代码

在 HTML 中,国家/地区代码可作为 lang 属性中语言代码的补充。

语言代码的前两个字符定义网页的语言(请参阅语言代码参考)。

最后两个字符定义国家/地区。

以下实例将中文指定为语言,将中国指定为国家:

<html lang="zh-CN">

</html>

以下实例将英语指定为语言,将美国指定为国家:

<html lang="en-US">

</html>


ISO 639-1 国家/地区代码

国家/地区 ISO 代码
AFGHANISTAN AF
ALBANIA AL
ALGERIA DZ
AMERICAN SAMOA AS
ANDORRA AD
ANGOLA AO
ANTARCTICA AQ
ANTIGUA AND BARBUDA AG
ARGENTINA AR
ARMENIA AM
ARUBA AW
AUSTRALIA AU
AUSTRIA AT
AZERBAIJAN AZ
BAHAMAS BS
BAHRAIN BH
BANGLADESH BD
BARBADOS BB
BELARUS BY
BELGIUM BE
BELIZE BZ
BENIN BJ
BERMUDA BM
BHUTAN BT
BOLIVIA BO
BOSNIA AND HERZEGOVINA BA
BOTSWANA BW
BOUVET ISLAND BV
BRAZIL BR
BRITISH INDIAN OCEAN TERRITORY IO
BRUNEI DARUSSALAM BN
BULGARIA BG
BURKINA FASO BF
BURUNDI BI
CAMBODIA KH
CAMEROON CM
CANADA CA
CAPE VERDE CV
CAYMAN ISLANDS KY
CENTRAL AFRICAN REPUBLIC CF
CHAD TD
CHILE CL
CHINA CN
CHRISTMAS ISLAND CX
COCOS (KEELING) ISLANDS CC
COLOMBIA CO
COMOROS KM
CONGO CG
CONGO, THE DEMOCRATIC REPUBLIC OF THE CD
COOK ISLANDS CK
COSTA RICA CR
CÔTE D’IVOIRE CI
CROATIA HR
CUBA CU
CYPRUS CY
CZECH REPUBLIC CZ
DENMARK DK
DJIBOUTI DJ
DOMINICA DM
DOMINICAN REPUBLIC DO
ECUADOR EC
EGYPT EG
EL SALVADOR SV
EQUATORIAL GUINEA GQ
ERITREA ER
ESTONIA EE
ETHIOPIA ET
FALKLAND ISLANDS (MALVINAS) FK
FAROE ISLANDS FO
FIJI FJ
FINLAND FI
FRANCE FR
FRENCH GUIANA GF
FRENCH POLYNESIA PF
FRENCH SOUTHERN TERRITORIES TF
GABON GA
GAMBIA GM
GEORGIA GE
GERMANY DE
GHANA GH
GIBRALTAR GI
GREECE GR
GREENLAND GL
GRENADA GD
GUADELOUPE GP
GUAM GU
GUATEMALA GT
GUINEA GN
GUINEA-BISSAU GW
GUYANA GY
HAITI HT
HEARD ISLAND AND MCDONALD ISLANDS HM
HONDURAS HN
HONG KONG HK
HUNGARY HU
ICELAND IS
INDIA IN
INDONESIA ID
IRAN, ISLAMIC REPUBLIC OF IR
IRAQ IQ
IRELAND IE
ISRAEL IL
ITALY IT
JAMAICA JM
JAPAN JP
JORDAN JO
KAZAKHSTAN KZ
KENYA KE
KIRIBATI KI
KOREA, DEMOCRATIC PEOPLE’S REPUBLIC OF KP
KOREA, REPUBLIC OF KR
KUWAIT KW
KYRGYZSTAN KG
LAO PEOPLE’S DEMOCRATIC REPUBLIC
(LAOS)
LA
LATVIA LV
LEBANON LB
LESOTHO LS
LIBERIA LR
LIBYA, STATE OF LY
LIECHTENSTEIN LI
LITHUANIA LT
LUXEMBOURG LU
MACAO MO
MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF MK
MADAGASCAR MG
MALAWI MW
MALAYSIA MY
MALDIVES MV
MALI ML
MALTA MT
MARSHALL ISLANDS MH
MARTINIQUE MQ
MAURITANIA MR
MAURITIUS MU
MAYOTTE YT
MEXICO MX
MICRONESIA, FEDERATED STATES OF FM
MOLDOVA, REPUBLIC OF MD
MONACO MC
MONGOLIA MN
MONTENEGRO ME
MONTSERRAT MS
MOROCCO MA
MOZAMBIQUE MZ
MYANMAR MM
NAMIBIA NA
NAURU NR
NEPAL, FEDERAL DEMOCRATIC REPUBLIC OF NP
NETHERLANDS NL
NETHERLANDS ANTILLES AN
NEW CALEDONIA NC
NEW ZEALAND NZ
NICARAGUA NI
NIGER NE
NIGERIA NG
NIUE NU
NORFOLK ISLAND NF
NORTHERN MARIANA ISLANDS MP
NORWAY NO
OMAN OM
PAKISTAN PK
PALAU PW
PALESTINE, STATE OF PS
PANAMA PA
PAPUA NEW GUINEA PG
PARAGUAY PY
PERU PE
PHILIPPINES PH
PITCAIRN PN
POLAND PL
PORTUGAL PT
PUERTO RICO PR
QATAR QA
RÉUNION RE
ROMANIA RO
RUSSIAN FEDERATION RU
RWANDA RW
SAINT HELENA SH
SAINT KITTS AND NEVIS KN
SAINT LUCIA LC
SAINT PIERRE AND MIQUELON PM
SAINT VINCENT AND THE GRENADINES VC
SAMOA WS
SAN MARINO SM
SAO TOME AND PRINCIPE ST
SAUDI ARABIA SA
SENEGAL SN
SERBIA RS
SEYCHELLES SC
SIERRA LEONE SL
SINGAPORE SG
SLOVAKIA SK
SLOVENIA SI
SOLOMON ISLANDS SB
SOMALIA SO
SOUTH AFRICA ZA
SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS GS
SOUTH SUDAN SS
SPAIN ES
SRI LANKA LK
SUDAN SD
SURINAME SR
SVALBARD AND JAN MAYEN SJ
SWAZILAND SZ
SWEDEN SE
SWITZERLAND CH
SYRIAN ARAB REPUBLIC SY
TAIWAN,CHINA TW
TAJIKISTAN TJ
TANZANIA, UNITED REPUBLIC OF TZ
THAILAND TH
TIMOR-LESTE TL
TOGO TG
TOKELAU TK
TONGA TO
TRINIDAD AND TOBAGO TT
TUNISIA TN
TURKEY TR
TURKMENISTAN TM
TURKS AND CAICOS ISLANDS TC
TUVALU TV
UGANDA UG
UKRAINE UA
UNITED ARAB EMIRATES AE
UNITED KINGDOM GB
UNITED STATES US
UNITED STATES MINOR OUTLYING ISLANDS UM
URUGUAY UY
UZBEKISTAN UZ
VANUATU VU
VENEZUELA VE
VIET NAM VN
VIRGIN ISLANDS, BRITISH VG
VIRGIN ISLANDS, U.S. VI
WALLIS AND FUTUNA WF
WESTERN SAHARA EH
YEMEN YE
ZAMBIA ZM
ZIMBABWE ZW

HTML <template> 标签

最后更新于:2022-03-27 03:02:54

HTML <template> 标签

实例

使用 <template> 标签在页面加载时该标签中的内容不会显示,加载后可以使用 JavaScript 来显示它:

<button onclick="showContent()">显示隐藏内容</button>

<template>
<h2>logo</h2>
<img src="https://static.runoob.com/images/runoob-logo.png" >
</template>

<script>
function showContent() {
var temp = document.getElementsByTagName("template")[0];
var clon = temp.content.cloneNode(true);
document.body.appendChild(clon);
}
</script>

尝试一下 »


浏览器支持

表格中的数字表示支持该元素的第一个浏览器的版本号。

元素
<template> 26.0 13.0 22.0 8.0 15.0

标签定义及使用说明

<template> 标签定义在页面加载时隐藏的一些内容,该标签中的内容可以稍后使用 JavaScript 呈现。

如果您有一些需要重复使用的 HTML 代码,则可以使用 <template> 设置为公用的模板。


更多实例

实例

实例中的每个数组元素都使用一个新的 div 元素来填充网页。每个 div 元素的 HTML 代码都在 template 元素内::

<template>
<div class="myClass">我喜欢: </div>
</template>

<script>
var myArr = ["Google", "Runoob", "Taobao", "Wiki", "Zhihu", "Baidu"];
function showContent() {
var temp, item, a, i;
temp = document.getElementsByTagName("template")[0];
item = temp.content.querySelector("div");
for (i = 0; i
< myArr.length; i++) {
a = document.importNode(item, true);
a.textContent += myArr[i];
document.body.appendChild(a);
}
}
</
script>

尝试一下 »

实例

查看浏览器是否支持 template 标签:

if (document.createElement("template").content) {
document.write("您的浏览器支持 template 标签!");
} else {
document.write("您的浏览器不支持 template 标签!");
}

尝试一下 »


全局属性

<time> 标签支持 HTML 的全局属性

Python with 关键字

最后更新于:2022-03-27 03:02:51

Python with 关键字

Python with 关键字 Python3 错误和异常

Python 中的 with 语句用于异常处理,封装了 try…except…finally 编码范式,提高了易用性。

with 语句使代码更清晰、更具可读性, 它简化了文件流等公共资源的管理。

在处理文件对象时使用 with 关键字是一种很好的做法。

我们可以看下以下几种代码实例:

不使用 with,也不使用 try…except…finally

实例

file = open(‘./test_runoob.txt’, ‘w’)
file.write(‘hello world !’)
file.close()

以上代码如果在调用 write 的过程中,出现了异常,则 close 方法将无法被执行,因此资源就会一直被该程序占用而无法被释放。

接下来我们呢可以使用 try…except…finally 来改进代码:

实例

file = open(‘./test_runoob.txt’, ‘w’)
try:
    file.write(‘hello world’)
finally:
    file.close()

以上代码我们对可能发生异常的代码处进行 try 捕获,发生异常时执行 except 代码块,finally 代码块是无论什么情况都会执行,所以文件会被关闭,不会因为执行异常而占用资源。

使用 with 关键字:

实例

with open(‘./test_runoob.txt’, ‘w’) as file:
    file.write(‘hello world !’)

使用 with 关键字系统会自动调用 f.close() 方法, with 的作用等效于 try/finally 语句是一样的。

我们可以在执行 with 关键字后检验文件是否关闭:

实例

>>> with open(‘./test_runoob.txt’) as f:
…     read_data = f.read()

>>> # 查看文件是否关闭
>>> f.closed
True

with 语句实现原理建立在上下文管理器之上。

上下文管理器是一个实现 __enter____exit__ 方法的类。

使用 with 语句确保在嵌套块的末尾调用 __exit__ 方法。

这个概念类似于 try…finally 块的使用。

实例

with open(‘./test_runoob.txt’, ‘w’) as my_file:
    my_file.write(‘hello world!’)

以上实例将 hello world! 写到 ./test_runoob.txt 文件上。

在文件对象中定义了 __enter__ 和 __exit__ 方法,即文件对象也实现了上下文管理器,首先调用 __enter__ 方法,然后执行 with 语句中的代码,最后调用 __exit__ 方法。 即使出现错误,也会调用 __exit__ 方法,也就是会关闭文件流。

Python with 关键字 Python3 错误和异常

AJAX JSON 实例

最后更新于:2022-03-27 03:02:49

AJAX JSON 实例


AJAX 可用来与 JSON 文件进行交互式通信。


AJAX JSON 实例

下面的例子将演示网页如何使用 AJAX 来读取来自 JSON 文件的信息:

实例


尝试一下 »


实例解析 – loadXMLDoc() 函数

当用户点击上面的“获取课程数据”这个按钮,就会执行 loadXMLDoc() 函数。

loadXMLDoc() 函数创建 XMLHttpRequest 对象,添加当服务器响应就绪时执行的函数,并将请求发送到服务器。

当服务器响应就绪时,我们就使用 JSON.parse() 方法将数据转换为 JavaScript 对象。:

异步加载 JSON 文档

function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var myArr = JSON.parse(this.responseText);
myFunction(myArr)
}
}
xmlhttp.open("GET","/try/ajax/json_ajax.json",true);
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send();
}
function myFunction(arr) {
var out = "";
var i;
for(i = 0; i < arr.length; i++) {
out += <a href=" + arr[i].url + "> +
arr[i].title + </a><br>;
}
document.getElementById("myDiv").innerHTML=out;
}


AJAX 服务器页面

上面这个例子中使用的服务器页面实际上是一个名为 “json_ajax.json” JSON 文件。

JSON 数据如下:

json_ajax.jso 文件:

[
{
"title": "JavaScript 教程",
"url": "https://docs.gechiui.com/w3school/js/"
},
{
"title": "HTML 教程",
"url": "https://docs.gechiui.com/w3school/html/"
},
{
"title": "CSS 教程",
"url": "https://docs.gechiui.com/w3school/css/"
}
]

发送 JSON 数据:

xmlhttp.send(JSON.stringify({ "email": "admin@runoob.com", "response": { "name": "runoob" } }));

HTML source srcset 属性

最后更新于:2022-03-27 03:02:47

HTML <source> srcset 属性

HTML source srcset 属性 HTML <source> 标签

实例

在 <picture> 标签中使用 <source> 来设置不同屏幕显示的图片:

<picture>
<source media="(min-width:650px)" srcset="https://static.runoob.com/images/runoob-logo.png">
<source media="(min-width:465px)" srcset="https://static.runoob.com/images/code-icon-script.png">
<img src="https://static.runoob.com/images/mix/hjkg_icon.png" style="width:auto;">
</picture>

尝试一下 »


浏览器支持

表格中的数字表示支持该属性的第一个浏览器版本号。

属性
srcset 38.0 13.0  38.0 9.1 25.0

定义和用法

srcset 属性用于不同情况下显示的图片 URL。

<source> 应用于 <picture> 标签时需要使用到该属性。


HTML 4.01 与 HTML5之间的差异

<source> 标签是 HTML5 中的新标签。


语法

<source srcset="URL">

属性值

描述
URL 规定媒体文件的 URL。

可能的值:

  • 绝对 URL – 指向另一个网站(比如 href=”https://docs.gechiui.com/w3school/horse.ogg”)
  • 相对 URL – 指向网站内的一个文件(比如 href=”horse.ogg”)


HTML source srcset 属性 HTML <source> 标签

React componentWillUnmount() 方法

最后更新于:2022-03-27 03:02:45

React componentWillUnmount() 方法

React componentWillUnmount() 方法 React 组件生命周期

componentWillUnmount() 方法格式如下:

componentWillUnmount()

componentWillUnmount() 方法在组件卸载及销毁之前直接调用。

componentWillUnmount() 方法中不应调用 setState(),因为该组件将永远不会重新渲染。组件实例卸载后,将永远不会再挂载它。

以下实例中 componentWillUnmount() 方法会在组件即将从 DOM 中移除时调用:

实例

class Container extends React.Component {
constructor(props) {
super(props);
this.state = {show: true};
}
delHeader = () => {
this.setState({show: false});
}
render() {
let myheader;
if (this.state.show) {
myheader = <Child />;
};
return (
<
div>
{myheader}
<
button type="button" onClick={this.delHeader}>删除标题组建</button>
</
div>
);
}
}

class Child extends React.Component {
componentWillUnmount() {
alert("标题组件即将卸载。");
}
render() {
return (
<
h1>Hello Runoob!</h1>
);
}
}

ReactDOM.render(<Container />, document.getElementById(root));

尝试一下 »

React componentWillUnmount() 方法 React 组件生命周期