高山仰止,景行行止,虽不能至,然心向往之 2021-10-17 22:16 采纳率: 0%
浏览 92
已结题

HTML+CSS(不使用JavaScript)导航栏、下拉菜单的固定与缩放问题

目前纯HTML制作导航栏以及下拉列表,B站和度娘也有一些教程,不过大部分是通过无序列表嵌套,调节hover扫过前后的margin距离实现下拉效果。

经过一顿折腾,使用dl和dd标签,终于出来了一些效果:

img

下面是一些代码,由于是打来测试用,里面很多代码多余没用,结构也很乱,抱歉,名字也用的拼音(其实就是英语不好o(╥﹏╥)o)

HTML代码:

<div class="nav">
    <div class="list">
        <ul class="nav_dl_dd">
            <li class="daohang"><a href="#"><strong>首页</strong></a>
            </li>
            <li class="daohang2"><a href="#"><strong></strong></a>
                <dl class="fix">
                    <dd><a href="#">1.1</a></dd>
                    <dd><a href="#">1.2</a></dd>
                    <dd><a href="#">1.3</a></dd>
                    <dd><a href="#">1.4</a></dd>
                    <dd><a href="#">1.5</a></dd>
                    <dd><a href="#">1.6</a></dd>
                    <dd><a href="#">1.7</a></dd>
                </dl>
            </li>
            <li class="daohang2"><a href="#"><strong></strong></a>
                <dl class="fix">
                    <dd><a href="#">2.1</a></dd>
                    <dd><a href="#">2.2</a></dd>
                    <dd><a href="#">2.3</a></dd>
                    <dd><a href="#">2.4</a></dd>
                </dl>
            </li>

            <li class="daohang2"><a href="#"><strong></strong></a>
                <dl class="fix">
                    <dd><a href="#">3.1</a></dd>
                    <dd><a href="#">3.2</a></dd>
                    <dd><a href="#">3.3</a></dd>
                </dl>
            </li>
        </ul>
    </div>
</div>

CSS代码:

* {
    margin: 0;
    padding: 0;
}

body {
    background: url("imge/Mac.jpg");
    background-size: cover;
    background-attachment: fixed;

}

.nav {
    /*border: 1px solid #FF0004;*/
    z-index: 998;
    /*width: 2000px;*/
    /*height: 60px;*/
    width: 100%;
    height: 5.5%;
    position: fixed;
    top: 0;
    /*top: 0px;*/
    background: rgba(255, 255, 255, 0.4);
    backdrop-filter: blur(18px);
    box-shadow: 0px 10px 50px -10px rgba(0, 0, 0, 0.5);
}


.list {
    /*border: 1px solid #FF0004;*/
    float: left;
    position: fixed;
}

.list ul {
    /*width:100%;*/
    /*height: 100%;*/
    /*border: 1px solid #00b9ff;*/
    list-style: none;
    margin-left: 55px;
}

.list ul li {
    /*border: 1px solid #FF0004;*/
    width: 140px;
    height: 50px;
    font-size: 18px;
    position: relative;
    float: left;
    border-radius: 5px 5px 5px 5px;
}

.list a {
    /*border: 1px solid #FF0004;*/
    width: 100%;
    display: block;
    text-decoration: none;
    color: #000000;
    /*  font-size: 25px;*/
    line-height: 50px;
    text-align: center;
}

.list ul li dl a:hover {
    color: #006fff;
    font-size: 25px;
    /*border-top: 1px solid #a9a9a9;*/
    /*border-bottom: 1px solid #a9a9a9;*/
    -webkit-box-sizing: border-box;
    background: rgba(255, 255, 255, 0.9);
    border-radius: 5px 5px 5px 5px;
}

.list dl {
    /*border: 1px solid #FF0004;*/
    width: 100%;
    left: 0;
    display: none;
    position: absolute;
}

.list dl dd {
    width: 100%;
    background: rgba(0, 0, 0, 0.6);
    /*height:80px;*/
    text-align: center;
    border-radius: 5px 5px 5px 5px;
}

.list dl dd a {
    width: 100%;
    height: 100%;
    display: block;
    color: #ffffff;
    font-size: 18px;
    line-height: 50px;
    margin-top: 1px;
}

.list ul :hover dl {
    display: block;
    transition-duration: 10s;
}

.list ul dl:hover dd {
    background: rgba(0, 0, 0, 0.8);
    transition-duration: 10s;
    /*color: #FFFFFF;*/
    font-size: 35px;
}

.daohang:hover {
    height: 100%;
    background: rgba(255, 255, 255, 0.3);
    backdrop-filter: blur(18px);
    font-size: 25px;
    color: #FFFFFF;
}

.daohang2:hover {
    height: 100%;
    background: rgba(255, 255, 255, 0.3);
    backdrop-filter: blur(18px);
    font-size: 25px;
    color: #FFFFFF;
}

.imge1 {
    float: left;
    margin-top: 15px;
    margin-left: 15px;
    margin-bottom: 10px;
}

总的来说效果还行,根据上面的代码,给导航栏设置了固定定位,让他一直固定在屏幕上,可以不随屏幕缩放和滚动屏幕而改变大小导致排版混乱。

img

但是,虽然导航栏不变,但是里面的列表却会因为缩放而

img


img

如果添加div,倒是可以随着盒子的大小而变化而正常缩放,不过这样导航栏就无法一直停留在屏幕中,会随着屏幕滚动,目前大部分网页的导航栏也确实随着屏幕滚动的,大家有什么好办法能让里面的内容不随缩放错乱吗?

  • 写回答

1条回答 默认 最新

  • 仰望星空的代码 博客专家认证 2021-10-18 10:27
    关注

    使导航不随页面滚动:{position:fixed;top:0;width:100%;}

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月29日
  • 创建了问题 10月17日

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝