如何更改警告框的样式?

IT技术 javascript css
2021-02-08 12:21:04

我需要更改警告框中“确定”按钮的样式

<head>
    <script type="text/javascript">
        function show_alert() {
            alert("Hello! I am an alert box!");
        }
    </script>
</head>
<body>
    <input type="button" onclick="show_alert()" value="Show alert box" />
</body>

6个回答

警报框是一个系统对象,不受 CSS 约束。要完成这种风格的事情,您需要创建一个 HTML 元素并模仿其alert()功能。jQuery UI Dialogue 为您做了很多工作,基本上按照我的描述工作:Link

处理该问题的一个好方法是在事件处理程序中包含 event.preventDefault()。
2021-03-21 12:21:04
注意,因为 jQueryUI 模态框不会暂停 Jquery 代码执行以等待用户点击(就像警报一样)。
2021-03-26 12:21:04
您可以使用纯 js 创建警报stackoverflow.com/a/30498126/4696809
2021-04-02 12:21:04

我使用SweetAlert它很棒,您将获得许多自定义选项以及所有回调

截屏

swal("Here's a message!", "It's pretty, isn't it?");

在此处输入图片说明

我们可以在纯 javascript 和 HTML 中使用它吗?
2021-03-14 12:21:04
sweetalert 有太多问题 + 上次发布是 2 年前,请查看 Sweetalert 2 - sweetalert2.github.io
2021-03-19 12:21:04

我尝试使用脚本来使用 alert()框样式。java-script这里我使用了那些 JS 和 CSS。

请参阅此编码 JS 功能。

var ALERT_TITLE = "Oops!";
var ALERT_BUTTON_TEXT = "Ok";

if(document.getElementById) {
    window.alert = function(txt) {
        createCustomAlert(txt);
    }
}

function createCustomAlert(txt) {
    d = document;

    if(d.getElementById("modalContainer")) return;

    mObj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div"));
    mObj.id = "modalContainer";
    mObj.style.height = d.documentElement.scrollHeight + "px";

    alertObj = mObj.appendChild(d.createElement("div"));
    alertObj.id = "alertBox";
    if(d.all && !window.opera) alertObj.style.top = document.documentElement.scrollTop + "px";
    alertObj.style.left = (d.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px";
    alertObj.style.visiblity="visible";

    h1 = alertObj.appendChild(d.createElement("h1"));
    h1.appendChild(d.createTextNode(ALERT_TITLE));

    msg = alertObj.appendChild(d.createElement("p"));
    //msg.appendChild(d.createTextNode(txt));
    msg.innerHTML = txt;

    btn = alertObj.appendChild(d.createElement("a"));
    btn.id = "closeBtn";
    btn.appendChild(d.createTextNode(ALERT_BUTTON_TEXT));
    btn.href = "#";
    btn.focus();
    btn.onclick = function() { removeCustomAlert();return false; }

    alertObj.style.display = "block";

}

function removeCustomAlert() {
    document.getElementsByTagName("body")[0].removeChild(document.getElementById("modalContainer"));
}

CSS for alert()Box

#modalContainer {
    background-color:rgba(0, 0, 0, 0.3);
    position:absolute;
    width:100%;
    height:100%;
    top:0px;
    left:0px;
    z-index:10000;
    background-image:url(tp.png); /* required by MSIE to prevent actions on lower z-index elements */
}

#alertBox {
    position:relative;
    width:300px;
    min-height:100px;
    margin-top:50px;
    border:1px solid #666;
    background-color:#fff;
    background-repeat:no-repeat;
    background-position:20px 30px;
}

#modalContainer > #alertBox {
    position:fixed;
}

#alertBox h1 {
    margin:0;
    font:bold 0.9em verdana,arial;
    background-color:#3073BB;
    color:#FFF;
    border-bottom:1px solid #000;
    padding:2px 0 2px 5px;
}

#alertBox p {
    font:0.7em verdana,arial;
    height:50px;
    padding-left:5px;
    margin-left:55px;
}

#alertBox #closeBtn {
    display:block;
    position:relative;
    margin:5px auto;
    padding:7px;
    border:0 none;
    width:70px;
    font:0.7em verdana,arial;
    text-transform:uppercase;
    text-align:center;
    color:#FFF;
    background-color:#357EBD;
    border-radius: 3px;
    text-decoration:none;
}

/* unrelated styles */

#mContainer {
    position:relative;
    width:600px;
    margin:auto;
    padding:5px;
    border-top:2px solid #000;
    border-bottom:2px solid #000;
    font:0.7em verdana,arial;
}

h1,h2 {
    margin:0;
    padding:4px;
    font:bold 1.5em verdana;
    border-bottom:1px solid #000;
}

code {
    font-size:1.2em;
    color:#069;
}

#credits {
    position:relative;
    margin:25px auto 0px auto;
    width:350px; 
    font:0.7em verdana;
    border-top:1px solid #000;
    border-bottom:1px solid #000;
    height:90px;
    padding-top:4px;
}

#credits img {
    float:left;
    margin:5px 10px 5px 0px;
    border:1px solid #000000;
    width:80px;
    height:79px;
}

.important {
    background-color:#F5FCC8;
    padding:2px;
}

code span {
    color:green;
}

HTML 文件:

<input type="button" value = "Test the alert" onclick="alert('Alert this pages');" />

并查看此演示:JSFIDDLE和演示结果图像

在此处输入图片说明

答案中的自定义警报与本机警报不兼容。本机警报和提示是阻塞等待。
2021-03-12 12:21:04
但这是自定义警报,而不是原始浏览器警报框的样式。有什么窍门,我们还缺吗?
2021-03-17 12:21:04
我怎样才能为确认框制作它?
2021-03-28 12:21:04

不可能。如果要自定义对话框的视觉外观,则需要使用基于 JS 的解决方案,例如jQuery.UI 对话框

您需要像这样创建自己的警报框:

function jAlert(text, customokay){
	document.getElementById('jAlert_content').innerHTML = text;
    document.getElementById('jAlert_ok').innerHTML = customokay;
    document.body.style.backgroundColor = "gray";
    document.body.style.cursor="wait";
}



jAlert("Stop! Stop!", "<b>Okay!</b>");
#jAlert_table, #jAlert_th, #jAlert_td{
    border: 2px solid blue;
    background-color:lightblue;
    border-collapse: collapse;
    width=100px;
}

#jAlert_th, #jAlert_td{
    padding:5px;
    padding-right:10px;
    padding-left:10px;
}

#jAlert{
    /* Position fixed */
    position:fixed;
    /* Center it! */
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -100px;
}
<p>TEXT</p>
<div id="jAlRem">
    <div id="jAlert">
        <table id="jAlert_table">
            <tr id="jAlert_tr">
                <td id="jAlert_td">  <p id="jAlert_content"></p>  </td>
                <td id="jAlert_td">  <button id='jAlert_ok'  onclick="jAlertagree()"></button>  </td>
            </tr>
        </table>
    </div>
</div>





<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>


<script>
function jAlertagree(){
    var parent = document.getElementById('jAlRem');
    var child = document.getElementById('jAlert');
    parent.removeChild(child);
    document.body.style.backgroundColor="white";
    document.body.style.cursor="default";
}
</script>

js 部分获取 HTML 中的元素来创建警报框,然后在用户单击确定后将其删除

您可以使用 jAlert("Custom Text", "Ok!");

+1尼斯样品开始,编辑width=100px;width:100px;和使用类,而不是ID,和#jAlert_th从来没有使用过,
2021-03-16 12:21:04
@a55 是的,所有有效点。我必须承认,我在大约五年前写了这篇文章,当时我还是 Web 开发的新手。
2021-03-20 12:21:04