javascript - VueJs Nuxt 中的 root () 元素样式
问题描述
我有这个 vue 组件,当用户单击轮播上的图像时,它会在创建后显示全尺寸图像。当它打开时,用户应该不能滚动页面。目前我实现这一点的方式是直接使用 overflow:hidden; 设置 documentElement 的样式。或溢出:自动;当组件被创建或销毁时。
我的问题是这是否可以接受,或者是否有一种方法可以使用虚拟 DOM。我知道直接干扰 DOM 通常是不好的做法,但我似乎找不到让它工作的方法。我试过使用 this.$root.$el.style 但这似乎也不起作用。
<script>
export default {
props: ['imageSrc'],
created() {
document.documentElement.style.overflow = 'hidden';
},
beforeDestroy() {
document.documentElement.style.overflow = 'auto';
},
};
</script>
解决方案
您是否考虑过使用 CSS 代替?您可以创建一个 100vh 和 vw 的 div,绝对定位在所有内容之上(使用位置:固定以防止滚动)。将完整尺寸的 img 元素放置在内部,并将其显示设置为隐藏。将轮播中的图像与更新完整尺寸的 img src 并将 div 的显示从隐藏更改为块的单击方法联系起来。确保将按钮或单击事件添加到完整大小的图像,以便用户可以将显示切换回隐藏。
推荐阅读
- r - R - 数据框 - 其他列中的每 x 行新数字
- python - 如何从图像模型中获取图像到 Django 的主页?
- javascript - Heroku + Node“错误:找不到模块'../config.js'需要堆栈:-/app/util/check-auth.js,-/app/graphql/resolvers/posts.js,-/app/index. js
- firebase - Firestore 集合链接
- c++ - 为什么静态变量没有被修改
- javascript - 当用户在浏览器中单击 BackButton 时如何传递参数
- node.js - npx create-strapi-app 找不到 package.json
- r - R Maply to unzip - 文件路径更改
- android - 如何从 GeoJSON 或 mapboxId 在 Mapbox Android 中突出显示 LineString(或多边形)
- linux - 如何使用 awk 命令在日志文件中添加“日期”作为列