代码之家  ›  专栏  ›  技术社区  ›  strumpy_strudel

文本没有与父元素一起转换,它只是立即弹出

  •  0
  • strumpy_strudel  · 技术社区  · 7 年前

    如果服务器响应错误消息,我会弹出一个栏。

    例如,如果他们输入了错误的凭据来登录,则 transition: height 0.5s ease-in 来自服务器的错误消息指出凭据不正确。

    在一些人的帮助下,我确实让酒吧过渡到了工作状态。我现在遇到的问题是在转换完成之前文本呈现,所以看起来很奇怪。以为它会继承父母的风格,但没有。无法识别转换/动画。

    这是我的组件:

    renderMessage() {
        const { errors } = this.props;
    
        if (errors) {
            return (
                <div 
                    className={
                        errors
                        ?
                        'hide-error-message show-error-message'
                        :
                        'hide-error-message'
                    }
                >
                    <i 
                        onClick={ this.closeMessage } 
                        className='float-right fas fa-times'>
                    </i>
                    <div
                        dangerouslySetInnerHTML={{ __html: errors.non_field_errors[0] }}>
                    </div>
                </div>
            );
        }
    }
    
    render() {
        const { errors } = this.props;
    
        return (
            <div id='error-messages'>
                <div 
                    className={ 
                        errors 
                        ? 
                        'hide-error-messages-bar show-error-messages-bar' 
                        : 
                        'hide-error-messages-bar' 
                    }>
                    <Container>{ this.renderMessage() }</Container>
                </div>
            </div>
        )
    }
    

    这是sass的最新版本。尝试了其他20件事:

    #error-messages {
        position: relative; 
        top: 105px;
        background-color: $croner-red;        
        color: #FFF;
    
        .hide-error-messages-bar {
            visibility: hidden;
            height: 0;
            transition: height 0.5s ease-out;        
        }
    
        .hide-error-messages-bar.show-error-messages-bar {
            visibility: visible;
            transition: height 0.5s ease-in;
            height: 65px;
            width: 100%;
    
            .hide-error-message {
                opacity: 0;
                height: 0;
                padding: 8px 0;
                transition: opacity 2s ease-in;                        
            }
    
            .hide-error-message.show-error-message {
                opacity: 1;
    
                i {
                    cursor: pointer;
                }
            }
        }
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Jason McFarlane    7 年前

    切换高度转换 transform: translateY() . 由于通知栏不在流中,不会影响任何其他元素,只需将其在y访问上下移动即可。你可以保持你的div的高度,使文本不会改变,变得疯狂。

    这是一个代码笔,用按钮切换类 https://codepen.io/anon/pen/oyZPJQ

       .hide-error-messages-bar {
            transform: translateY(-100vh);
            transition: transform 0.5s ease-out;        
        }
    
        .hide-error-messages-bar.show-error-messages-bar {
            transform: translateY(5vh);
            width: 100%;
       }