html - 悬停时在图像下方显示文本而不干扰其他元素

标签 html css

因此,我正在为一个新站点创建一个菜单,并且我正在尽最大努力使其具有移动响应能力。菜单中的每个元素都有一个图标和一个名称。当屏幕全宽时,两者都会显示,文本位于图标下方。

我已将其设置为当用户滚动链接时,文本会改变颜色并且图标的背景图像也会改变。

当屏幕变小时,文字消失,只留下图标。当前,当用户在此模式下将鼠标滑过其中一个图标时,文本将出现在下方,但它也会移动其周围的元素并将图标向上移动。我希望能够让图标在滚动时保持在相同的位置,并在不改变宽度或破坏其他图像的情况下让文本显示在下方。

我已经做了一个我希望它看起来如何的小模型,以及我当前的解决方案 here .

系统使用 Foundation,但我无法编辑任何 js,我只能在我的 css 文件和菜单的这个 HTML 部分中工作。菜单两侧有两个未显示的元素。

这是我的菜单 HTML 的一部分。

<div id="icon-menu" class="medium-9 columns">
    <div class="menu-item">
        <a href="/home">
            <div id="nav-home"></div>
            <span>Home</span>
        </a>
    </div>
    <div class="menu-item">
        <a href="/my-learning">
            <div id="nav-my-learning"></div>
            <span>My Learning</span>
        </a>
    </div>
</div>

这是我的 css,带有一个翻转示例:

#logo img{
    max-width: 60px;
    width: 100%;
}

#icon-menu{
    text-align: center;
}

.menu-item{
    display: inline-block;
    margin: 0px 15px;
}

.menu-item a{
    font-size: 0.9rem;
    color: #606060;
}

.menu-item a:hover{
    color: #803589;
    font-weight:400;
}

.menu-item div{
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
    height: 30px;
    width: 30px;
    margin-left: auto;
    margin-right: auto;
}

@media screen and (max-width: 1250px) {
    .menu-item span{
        display: none;
    }

    .menu-item div{
        height:50px;
    }

    .menu-item a:hover span{
        display: initial;
        position: relative;
    }

    .menu-item a:hover div{
        height: 30px;
    }
}

/*------Styling the Menu Hovers------*/

#nav-home{
    background-image: url("/site/img/icon_home.png");
}

.menu-item a[href="/home"]:hover #nav-home{
    background-image: url("/site/img/icon_home_purple.png");
}

您可以在 JSFiddle 查看我的代码的完整版本.

感谢所有帮助!谢谢!

最佳答案

这是我更新的 fiddle :https://jsfiddle.net/cameronjonesweb/a5rso6xy/2/

这是我做的

.menu-item设置为position:relative

在您的媒体查询中,将您的 .menu-item span 设置为此

.menu-item span {
    position: absolute;
    top: 100%;
    white-space: nowrap;
    left: 50%;
    -ms-transform: translateX(-50%);
    -webkit-transform: translateX(-50%);
    transform: translateX(-50%);
}

这会从对象流中取出 span 并将其居中放置在图标下方。

.menu-item div 中删除该高度

关于html - 悬停时在图像下方显示文本而不干扰其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33428296/

相关文章:

html - 更改 CSS 类的一部分

css - 我的边框仅与我的 div 中的 H2 元素接壤

html - 菜单栏在放大/缩小时无法正确显示

用于 Bootstrap 的表格上的 HTML 垂直文本

JavaScript 获取当前时间不工作 Firefox

java - 解决主机/端口查找的更好设计是什么

html - 如何仅使用 CSS 正确实现下拉菜单?

html - 将标签和文本框放在屏幕 CSS 的右侧

javascript onclick 函数放大文本

javascript - 将鼠标悬停在链接上以影响另一个链接