【问题标题】:Div `100%` height with `40px` bottom marginDiv `100%` 高度和 `40px` 下边距
【发布时间】:2019-11-18 18:38:48
【问题描述】:

我知道之前有人问过类似的问题。

但它有点不同,因为它涉及css transitions

http://jsfiddle.net/fariskassim/rWNJN/4/

.panel{

width:inherit;
height: 0%;
display:block;
position: absolute;

background: #000;
opacity:0;
z-index: 2;

margin-top: 40px;
margin-right: 40px;
margin-left: 40px;
margin-bottom: 40px;

bottom:0;
top:0;
left:0;
right:0;

-webkit-transition: all .8s ease-in-out;
-moz-transition: all .8s ease-in-out;
-o-transition: all .8s ease-in-out;
transition: all .8s ease-in-out;

}

当盒子打开时,

我试图让绿色框在浏览器周边的所有侧面都有一个40px,我已经设法为左/右和顶部做到了,但底部是一个问题。

知道如何解决这个问题吗?

编辑:同时,我仍然想要打开和关闭盒子时的擦除效果。

http://jsfiddle.net/fariskassim/rWNJN/4/

【问题讨论】:

    标签: html css transition margin padding


    【解决方案1】:

    随心所欲 + 响应高度

    .panel:target{
    
        background-color: rgba(226, 229, 16, 0.8);
        opacity:100;
        height: auto;
    
        width:inherit;
        display:block;
    
        margin-top: 40px;
        margin-right: 40px;
        margin-left: 40px;
        margin-bottom:40px;
        bottom:0;
        top:0;
        left:0;
        right:0;
    }
    

    auto adjust demo

    【讨论】:

    • 嗯,但它几乎搞砸了擦拭效果不是吗?
    • 是的,因为height:auto 在关键帧动画发生之前首先测量浏览器高度。我已经完善了小提琴以进行正确对齐。
    • 啊,好吧,通过稍微弄乱另一个答案,让事情开始运作。非常感谢。
    【解决方案2】:

    那是因为你在.panel:target中给了height:100%。去掉就好了。

    .panel:target{
    
        background-color: rgba(226, 229, 16, 0.8);
        opacity:100;
    
        width:inherit;
        display:block;
    
        margin-top: 40px;
        margin-right: 40px;
        margin-left: 40px;
    
        bottom:0;
        top:0;
        left:0;
        right:0;
    }
    

    DEMO

    【讨论】: