Создание собственного элемента
https://yocton.ru/html-elements/global-attributes/slot
by yocton
HTML
<script src="//code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<link rel="stylesheet" href="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<script src="//stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Модальное окно</title>
</head>
<body>
<template id="modal-template">
<style>
:host {
display: block;
}
.modal {
position: relative;
z-index: 1;
top: auto;
right: auto;
bottom: auto;
left: auto;
display: block;
padding: 1em;
background: #fff;
border: 1px solid #ccc;
}
</style>
<div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<slot name="modal-header"></slot>
</div>
<div class="modal-body">
<slot name="modal-body"></slot>
</div>
<div class="modal-footer">
<slot name="modal-footer"></slot>
</div>
</div>
</div>
</div>
</template>
<div id="app">
<!-- Используем наш новый элемент -->
<ui-modal>
<div slot="modal-header">
<h5 class="modal-title">Заголовок для модального окна</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div slot="modal-body">
<p>Здесь находится содержимое модального окна.</p>
</div>
<div slot="modal-footer">
<button type="button" class="btn btn-primary">Сохранить</button>
<button...
CSS
body {
padding: 3em;
background: #fff;
}
JavaScript
class Modal extends HTMLElement {
static get is() {
return 'ui-modal'
}
constructor() {
super();
var template = document.getElementById('modal-template').content;
var shadowRoot = this.
attachShadow({
mode: 'open'
})
.appendChild(template.cloneNode(true));
}
}
customElements.define(Modal.is, Modal);