前端學習記錄
2020-09-13 22:41:37 企業開發
HTML標簽
HTML檔案結構
head
<head>
<!-- 漢字編碼 -->
<meta charset="UTF-8">
<!-- 設定一個網站的搜索關鍵字 -->
<meta name="Keywords" content=""/>
<!-- 網站描述內容 -->
<meta name="Description" content=""/>
<!-- 視口設定 -->
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<!-- 標題 -->
<title>少年的博客</title>
<!-- 加載頁面圖示 -->
<link rel="shortcut icon" href=https://www.cnblogs.com/ouyangkai/p/"bitbug_favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="css/base.css">
body
<!-- 主體內容 -->
<body>
<h3>Junior</h3>
</body>
style
<!-- css樣式 -->
<style></style>
script
<!-- js -->
<script type="text/javascript">
// 腳本代碼塊
</script>
格式
標簽
描述
acronym
定義只取首字母的縮寫,
ababr
定義縮寫,
address
定義檔案作者或擁有者的聯系資訊,
b
定義粗體文本,
bdi
定義文本的文本方向,使其脫離其周圍文本的方向設定,
bdo
定義文字方向,
big
定義大號文本,
blockquote
定義長的參考,
center
不贊成使用,定義居中文本,
cite
定義參考(citation),
code
定義計算機代碼文本,
del
定義被洗掉文本,
dfn
定義定義專案,
em
定義強調文本,
font
不贊成使用,定義文本的字體、尺寸和顏色
i
定義斜體文本,
ins
定義被插入文本,
kbd
定義鍵盤文本,
mark
定義有記號的文本,
meter
定義預定義范圍內的度量,
pre
定義預格式文本,
progress
定義任何型別的任務的進度,
q
定義短的參考,
rp
定義若瀏覽器不支持 ruby 元素顯示的內容,
rt
定義 ruby 注釋的解釋,
ruby
定義 ruby 注釋,
s
不贊成使用,定義加洗掉線的文本,
samp
定義計算機代碼樣本,
small
定義小號文本,
strike
不贊成使用,定義加洗掉線文本,
strong
定義語氣更為強烈的強調文本,
sup
定義上標文本,
sub
定義下標文本,
time
定義日期/時間,
tt
定義打字機文本,
u
不贊成使用,定義下劃線文本,
var
定義文本的變數部分,
wbr
定義視頻,
鏈接
標簽
描述
a
定義錨,
link
定義檔案與外部資源的關系,
nav
定義導航鏈接,
音頻/視頻
標簽
描述
audio
定義聲音內容,
source
定義媒介源,
track
定義用在媒體播放器中的文本軌道,
video
定義視頻,
影像
標簽
描述
img
定義影像,
map
定義影像映射,
area
定義影像地圖內部的區域,
canvas
定義圖形,
figcaption
定義 figure 元素的標題,
figure
定義媒介內容的分組,以及它們的標題,
轉義符
物體字符
編譯后的字符
<
小于號 <
>
大于號 >
&
于號 &
空格
©
著作權
×
乘號
÷
除號
標簽元素
塊級元素
塊級元素(相當執行了 display:block)
1.獨占一行 寬度和高度是可控的,如沒有設定寬度將默認鋪滿
2.其行內可以包含塊級和行級元素
行級元素
行級元素(相當執行了 display:inline)
1.不會獨占一行,與相鄰的行級元素占同一行
2.寬高是不可控的
3.其行內只有包含行級元素
Emmet語法
2-1. 后代:>
nav>ul>li
<nav>
<ul>
<li></li>
</ul>
</nav>
2-2. 兄弟:+
div+p+bq
<div></div>
<p></p>
<blockquote></blockquote>
2-3. 上級:^
div+div>p>span+em^bq
<div></div>
<div>
<p><span></span><em></em></p>
<blockquote></blockquote>
</div>
div+div>p>span+em^^bq
<div></div>
<div>
<p><span></span><em></em></p>
</div>
<blockquote></blockquote>
2-4. 分組:()
(1)縮寫↓
div>(header>ul>li*2>a)+footer>p
<div>
<header>
<ul>
<li><a href=https://www.cnblogs.com/ouyangkai/p/"">
(2)縮寫↓
(div>dl>(dt+dd)*3)+footer>p
<div>
<dl>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
<dt></dt>
<dd></dd>
</dl>
</div>
<footer>
<p></p>
</footer>
2-5. 乘法:*
縮寫↓
ul>li*5
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
<ul>
2-6.自增符號:$
1)縮寫↓
ul>li.item$*5
<ul>
<li class="item1"></li>
<li class="item2"></li>
<li class="item3"></li>
<li class="item4"></li>
<li class="item5"></li>
<ul>
(2)縮寫↓
h$[title=item$]{Header $}*3
<h1 title="item1">Header 1</h1>
<h2 title="item2">Header 2</h2>
<h3 title="item3">Header 3</h3>
(3)縮寫↓
ul>li.item$$$*5
<ul>
<li class="item001"></li>
<li class="item002"></li>
<li class="item003"></li>
<li class="item004"></li>
<li class="item005"></li>
</ul>
(4)縮寫↓
ul>li.item$@-*5
<ul>
<li class="item5"></li>
<li class="item4"></li>
<li class="item3"></li>
<li class="item2"></li>
<li class="item1"></li>
</ul>
(5)縮寫↓
ul>li.item$@3*5
<ul>
<li class="item3"></li>
<li class="item4"></li>
<li class="item5"></li>
<li class="item6"></li>
<li class="item7"></li>
</ul>
2-7.ID和類屬性
(1)縮寫↓
#header
<div id="header"></div>
(2)縮寫↓
.title
<div class="title"></div>
(3)縮寫↓
form#search.wide
<form id="search" class="wide"></form>
(4)縮寫↓
p.class1.class2.class3
<p class="class1 class2 class3"></p>
2-8.自定義屬性
(1)縮寫↓
p[title="Hello world"]
<p title="Hello world"></p>
(2)縮寫↓
td[rowspan=2 colspan=3 title]
<td rowspan="2" colspan="3" title=""></td>
(3)縮寫↓
[a='value1' b="value2"]
<div a="value1" b="value2"></div>
2-9.文本:{}
(1)縮寫↓
a{Click me}
<a href=https://www.cnblogs.com/ouyangkai/p/"">Click me
(2)縮寫↓
p>{Click }+a{here}+{ to continue}
<p>Click <a href=https://www.cnblogs.com/ouyangkai/p/"">here to continue
2-10.隱式標簽
(1)縮寫↓
.class
<div class="class"></div>
(2)縮寫↓
em>.class
<em><span class="class"></span></em>
(3)縮寫↓
ul>.class
<ul>
<li class="class"></li>
</ul>
(4)縮寫↓
table>.row>.col
<table>
<tr class="row">
<td class="col"></td>
</tr>
</table>
HTML標簽語法
3-1. 所有未知的縮寫都會轉換成標簽
縮寫↓
hangge
<hangge></hangge>
3-2.基本html標簽
!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
</body>
</html>
a
<a href=https://www.cnblogs.com/ouyangkai/p/"">
a:link
<a href=https://www.cnblogs.com/ouyangkai/p/"http://">
a:mail
<a href="mailto:"></a>
link:css
<link rel="stylesheet" href=https://www.cnblogs.com/ouyangkai/p/"style.css" />
link:print
<link rel="stylesheet" href=https://www.cnblogs.com/ouyangkai/p/"print.css" media="print" />
link:favicon
<link rel="shortcut icon" type="image/x-icon" href=https://www.cnblogs.com/ouyangkai/p/"favicon.ico" />
link:touch
<link rel="apple-touch-icon" href=https://www.cnblogs.com/ouyangkai/p/"favicon.png" />
meta:utf
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
meta:win
<meta http-equiv="Content-Type" content="text/html;charset=windows-1251" />
meta:vp
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
meta:compat
<meta http-equiv="X-UA-Compatible" content="IE=7" />
script:src
<script src=https://www.cnblogs.com/ouyangkai/p/""></script>
iframe
<iframe src=https://www.cnblogs.com/ouyangkai/p/"" frameborder="0"></iframe>
form
<form action=""></form>
form:get
<form action="" method="get"></form>
inp
<input type="text" name="" id="" />
input:hidden
<input type="hidden" name="" />
input:h
<input type="hidden" name="" />
input:text, input:t
<input type="text" name="" id="" />
input:search
<input type="search" name="" id="" />
input:email
<input type="email" name="" id="" />
html:xml
<html xmlns="http://www.w3.org/1999/xhtml"></html>
CSS屬性
寬高
height: 310px;
width: 65%;
影片簡寫屬性
animation 影片名稱 持續時間 運動曲線 何時開始 播放次數 是否反方向 影片開始或結束狀態
animation: name duration timing-function delay iteration-count direction fill-mode;
背景 background
/* 背景圖片 */
background: no-repeat center/100% url("../img/index.png");
/* 背景顏色 */
background-color: #ffffff;
/*背景透明*/
background-color: hsla(0,0%,100%,.7);
浮動 float
float: left;
字體 font
/* 字體顏色 */
color: #888888;
/* 字體粗細 */
font-weight: 400;
/* 字體大小 */
font-size: 14px;
/* 文字居中 */
text-align: center;
/* 字體行內居中 */
line-height: 45px;
/*字體加深*/
text-shadow: 0 0 1px rgba(0,0,0,.3);
/*起始段落空2格*/
text-indent: 2em;
盒子邊距 margin | padding
/* 外邊距 */
margin: 60px 0 0 -40px;
/* 居中顯示 */
margin: 0 auto;
/* 向下10px */
margin-bottom: 10px;
/* 外邊距 */
padding: 15px 0 10px 12px;
透明
opacity: 0.9;
邊框 border
/* 邊框寬度1px 樣式 顏色 */
border: 1px solid #868686;
/* 邊框邊角弧度 */
border-radius: 5px;
/* 邊框下劃線 */
border-bottom: 1px solid #edeef0;
/* 樣式 1px */
border-style: ridge;
border-width: 1px;
背景3d邊框
-webkit-box-sizing: border-box!important;
box-sizing: border-box!important;
overflow: hidden!important;
border-radius: 2px!important;
-webkit-box-shadow: 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12)!important;
box-shadow: 0 3px 1px -2px rgba(0,0,0,.2), 0 2px 2px 0 rgba(0,0,0,.14), 0 1px 5px 0 rgba(0,0,0,.12)!important;
2D影片
影片效果
/* 影片效果 */
transition: all 5s;
影片觸發
:hover {
/* 放大2倍 */
/* transform: scale(2, 2); */
/* 旋轉 */
transform: rotate(720deg);
/* 上移 */
transform: translateY(-3px);
}
box-shadow: 0px 0px 2px 2px rgba(0, 0, 0, 0.3);
transition
顏色漸變
父標簽
-webkit-transition:background-color .5s ease-in;
-moz-transition:background-color .5s ease-in;
transition:background-color .5s ease-in;
:hover{background-color:#bbb;}
3D影片
3D轉換 translate3d
transform: translate3d(0,100px,100px);
透視 perspective
/* 透視寫在被觀察元素的父盒子上面 */
perspective: 500px;
旋轉 rotate3d
transform: rotateX(45deg);
transform: rotateY();
transform: rotateZ();
/* 自定義 */
transform: rotate3d(x,y,z,deg);
/* 讓子元素保持3d立體空間環境 */
transform-style: preserve-3d;
圖片模糊
filter: blur(1px);
-webkit-filter: blur(1px); /* chrome, opera */
-ms-filter: blur(1px);
-moz-filter: blur(1px);
元素隱藏
visibility: hidden; 這個屬性只是簡單的隱藏某個元素,但是元素占用的空間任然存在;
opacity: 0;``CSS3屬性,設定0可以使一個元素完全透明;
position: absolute; 設定一個很大的 left 負值定位,使元素定位在可見區域之外;
display: none; 元素會變得不可見,并且不會再占用檔案的空間;
transform: scale(0); 將一個元素設定為縮放無限小,元素將不可見,元素原來所在的位置將被保留;
<div hidden="hidden"> HTML5屬性,效果和display:none;相同,但這個屬性用于記錄一個元素的狀態;
height: 0; 將元素高度設為 0 ,并消除邊框;
filter: blur(0); CSS3屬性,將一個元素的模糊度設定為0,從而使這個元素“消失”在頁面中;
回應式布局
開發實作
媒體查詢
百分比布局
rem布局
視口單位布局(vw/vh)
設計步驟
設定meta標簽
媒體查詢設定樣式
設定多種視圖寬度
css 樣式簡寫
4-2. 常用樣式簡寫
pos
position:relative;
t
top:;
pos:s
position:static;
pos:a
position:absolute;
pos:r
position:relative;
pos:f
position:fixed;
t
top:;
t:a
right:auto;
c
Bootstrap
container-fluid
.container-fluid 則支持全屏的流式布局,如下使用:
<div class="container-fluid">
...
</div>
自定義適應寬度
<style type="text/css">
/* 超小螢屏 */
@media (max-width:575px) {
.container-fluid{
width: 100%;
background-color: #002752;
}
} /* 小螢屏 */
@media (min-width:576px) and (max-width:767px) {
.container-fluid{
background-color: #ff5500;
width: 540px;
}
}
/* 中螢屏 */
@media (min-width:768px) and (max-width:991px) {
.container-fluid{
background-color: #5555ff;
width: 720px;
}
} /* 大螢屏 */
@media (min-width:992px) and (max-width:1199px) {
.container-fluid{
background-color: #55ff00;
width: 960px;
}
} /* 中超大螢屏 */
@media (min-width:1200px) {
.container-fluid{
background-color: #aa5500;
width: 1140px;
}
}
</style>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
回應式外部容器
它允許在指定的螢屏下定義 100%寬
如.container-sm 則只在sm螢屏下顯示100%寬,其它斷點包括.container-md、 .container-lg、 .containerxl
<div class="container-sm">100% wide until small breakpoint</div>
<div class="container-md">100% wide until medium breakpoint</div>
<div class="container-lg">100% wide until large breakpoint</div>
<div class="container-xl">100% wide until extra large breakpoint</div>
分割線
<div class="dropdown-divider"></div>
基于FlexBox布局
一個簡明的Bootstrap 4框架(只區分pc與手機并基于FlexBox布局):
<div class="container">
<div class="row">
<div class="col-sm">
</div>
</div>
</div>
Emment語法:
div.container>div.row>div.col-sm
全柵格定義框架
<div class="container">
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-6 col-12">
</div>
</div>
</div>
Emment語法:
div.container>div.row>div.col-xl-6.col-lg-6.col-md-6.col-sm-6.col-12+div.col-xl-6.col-lg-6.col-md-6.col-sm-6.col-12
常用的屬性
隱藏
hidden
清除邊界
clearfix
指定螢屏下顯示
visible-xs
center-block
不顯示前綴點
list-unstyled
列偏移:
.offset-md-*
文本對齊
Left aligned text.
Center aligned text.
Right aligned text.
text-capitalize 利用
text-center 居中
text-danger 加紅危險
text-hide 隱藏文字
text-info 資訊
text-justify 字體對齊(齊行——
text-left 文字左對齊
text-lowercase 小寫(僅英文)
text-muted 靜音
text-nowrap 不換行
text-primary 原生效果
text-right 文字居右
text-success 成功
text-uppercase 文字大寫(僅英文)
text-warning 警告紅色
文字樣式
柔和灰(text-muted)
、主要藍(text-primary)
、成功綠(text-secondary)
、成功紅(text-success)
、危險紅(text-danger)
、警告黃(text-warning)
、危息綠(text-info)
、黑白對比(text-dark)
背景是樣式
主要藍(bg-primary)
、成功綠(bg-secondary)
、成功紅(bg-success)
、危險紅(bg-danger)
、警告黃(bg-warning)
、危息綠(bg-info)
、黑白對比(bg-dark)
BootstrapVue
安裝
# With npm
npm install vue bootstrap-vue bootstrap
# With yarn
yarn add vue bootstrap-vue bootstrap
程式入口點注BootstrapVue:
// app.js
import Vue from 'vue'
import { BootstrapVue, IconsPlugin } from 'bootstrap-vue'
// Install BootstrapVue
Vue.use(BootstrapVue)
// Optionally install the BootstrapVue icon components plugin
Vue.use(IconsPlugin)
引入 Bootstrap 和BootstrapVue的css
// app.js
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'
行列
<b-container class="bv-example-row">
<b-row cols="1" cols-sm="2" cols-md="4" cols-lg="6">
<b-col>Column</b-col>
<b-col>Column</b-col>
<b-col>Column</b-col>
<b-col>Column</b-col>
<b-col>Column</b-col>
<b-col>Column</b-col>
</b-row>
</b-container>
<b-container>
<b-row cols="1" cols-sm="2" cols-md="3" cols-lg="5">
<b-col>
<div class="n-nav-1">
<h6>福利導航</h6>
<p>
福利導航導航利導航福利導航福利導航福利導航
</p>
</div>
</b-col>
</b-row>
</b-container>
關鍵字
<b-row> <b-col> <b-container> <b-form-row>
<b-col sm="auto"> 實體的寬度將自動為25%,
列屬性 sm, md, lg, xl表示在不同斷點處,每行可能使用12個列中要使用的列數,因此,如果在斷點sm處需要三個等寬列, 可以使用<b-col sm="4">,特殊值auto可用于占用行中剩余的可用列空間,
洗掉邊距
通過在<b-row>上設定no-gutters屬性來洗掉 <b-row> 的邊距和<b-col>的padding,
JavaScript
輸入輸出陳述句
alert(msg) 瀏覽器彈出警示框
console.log(msg) 瀏覽器列印輸出資訊
prompt(info) 瀏覽器彈出輸入框
vue
資料物件
data: {
newTodoText: '',
visitCount: 0,
hideCompletedTodos: false,
todos: [],
error: null
}
文本插值
{{ }}
v-once 執行一次性地插值
<span v-once>這個將不會改變: {{ msg }}</span>
v-html
<p>Using mustaches: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>
指令
v-if
<h1 v-if="awesome">Vue is awesome!</h1>
<h1 v-else>Oh no ??</h1>
v-show
cbbaa tfftt只是簡單地切換元素的 CSS property display,
<h1 v-show="ok">Hello!</h1>
v-for
基于一個陣列來渲染一個串列
<ul id="example-1">
<li v-for="item in items" :key="item.message">
{{ item.message }}
</li>
</ul>
var example1 = new Vue({
el: '#example-1',
data: {
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
可選的第二個引數,即當前項的索引,
<ul id="example-2">
<li v-for="(item, index) in items">
{{ parentMessage }} - {{ index }} - {{ item.message }}
</li>
</ul>
以用 of 替代 in 作為分隔符,因為它更接近 JavaScript 迭代器的語法:
<div v-for="item of items"></div>
遍歷物件
<ul id="v-for-object" class="demo">
<li v-for="value in object">
{{ value }}
</li>
</ul>
new Vue({
el: '#v-for-object',
data: {
object: {
title: 'How to do lists in Vue',
author: 'Jane Doe',
publishedAt: '2016-04-10'
}
}
})
提供第二個的引數為 property 名稱 (也就是鍵名):
<div v-for="(value, name) in object">
{{ name }}: {{ value }}
</div>
還可以用第三個引數作為索引:
<div v-for="(value, name, index) in object">
{{ index }}. {{ name }}: {{ value }}
</div>
唯一key
<div v-for="item in items" v-bind:key="item.id">
<!-- 內容 -->
</div>
使用值范圍
v-for 也可以接受整數,在這種情況下,它會把模板重復對應次數,
<div>
<span v-for="n in 10">{{ n }} </span>
</div>
在template使用
<ul>
<template v-for="item in items">
<li>{{ item.msg }}</li>
<li class="divider" role="presentation"></li>
</template>
</ul>
自定義組件上使用
<my-component v-for="item in items" :key="item.id"></my-component>
v-bind
<a v-bind:href=https://www.cnblogs.com/ouyangkai/p/"url">...
動態系結
<a v-bind:[attributeName]="url"> ... </a>
attributeName 會被作為一個運算式進行動態求值,值將會作為最終的引數來使用,例如,如果你的 Vue 實體有一個 data property attributeName,其值為 "href",那么這個系結將等價于 v-bind:href,
縮寫
<!-- 完整語法 -->
<a v-bind:href=https://www.cnblogs.com/ouyangkai/p/"url">...
...
...
v-on:click
基礎語法
<a v-on:click="doSomething">...</a>
動態的事件名系結處理函式
<a v-on:[eventName]="doSomething"> ... </a>
縮寫
<!-- 完整語法 -->
<a v-on:click="doSomething">...</a>
<!-- 縮寫 -->
<a @click="doSomething">...</a>
<!-- 動態引數的縮寫 (2.6.0+) -->
<a @[event]="doSomething"> ... </a>
事件修飾符
<!-- 阻止單擊事件繼續傳播 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再多載頁面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修飾符可以串聯 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修飾符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件監聽器時使用事件捕獲模式 -->
<!-- 即內部元素觸發的事件先在此處理,然后才交由內部元素進行處理 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只當在 event.target 是當前元素自身時觸發處理函式 -->
<!-- 即事件不是從內部元素觸發的 -->
<div v-on:click.self="doThat">...</div>
<!-- 點擊事件將只會觸發一次 -->
<a v-on:click.once="doThis"></a
<!-- 滾動事件的默認行為 (即滾動行為) 將會立即觸發 -->
<!-- 而不會等待 `onScroll` 完成 -->
<!-- 這其中包含 `event.preventDefault()` 的情況 -->
<div v-on:scroll.passive="onScroll">...</div>
按鍵修飾符
<!-- 只有在 `key` 是 `Enter` 時呼叫 `vm.submit()` -->
<input v-on:keyup.enter="submit">
.exact 修飾符
修飾符允許你控制由精確的系統修飾符組合觸發的事件
<!-- 即使 Alt 或 Shift 被一同按下時也會觸發 -->
<button v-on:click.ctrl="onClick">A</button>
<!-- 有且只有 Ctrl 被按下的時候才觸發 -->
<button v-on:click.ctrl.exact="onCtrlClick">A</button>
<!-- 沒有任何系統修飾符被按下的時候才觸發 -->
<button v-on:click.exact="onClick">A</button>
滑鼠按鈕修飾符
.left
.right
.middle
v-model
v-model 指令在表單 <input>、<textarea> 及 <select> 元素上創建雙向資料系結,它會根據控制元件型別自動選取正確的方法來更新元素,
文本
<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>
多行文本
<span>Multiline message is:</span>
<p style="white-space: pre-line;">{{ message }}</p>
<br>
<textarea v-model="message" placeholder="add multiple lines"></textarea>
復選框
單個復選框,系結到布林值:
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>
多個復選框,系結到同一個陣列:
<div id='example-3'>
<input type="checkbox" id="jack" value=https://www.cnblogs.com/ouyangkai/p/"Jack" v-model="checkedNames">
Jack
John
Mike
Checked names: {{ checkedNames }}