js如何让confirm弹窗居中
时间: 2023-09-10 14:05:14 浏览: 290
可以使用以下 JavaScript 代码让 confirm 弹窗居中:
```javascript
function centerConfirm() {
const confirmBox = document.querySelector('.confirm');
const screenWidth = window.innerWidth;
const screenHeight = window.innerHeight;
const confirmWidth = confirmBox.offsetWidth;
const confirmHeight = confirmBox.offsetHeight;
confirmBox.style.left = (screenWidth - confirmWidth) / 2 + 'px';
confirmBox.style.top = (screenHeight - confirmHeight) / 2 + 'px';
}
window.addEventListener('resize', centerConfirm);
```
其中,`.confirm` 是你的 confirm 弹窗的类名,`centerConfirm()` 函数用于居中弹窗,`window.addEventListener('resize', centerConfirm)` 则是在窗口大小改变时重新居中弹窗。
相关问题
纯js代码如何实现点击修改密码出现弹窗
可以使用HTML、CSS和JavaScript来实现这个功能。以下是一个简单的实现方式:
HTML代码:
```
<button id="change-password-btn">修改密码</button>
<div id="change-password-modal" class="modal">
<div class="modal-content">
<span class="close">×</span>
<h2>修改密码</h2>
<form>
<label for="old-password">旧密码:</label>
<input type="password" id="old-password" name="old-password"><br><br>
<label for="new-password">新密码:</label>
<input type="password" id="new-password" name="new-password"><br><br>
<label for="confirm-password">确认密码:</label>
<input type="password" id="confirm-password" name="confirm-password"><br><br>
<input type="submit" value="提交">
</form>
</div>
</div>
```
CSS代码:
```
/* 遮罩层样式 */
.modal {
display: none; /* 默认不显示 */
position: fixed; /* 固定定位 */
z-index: 1; /* 设置层级 */
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto; /* 当内容溢出时,滚动条可见 */
background-color: rgba(0, 0, 0, 0.5); /* 背景半透明黑色 */
}
/* 弹窗样式 */
.modal-content {
background-color: #fefefe; /* 弹窗背景色 */
margin: 10% auto; /* 居中对齐 */
padding: 20px;
border: 1px solid #888;
width: 40%; /* 设置弹窗宽度 */
}
/* 关闭按钮样式 */
.close {
float: right;
font-size: 28px;
font-weight: bold;
}
/* 关闭按钮悬停样式 */
.close:hover,
.close:focus {
color: #000;
text-decoration: none;
cursor: pointer;
}
```
JavaScript代码:
```
// 获取按钮和弹窗元素
var btn = document.getElementById("change-password-btn");
var modal = document.getElementById("change-password-modal");
// 获取关闭按钮元素
var close = modal.getElementsByClassName("close")[0];
// 当用户点击按钮时,显示弹窗
btn.onclick = function() {
modal.style.display = "block";
}
// 当用户点击关闭按钮时,隐藏弹窗
close.onclick = function() {
modal.style.display = "none";
}
// 当用户点击遮罩层时,隐藏弹窗
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none";
}
}
```
上述代码实现了一个简单的点击按钮弹出修改密码弹窗的功能。其中,使用了CSS中的fixed定位和JavaScript中的事件监听功能,实现了弹窗的显示和隐藏。
this.$confirm 确认按钮添加时间限制
在使用this.$confirm方法时,要给确认按钮添加时间限制,可以使用beforeClose属性来实现。beforeClose是一个函数,它会在确认按钮被点击之前执行。你可以在这个函数中添加逻辑来判断是否满足时间限制的条件。如果不满足条件,可以通过返回false来阻止确认按钮的点击事件。下面是一个示例代码:
```javascript
this.$confirm('确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
beforeClose: (action, instance, done) => {
// 在这里添加时间限制的逻辑判断
if (满足时间限制的条件) {
done(); // 执行done函数,允许确认按钮的点击事件
} else {
done(false); // 阻止确认按钮的点击事件
}
}
}).then(() => {
// 确认按钮点击后的逻辑
// TO DO SOMETHING ...
}).catch(() => {
// 取消按钮点击后的逻辑
// TO DO SOMETHING ...
});
```
在beforeClose函数中,action参数表示按钮的行为,instance参数表示弹框实例,done参数是一个函数,用于控制弹框的关闭。如果调用done函数时传入false,表示阻止确认按钮的点击事件;如果不传入参数或传入true,表示允许确认按钮的点击事件。你可以根据需要在beforeClose函数中添加逻辑来判断是否满足时间限制的条件,并通过调用done函数来控制确认按钮的点击事件。
#### 引用[.reference_title]
- *1* [Vue的各种杂乱知识点整理(持续更新中...)](https://blog.csdn.net/zluz_/article/details/105519102)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [ElementUI MessageBox自定义弹窗大小出现不生效的问题以及scoped属性样式穿透](https://blog.csdn.net/m0_49662897/article/details/123733448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [vue中更改confirm的确定与取消按钮的位置并居中显示](https://blog.csdn.net/gmq1999/article/details/119277547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文