Нужно создать диалоговое окно
Всем доброго времени суток нужно создать диалоговое окно вот только проблема я читал что это делается спомощью Jquery, но я не знаю Jquery я знаю лишь простой javascript.В общем мне надо что-бы кто-нибудь мне объяснил как его сделать (диалоговое окно типа alert).Заранее благодарен.:-?
|
А разве на "простом" JavaScript нельзя создать диалоговое окно типа alert? Или нужны эффекты плавного появления и т.п.?
|
А разве на "простом" JavaScript нельзя создать эффекты плавного появления и т.п.?
|
Octane, естественно, можно, просто в вопросе прозвучало утверждение, что для создания диалогового окна обязательно нужен jQuery.
|
Цитата:
Если уж на то пошло, то вы и вопроса-то не задали. цитирую: Цитата:
при этом вы все равно его исказили, потому что в прочитанном не было написано что jQuery нужен обязательно вы это потом придумали. пожалуйста, не придумывайте лишнего - здесь серьезный форум, а не фантазерский б) раз уж вы непременно хотите создать диалоговое окно с обязательным применением JQuery, то вот вам заготовка:
<script src="jquery.js" />
<script>
if(jQuery) {
//тут код диалогового окна на чистом JavaScript
}
</script>
|
Чет начал писать, хотел с CSS-анимацией поиграться, потом лень стало… короче вот примерно так делается без jQuery:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>…</title>
<style>
.alert .alert-shadow {
position: fixed;
top: 0;
width: 100%;
height: 100%;
left: 0;
background: #000;
opacity: 0.5;
filter: alpha(opacity=50);
}
.alert .alert-dialog {
position: fixed;
top: 30%;
left: 50%;
width: 300px;
margin-left: -150px;
padding: 10px 0;
background: #fff;
border: 1px solid #000;
}
.alert .alert-text {
padding: 10px;
}
.alert .alert-controls {
text-align: center;
}
</style>
</head>
<body>
<script>
function Alert(text) {
this._create(text);
}
Alert.prototype = {
constructor: Alert,
html: [
'<div class="alert">',
'<div class="alert-shadow"></div>',
'<div class="alert-dialog">',
'<div class="alert-text">',
'{TEXT}',
'</div>',
'<div class="alert-controls">',
'<button>OK</button>',
'</div>',
'</div>',
'</div>'
].join(""),
_rootElement: null,
_create: function (text) {
var node = document.createElement("div");
node.innerHTML = this.html.replace("{TEXT}", text);
this._rootElement = node.firstChild;
this._addEvents();
},
_addEvents: function () {
var thisAlert = this;
this._rootElement.getElementsByTagName("button")[0].onclick = function () {
thisAlert.close();
};
},
show: function () {
document.body.appendChild(this._rootElement);
},
close: function () {
document.body.removeChild(this._rootElement);
}
};
</script>
<button onclick="new Alert('Работает!').show();">Show</button>
</body>
</html>
IE7+ из-за position:fixed |
Цитата:
|
так удобнее
|
Раед, уточню Ваш пост :
html:
'<div class="alert">\
<div class="alert-shadow"></div>\
<div class="alert-dialog">\
<div class="alert-text">\
{TEXT}\
</div>\
<div class="alert-controls">\
<button>OK</button>\
</div>\
</div>\
</div>',
так даже символов меньше. |
мне бы не дали покоя лишние отступы
![]() |
спасибо Octane я хотел реально что-то типа такого:)
|
мне дополнительно понадобилась возможность рекурсивного вызова и автоматическая подгонка ширины и выравнивание по центру. По этому немного переделал код Octan'а
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>…</title>
<style>
body{
padding:10px;
margin:0px;
}
.shadow {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
opacity: 0.3;
}
.common_dialog {
position: fixed;
left: 50%; /*по горизонтали*/
transform: translateX(-50%);
max-width: 95%; /*по вертикали*/
top: 5%;
box-sizing: border-box; /*что бы padding не влиял на высоту*/
max-height: 90%;
overflow : auto; /*полосы прокрутки*/
background: #fff;
border: 1px solid #000;
padding: 10px;
}
</style>
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
</head>
<body>
<script>
function Alert() {
this._$base = $('<div><div class="shadow"></div></div>');
}
Alert.prototype = {
constructor: Alert,
show: function ($element) {
$element.addClass("common_dialog");
this._$base.append($element).appendTo($("body"));
},
close: function () {
this._$base.remove();
}
};
function my_open(){
var alert = new Alert;
$element = $('<div><h2>Привет</h2><p>некоторый текст Lorem ipsum dolor set amit consectetur </p><br>\
<button id="onclose">close</button>\
<button onclick="my_open()">open</button>\
</div>');
$element.find("#onclose").click(alert.close.bind(alert));
alert.show($element);
}
</script>
<button onclick="my_open()">open</button>
</body>
</html>
правда с использованием jQuery |
|
| Часовой пояс GMT +3, время: 17:40. |