悬停背景显示不正确?

Posted

技术标签:

【中文标题】悬停背景显示不正确?【英文标题】:Hover background not showing correctly? 【发布时间】:2014-05-07 19:15:30 【问题描述】:

我想实现这个:

这是我实现的:LINK

当您将鼠标悬停在导航链接上时,应该会出现底部带有蓝色边框的白色背景。它看起来不正确。为什么会这样?

标记:

<header>
    <div>
        <h1>CertsPlan</h1>
        <section>
            <ul>
                <li><a href="javascript:void(0)">+ All Vendors</a></li>
                <li>
                    <article id="header-cart">
                        <img src="img/cart-icon.png" > 000
                    </article>
                </li>
                <li>
                    <article id="header-search">
                            <form action="#">
                              <input type="text" name="search" value="Exam Code">
                            </form>
                      </article>
                </li>
                <li><a href="javascript:void(0)">Sign In/Register</a></li>
            </ul>
        </section>
        <nav>
            <ul>
                <li><a href="index.html"><img src="img/home.png" ></a></li>
                <li><a href="javascript:void(0)">Bundle</a></li>
                <li><a href="javascript:void(0)">Faqs</a></li>
                <li><a href="javascript:void(0)">Contact Us</a></li>
            </ul>
        </nav>
    </div>
</header>

CSS:

/* Global Styles */
body 
    border-top: 2px solid #ffffff;
    background: #ffffff;
    font-family: 'Arial', sans-serif;
    color: #57616a;


p 
    margin: 5px 0;
    line-height: 25px;


strong 
    font-weight: bold;


/* Section Styles */

/* Header */
header 
    width:auto;
    margin: 2 auto 0 auto;
    background-color: #f7f7f7;
    border-bottom: solid 5px #dedede;


header div 
    width:auto;
    max-width:1040px;
    margin: auto;
    overflow: hidden;


header h1 
    font-size: 30px;
    font-weight: 400;
    color: #2a323a;
    font-family: 'PT Sans', sans-serif;
    vertical-align: middle;
    margin-top: 30px;
    margin-bottom: 25px;
    float:left;



/* Navigation */
nav 
    float:right;
    margin:none;


header ul 
    list-style:none;
    margin: 0;
    overflow: hidden;


nav ul li 
  display: block;
  float: left;
  margin-top: 38px;
  margin-bottom: 35px;


nav ul li a 
  font-family: 'PT Sans', sans-serif;
  text-transform: uppercase;
  font-size: 14px;
  font-weight: 400;
  color: #2a323a;
  padding: 38px 20px 35px 20px;
  text-decoration:none;


nav ul li a:hover 
    background-color: #ffffff;
    border-bottom: solid 5px #00acdd;


ul li a:active 
    background-color: #ffffff; 
    border-bottom: solid 5px #00acdd !important;


/* Header top right area */

header section 
    float:right;


header section li 
    display:block;
    float:right;
    margin: 37px 0px 28px 7px;


header section a 
    padding: 10px;
    background: #31bbe2;
    font-family: 'PT Sans', sans-serif;
    font-size: 12px;
    font-weight: 400;
    color: #ffffff;
    text-decoration:none;
    border-radius: 5px;

【问题讨论】:

【参考方案1】:

您在两个父元素上有overflow: hidden,它隐藏了边框之间的所有内容:(图像上的蓝色)a 标签上的蓝色边框超出了父级的边框。

解决办法如下:

    应从header div 中删除overflow: hidden,并添加min-height: 89px。 也从header ul 中删除overflow: hidden。 在nav ul li a 中将padding 更改为:38px 20px 33px

就是这样。

编辑:

如果你想让它在调整浏览器大小时也能正常工作,而不是像这样在nav 之后添加div

<nav>
   [...]
</nav>
<div class="clear"></div>

clear div 的样式:

.clear 
   clear: both;
   display: table;

【讨论】:

这是一个工作示例:Code-Pen。注意:如果调整浏览器大小,这将不起作用。 完美运行。谢谢!我已经在我的链接上更新了结果。【参考方案2】:
<style>
    /* Global Styles */
body

    border-top: 2px solid #ffffff;
    background: #ffffff;
    font-family: 'Arial', sans-serif;
    color: #57616a;

p

    margin: 5px 0;
    line-height: 25px;

strong

    font-weight: bold;

/* Section Styles */

/* Header */
header

    width:auto;
    margin: 2 auto 0 auto;
    background-color: #f7f7f7;
    border-bottom: solid 5px #dedede;
     height: 93px;


header div 
    width:auto;
    max-width:60%;
    margin: auto;
    overflow: hidden;


header h1

    font-size: 30px;
    font-weight: 400;
    color: #2a323a;
    font-family: 'PT Sans', sans-serif;
    vertical-align: middle;
    margin-top: 30px;
    margin-bottom: 25px;
    float:left;



/* Navigation */
nav 
    float:right;
    margin:none;


header ul

list-style:none;
margin: 0;
overflow: hidden;


nav ul li 
  display: block;
  float: left;
  margin-top: 38px;
  margin-bottom: 35px;


nav ul li a 
  font-family: 'PT Sans', sans-serif;
  text-transform: uppercase;
  font-size: 14px;
  font-weight: 400;
  color: #2a323a;
  padding: 38px 20px 35px 20px;
  text-decoration:none;


nav ul li a:hover 
  background-color: #ffffff;
  border-bottom: solid 8px #00acdd;


ul li a:active background-color: #ffffff; border-bottom: solid 5px #00acdd !important;

/* Header top right area */

header section 
    float:right;


header section li 
    display:block;
    float:left;
    margin: 37px 0px 28px 7px;


header section a 
    padding: 10px;
    background: #31bbe2;
    font-family: 'PT Sans', sans-serif;
    font-size: 12px;
    font-weight: 400;
    color: #ffffff;
    text-decoration:none;
    border-radius: 5px;

</style>
<header>
    <div>
        <h1>CertsPlan</h1>
        <section>
            <ul>
                <li><a href="javascript:void(0)">+ All Vendors</a></li>

                <li>
                    <article id="header-search">
                            <form action="#">
                              <input type="text" name="search" value="Exam Code">
                            </form>
                      </article>
                </li>
                <li>
                    <article id="header-cart">
                        <img src="img/cart-icon.png" > 000
                    </article>
                </li>
                <li><a href="javascript:void(0)">Sign In/Register</a></li>
            </ul>
        </section>
        <nav>
            <ul>
                <li><a href="index.html"><img src="img/home.png" ></a></li>
                <li><a href="javascript:void(0)">Bundle</a></li>
                <li><a href="javascript:void(0)">Faqs</a></li>
                <li><a href="javascript:void(0)">Contact Us</a></li>
            </ul>
        </nav>
    </div>
</header>

【讨论】:

HTML 我改了李序 标题 div width:auto;最大宽度:60%;边距:自动;溢出:隐藏; 标题部分 li display:block;向左飘浮;边距:37px 0px 28px 7px; 【参考方案3】:

只需更改您的 css 类

nav ul li a

    font-family: 'PT Sans', sans-serif;
    text-transform: uppercase;
    font-size: 14px;
    font-weight: 400;
    color: #2a323a;
    padding: 38px 20px 30px 20px;  // This is where you are wrong
    text-decoration: none;
    height: 93px;

这是因为您在底部设置了太多的填充,不允许出现边框

会有用的

【讨论】:

蓝色边框现在出现但不同步。我已经更新了我的链接,请检查。

以上是关于悬停背景显示不正确?的主要内容,如果未能解决你的问题,请参考以下文章

当图像悬停时,显示背景颜色

在任何背景上突出显示图像(悬停时)

css+div显示图片显示不完整

PrimeReact:悬停时更改菜单栏项目的背景颜色

悬停时背景图像更改

在图像悬停时以圆形设置背景大小