下拉列表无法实现过度效果

来源:3-2 作业题

一拍

2020-05-18 13:13:45

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="css/media.css">
</head>

<body>
    <header class="sm-container">
        <p class="head-title">imooc</p>
        <span class="btn-bar" id="btn"></span>
        <nav class="nav-item" id="nav-item">
            <ul>
                <li><a href="###" class="nav-link">前端</a></li>
                <li><a href="###" class="nav-link">java</a></li>
                <li><a href="###" class="nav-link">ios</a></li>
                <li><a href="###" class="nav-link">Andriod</a></li>
                <li><a href="###" class="nav-link">php</a></li>
            </ul>
        </nav>
    </header>
</body>
<script src="https://s0.pstatp.com/cdn/expire-1-M/jquery/3.4.0/jquery.min.js"></script>
<script src="js/index.js"></script>
</html>
*{
    margin: 0;
    padding: 0;
}
html{
    font-size: 32px;
    margin: 0; 
}

ul li{
    list-style-type:none;
    
}



.sm-container {
    width: 100%;
    height: 1.5rem;
    background-color: #B2C5CC;
    color: #fff;
    position: relative;
}

/* 默认显示手机端 */
.head-title {
    height: 1.5rem;
    line-height: 1.5rem;
    text-align: center;
    font-size: 0.5rem;
    z-index: 10;
}
#btn {
    position: absolute;
    top: 0;
    right: 20px;
    bottom: 0;
    margin: auto;
    width: 0.5rem;
    height: 0.5rem;
    border: 2px solid red;
}
.nav-item {
    z-index: 1;
    position: absolute;
    top: 1.5rem;
    height: 0;
    width: 100%;
    overflow: hidden;
    text-align: center;
    background: #888;
    transform: height 0.5s;
    -webkit-transform: height 0.5s;
    -moz-transform: height 0.5s;
    -ms-transform: height 0.5s;
    -o-transform: height 0.5s;
}
.nav-item li a {
    color: #fff;
    display: block;
    line-height: 1rem;
    font-size: 0.4rem;
    border-bottom: 1px solid #eee;
}

@media (min-width: 768px) {
    .head-title,
    #btn {
        display: none;
    }
    .nav-item {
        position: static;
        background: none;
        height: 1.5rem;
        line-height: 1.5rem;
    }
    .nav-item li {
        display: inline-block;
        padding: 0 20px;
    }
    .nav-item ul a {
        border: none;
        line-height: 1.5rem;
        font-size: 0.6rem;
        color: #333;
    }
}
var isdown=false;
$('#btn').click(function(){
    if(!isdown){
        $('.nav-item').css('height','auto');
        isdown=true;
    }else{
        $('.nav-item').css('height','0');
        isdown=false;
    }
})

为什么这个transform: height 0.5s;  不行


写回答

1回答

好帮手慕夭夭

2020-05-18

同学你好,问题与修改如下:

1.属性用的不对,过渡应该使用transition。如下修改:

http://img.mukewang.com/climg/5ec223c70937f98104700399.jpg

2.过渡高度需要从0变化到一个具体的值,中间的变化过程才会有效果。如果使用auto,浏览器自动计算高度,此时并不会有过渡的效果,特殊记一下。如下改成具体的值:

http://img.mukewang.com/climg/5ec22407095dd47b05340087.jpg

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~


0

0 学习 · 6815 问题

查看课程