zoukankan      html  css  js  c++  java
  • 蒙版下层的内容会随滚屏事件滚动的解决方案

    这个功能在移动端会使用频繁,尤其是在模拟一些选中类交互中。本文以 ReactJS 为例书写,其他框架核心理念一致。主要在于设置 body 的 overflow 属性为 hidden 即可。
    设置蒙版的 CSS 代码如下:

    .wrapper-content {
      position: fixed;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      background-color: #000000;
      opacity: .4;
      color: #ffffff;
    }
    

    页面显示和事件的代码如下:

    import React, { Component } from 'react'
    import './style.css'
    
    export default class Mask extends Component{
      constructor(props) {
        super(props)
        this.state = {
          mask: false
        }
      }
    
      changeMask = () => {
        this.setState({
          mask: true
        })
        var body = document.querySelector('body')
        body.style.overflow = 'hidden'
      }
    
      handleHiddenMask = () => {
        this.setState({
          mask: false
        })
        var body = document.querySelector('body')
        body.style.overflow = ''
      }
    
      render() {
        return (
          <div className = 'wrapper'>
            <div className = 'wrapper-main'>
              <div onClick = {this.changeMask}>open mask</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
              <div>content</div>
            </div>
            <div className = {this.state.mask ? 'wrapper-content' : ''}>
                <div onClick = {this.handleHiddenMask}>close</div>
            </div>
          </div>
        )
      }
    }
    
    
  • 相关阅读:
    UIPath RPA 自动化脚本 机器人从入门到精通
    [转]面向物联网的21个开源软件项目
    数字化转型
    区块链项目大全-项目源码链接收藏
    SAP HANA学习资料大全 Simple Finane + Simple Logisitic [非常完善的学习资料汇总]
    今日头条技术架构分析
    巴菲特价值投资的六项法则
    文档大师 2016 :在电脑和头脑中快速找到文档的文件管理软件
    文档大师 在Win10 IE11下,文档集画面无法正常显示Word等Office文档的解决方法
    人脑+电脑:通过文档管理让个人能力大大拓展
  • 原文地址:https://www.cnblogs.com/zhourongcode/p/11154706.html
Copyright © 2011-2022 走看看