html - 如何禁用垂直滚动并在页面的当前位置而不是页面顶部呈现模式?
问题描述
这是我的单文件 Vue 组件,它有一个模态。
<template>
<div>
<div class="container">
<div class="sidebar">
<button class="sidebar__gradient-button" @click="setModalVisible(true)" >Open Modal</button>
</div>
</div>
<!-- Modal -->
<div v-if="modalVisible" class="modal">
<div class="modal__card">
<div class="modal__card__container">
...
</div>
<div class="modal__close-button" @click="setModalVisible(false)">×</div>
</div>
</div>
<!-- Modal -->
<!-- Modal Overlay -->
<div v-if="modalVisible" class="overlay" />
<!-- Modal Overlay -->
</div>
</template>
<script>
export default {
data() {
return {
modalVisible: false
};
},
methods: {
setModalVisible: function(val) {
console.log(val);
return (this.modalVisible = val);
}
}
};
</script>
<style lang="scss">
@import "../../sass/app.scss";
</style>
在较小的屏幕上,模式打开按钮不在页面顶部,但是,模式和覆盖呈现在页面顶部。
我想做两件事:
- 禁用垂直滚动
- 在页面上的当前位置渲染模式和覆盖(我不想将滚动捕捉到顶部,我是反 jQuery :D)
这是 Sass 中模态的样式:
.modal {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
display: flex;
justify-content: center;
text-align: center;
margin-top: 130px;
@media #{$breakpoint-sm} {
margin-top: 0;
align-items: center;
@media #{$breakpoint-md} {
}
}
}
.modal__card {
z-index: 1000;
height: 272px;
width: 355px;
box-shadow: 0px 0px 60px rgba(0, 0, 0, 0.5);
background: white;
display: flex;
flex-direction: column;
align-items: center;
@media #{$breakpoint-sm} {
height: 310px;
width: 570px;
@media #{$breakpoint-md} {
}
}
}
.overlay {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
background-color: #262626;
opacity: 0.8;
mix-blend-mode: normal;
}
请协助。我想“顶部”属性需要以某种方式动态设置。感谢您的时间。
解决方案
您可以在模态打开时在您的身体上添加溢出:隐藏和填充,以使用此功能替换滚动条宽度
function getScrollbarWidth() {
return window.innerWidth - document.documentElement.clientWidth;
}
推荐阅读
- node.js - 如何在 Angular/Expressjs 中处理 404 异常处理
- javascript - 有没有办法在网页中声明所有 javascript http 请求必须只针对同一主机?
- docker - Bitbucket 找不到来自 hub.docker.com 的图像
- api - 如何处理来自 Dio post call 的错误信息?
- r - 等待未来在 Shiny 中结合进度条完成
- android - 按下“ENTER”时无法将焦点设置到下一个编辑文本
- javascript - 为什么我从 MVC 控制器下载的文件返回 HTTP 404
- python - 在 pandas.DataFrame.plot() 中格式化刻度标签而不导入 matplotlib
- python - 当我使用 venv 时,Tkinter 字体变得像素化
- python - 将列转换为纯文本熊猫