时间组件(Time)
BootstrapVue的custom<b-time>
组件生成符合WAI-ARIA的时间选择小部件,该小部件可用于控制其他组件,或用于创建自定义的时间选择器输入。
<b-time>
符合WAI-ARIA辅助功能,针对键盘控制(箭头键、上/下翻页键、home键和end键)进行了优化。还支持国际化,如果未指定区域设置,则默认为浏览器或页面的区域设置。
如果需要将时间选择器用作自定义窗体控件输入,请改用<b-form-timepicker>
组件。
BootstrapVue v2.6.0
引入了<b-time>
组件。
Value: ''
Context:
v-model
return value 返回值
<b-time>
始终返回HH:mm:ss
格式的字符串,该格式与本机浏览器<input type="time">
控件返回的格式相同。该值将在'00:00:00'
到'23:59:59'
的范围内(使用'h23'
小时循环语法的24小时时钟)
如果未选择时间,则<b-time>
返回空字符串(''
)。
式样
默认情况下,不会显示“秒”微调按钮。若要启用秒部分,请将show-seconds
属性设置为true
,以启用“秒选择”微调按钮。当show-seconds
为false
(或未提供)时,返回值将始终将时间字符串的seconds部分设置为00
。
默认情况下,当前选定的时间将显示在时间组件的顶部,并以区域设置的语言进行格式化。
您可以通过hide-header
道具隐藏此标题。注意,这只会在视觉上隐藏所选时间,同时使屏幕阅读器用户可以将其作为aria-live
活动区域使用。
Border and padding 边框和填充
想要一个有填充边框的时间控件吗?使用引导程序的边框和填充实用程序类添加边框和填充:
Default slot 默认插槽
通过使用默认广告位,在时间界面的底部提供可选内容。 该插槽可用于添加按钮,例如“立即”或“重置”等。
事件
更新 v-model
时会发出 'input'
事件。事件有一个参数,
该参数是作为字符串选择的时间。该值是'HH:mm:ss'
格式的字符串(如果未选择时间,则为空字符串)。有效值在
'00:00:00'
到23:59:59'
的范围内。
如果未设置show-seconds
属性,则时间值的秒数部分将始终为'00'
。
如果设置了disabled
或readonly
属性,则不会发出'input'
事件。
context
event
每当用户选择时间或更改其中一个微调按钮的值时,都会发出 'context'
事件。当组件被创建时(就在插入到DOM之前),或者当解析的语言环境发生更改时,它也会被发出。
当设置了disabled
或readonly
属性时,不会发出该事件(创建时间组件时的初始发出除外)。
'context'
事件作为唯一参数传递给一个context对象,该对象具有以下属性:
属性 |
描述 |
value |
当前值为HH:mm:ss 字符串或空字符串(如果未选择时间)
|
formatted |
在已解析的区域设置中格式化的当前值,如果未选择时间,则为标签无时间属性 值 |
hours |
当前选定的小时(始终为24小时,h23' 格式)为数字,如果没有小时则为空
|
minutes |
当前选定的分钟为数字,如果没有分钟则为空
|
seconds |
当前选定的秒值为数字,如果没有秒值则为空 |
locale |
时间选择器解析的区域设置,这可能与请求的区域设置不同
|
isRTL |
如果语言环境是RTL(从右到左),则为true
|
hour12 |
指示接口是否使用12小时格式的布尔值 |
hourCycle |
表示用于旋转按钮的小时周期类型的字符串:'h11' 、'h12'
、'h23' 或'h24'
|
有关上下文属性locale
、hour12
和hourCycle
的信息,请参阅Internationalization section部分。
Internationalization 国际化
时间接口的国际化通过
Intl.DateTimeFormat
和
Intl.NumberFormat
提供,但应用于时间控件元素(aria标签、选定状态等)的标签除外。您必须为这些标签提供自己的翻译。可用的区域设置将取决于浏览器(并非所有浏览器都支持所有区域设置)。
默认情况下<b-time>
将使用浏览器的默认区域设置,但您可以通过区域设置
属性指定要使用的区域设置(或区域设置)。该属性接受单个区域设置字符串或区域设置字符串数组(按最首选区域设置到最不首选区域设置的顺序列出)。
发出的'context'
事件将包括时间控件解析到的区域设置(可能与请求的区域设置不同,具体取决于支持的Intl
区域设置)。
对于使用Node.js时的服务器端呈现(SSR),请确保正在使用的Node.js运行时支持Intl
和将要使用的区域设置。有关详细信息,请参阅Node Intl support documentation。
Value: ''
Context:
Understanding the hourCycle
了解hourCycle
世界上有两种主要的计时惯例:12小时制和24小时制。hourCycle
属性允许您访问特定区域设置使用的时钟类型。小时循环类型可以有几个不同的值,如下表所示。hourCycle
表示时间'00:00:00'
(一天的开始)应如何呈现/格式化给特定区域设置的用户。
'context'
event
包括已解析的hourCycle
值。
hourCycle |
Description |
'h12' |
使用1 –12 小时制。12小时制,午夜12点开始
|
'h23' |
使用0 –23 的小时制。24小时制,午夜从0:00开始
|
'h11' |
使用0 –11 的小时制。12小时制,午夜从凌晨0点开始
|
'h24' |
使用1 –24 小时制。24小时制,午夜从24:00开始
|
原生HTML5<input type="date">
以'h23'
格式返回时间值,也以 'h23'
格式返回v-model。此值可能不同于通过 <b-time>
组件的GUI(旋转按钮)向用户显示的值,具体取决于所选的locale selected。
注意:
IE11不支持解析区域设置的hourCycle
值,因此我们假设h12
或h23
基于解析的hour12
值。
Forcing 12 or 24 hour interface 强制12或24小时接口
12小时输入与24小时输入由客户端浏览器的默认语言环境(或从语言环境属性解析的语言环境)决定。要强制12小时用户界面,请将prop hour12
设置为true
。
要强制24小时用户界面,请将prop hour12
设置为false
。prop hour12
的默认值为null
,它使用解析的区域设置来确定要使用哪个接口。
hour12
属性的设置将影响解析哪个hourCycle
以格式化hours微调按钮。请注意,虽然这可能会影响小时微调按钮的格式,但由于客户端对特定区域设置的Intl.DateTimeFormat支持的限制,格式化的时间字符串结果可能会显示'h12
或'h23'
格式。因此,建议将hour12
prop设置为null
(默认值),以便显示区域设置的默认时间/小时格式。
Accessibility
<b-time>
提供了许多辅助功能,如aria-live
区域、角色、aria标签、快捷键和全键盘导航,可用于大多数屏幕阅读器。
键盘导航:
- 箭头向上递增当前选定的微调按钮值
- 箭头向下 递减当前选定的微调按钮值
- Home 将选定的微调按钮设置为最小值
- End 将选定的微调按钮设置为最大值
- PageUp 将选定的spinbutton值按spinbutton的步长增大一个较大的值
- PageDown 按spinbutton的步长将选定的spinbutton值减小一个较大的值
- 箭头右移焦点到组件中的下一个旋转按钮
- 箭头左移焦点到组件中的上一个旋转按钮
一些label-*
属性在屏幕上不可见,但用于为屏幕阅读器用户标记日历中的各种元素。e、g便签选择
的属性被添加到显示选定值的元素中。
国际化日期选择器时,还必须使用适当的翻译字符串更新label-*
属性,以便国际屏幕阅读器用户能够听到正确的提示和说明。
Implementation notes
<b-time>
组件基于自定义BootstrapVue组件<b-form-spinbutton>
。
<b-time>
使用Bootstrap的margin、padding、border和flex实用程序类,以及button(btn-*
)类和表单控件类
类。BootstrapVue的自定义s CSS/CSS也是正确样式所必需的。
另请参阅
组件引用
属性
属性 (Click to sort Ascending) |
类型 |
默认值 |
描述 |
id |
String |
|
用于在渲染的内容上设置“id”属性,并用作根据需要生成任何其他元素ID的基础 |
value v-model |
String |
|
初始选择的时间值。接受'HH:mm:ss'字符串。有效值范围从“00:00:00”到“23:59:59”` |
show-seconds |
Boolean |
false |
如果为true,则显示“秒”微调按钮。如果'false',则不会显示seconds旋转按钮,时间的seconds部分始终为'0`
|
hour12 |
Boolean |
|
如果“true”,则将接口强制为12小时格式。如果“false”,则强制将接口设置为24小时格式。如果“null”,则当前区域设置将确定12小时或24小时界面(默认设置) |
locale |
String or Array |
|
组件要使用的区域设置(或区域设置)。当传递一个区域设置数组时,区域设置的顺序是从最优先到最不优先。如果未提供,则默认为客户端默认区域设置 |
aria-labelledby |
String |
|
为该组件提供标签的元素的ID。用作“aria labelledby”属性的值 |
seconds-step |
Number or String |
1 |
秒微调按钮的步长值。应该是一个平均分为60的值 |
minutes-step |
Number or String |
1 |
分钟微调按钮的步长值。应该是一个平均分为60的值 |
disabled |
Boolean |
false |
设置为“true”时,禁用组件的功能并将其置于禁用状态 |
readonly |
Boolean |
false |
设置窗体控件的“readonly”属性/td>
|
label-no-time-selected |
String |
'No time selected' |
未选择时间时显示的字符串 |
label-selected |
String |
'Selected time' |
选择时间时仅隐藏sr字符串 |
label-hours |
String |
'Hours' |
“小时”微调按钮上“aria label”属性的值 |
label-minutes |
String |
'Minutes' |
“分钟”微调按钮上“aria label”属性的值 |
label-seconds |
String |
'Seconds' |
“秒”微调按钮上“aria label”属性的值 |
label-ampm |
String |
'AM/PM' |
“AM/PM”微调按钮上“aria label”属性的值 |
label-am |
String |
'AM' |
选择“AM”时要在AM/PM微调按钮中显示的文本 |
label-pm |
String |
'PM' |
选择“PM”时显示在AM/PM微调按钮中的文本 |
label-increment |
String |
'Increment' |
spinbuttons`+`button上的“aria label”属性的值 |
label-decrement |
String |
'Decrement' |
spinbuttons上“aria label”属性的值“-”按钮 |
hidden |
Boolean |
false |
|
v-model
插槽
插槽名称 |
描述 |
default |
用于将自定义控件放置在时间组件的底部 |
事件
事件 |
参数 |
描述 |
input |
value - 以“HH:mm:ss”字符串形式选定的时间。如果未选择时间,则为空字符串
|
更新v-model的事件 |
context |
context - 上下文对象。详见文件
|
每当内部模型状态或区域设置更新时发出。也在最初创建组件时发出 |
导入单个组件
您可以通过以下命名的导出将单个组件导入到项目中:
组件 |
命名输出 |
导入路径 |
<b-time> |
BTime |
bootstrap-vue |
示例:
导入为Vue.js插件
该插件包括上面列出的所有单个组件。插件还包括任何组件别名。
命名输出 |
导入路径 |
TimePlugin |
bootstrap-vue |
示例: