CSS:当我为段落设置 ID 时,悬停效果不起作用

Posted

技术标签:

【中文标题】CSS:当我为段落设置 ID 时,悬停效果不起作用【英文标题】:CSS :hover effect not working when I set an ID to the paragraph 【发布时间】:2014-03-09 10:16:44 【问题描述】:

我有以下 css3 过渡效果:

html

<div class="button">     
    <a href="#" onMouseOver="clicksound.playclip()"></a>
    <p id="myId" class="top"></p>            
</div>

CSS

 * 
     padding: 0;
     margin: 0;
 
 .button 
     width: 180px;
     margin-top: 45px;
 
 .button a 
     display: block;
     height: 40px;
     width: 180px;
     /*TYPE*/
     color: black;
     font: 17px/50px Helvetica, Verdana, sans-serif;
     text-decoration: none;
     text-align: center;
     text-transform: uppercase;
 
 .button a 
     background:url(http://imageshack.com/a/img819/761/dqj.gif);
     margin: -50 0 0 0;
     z-index: -1;
 
  p#myId 
     background: url(http://imageshack.com/a/img854/1921/9ft3.png);
     display: block;
     height: 40px;
     width: 167px;
     margin: -40px 0 0 5px;
     z-index:-1;
     /*TYPE*/
     text-align: center;
     font: 12px/45px Helvetica, Verdana, sans-serif;
     color: #fff;
     /*POSITION*/
     position: absolute;
     /*TRANSITION*/
     -webkit-transition: margin 0.1s ease;
     -moz-transition: margin 0.1s ease;
     -o-transition: margin 0.1s ease;
     -ms-transition: margin 0.1s ease;
     transition: margin 0.1s ease;
 
 .button:hover .top 
     margin: -67px 0 0 5px;
     line-height: 35px;
 
 /*ACTIVE*/
 .button:active .top 
     margin: -70px 0 0 5px;
 

如果我在 CSS 中将 p#myId 选择器更改为 p,它可以工作(按钮在悬停时上升),否则不会。

Running demo on jsFiddle

【问题讨论】:

你能设置一个jsFiddle.net吗? 谢谢回答,但抱歉,除非代码很小(最大 20kb),否则不要使用 javascript。解决此问题后,我将整理代码,谢谢为我指出此问题。所以...你知道这里发生了什么吗? 我没有建议你使用 Javascript。我建议您在 jsFiddle 中准备一个在线(最小)演示,该站点允许您这样做。放入 HTML、CSS、JS 等,然后按运行。然后按保存,返回此处并将链接添加到您的问题。 嗯,这里是jsfiddle.net/cjTN7 你试过了,但结果不可见:剪切和粘贴是不够的,你应该为图像使用绝对路径,并确保放置所有显示问题所需的 css / js在页面中。结果将显示在右下角的方块中。如果您的图片不在网络上,请使用从 google 获取的其他具有相同高度宽度的图片... 【参考方案1】:

问题在于处理您的:hover 行为的选择器的特异性低于默认行为规则(p#id 选择器)。

改变这个

.button:hover .top 

到这里

.button:hover #myId.top 

将解决问题:Running example

您还可以将 id 应用于父对象(比如说&lt;div id="container"&gt;),然后使用

#container .button:hover .top 

必读:Specifics on CSS Specificity

例子:

【讨论】:

您对代码进行了彻底的清理,您太棒了!抱歉延迟回答,我正在完成测试。徽标现在可以正常工作,但我还有另一个问题。标志在这里lucrebem.com.br,我的问题是:我的布局是响应式的,adsense(顶部广告)也是响应式的,但是当你放大超过 200% 时,广告消失了,它实际上应该停留在标志的正下方。我需要打开一个新主题吗?我认为这也与css有关。 Prego :) 你还没有接受答案,所以现在你有 两个 问题 :D PS:是的,你应该打开一个新问题,因为它是(总是在css,但是)一个完全不同的问题 接受!伟大的支持和家伙!我现在要开一个新话题。

以上是关于CSS:当我为段落设置 ID 时,悬停效果不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当六边形变为正方形时,CSS悬停效果不起作用

CSS3 过渡/悬停效果在 Firefox 中不起作用; Firefox 错误?

为啥 CSS 中的“光标:指针”效果不起作用

jQuery .css background-position-x 在悬停时更改在 IE 中不起作用

CSS悬停不起作用

CSS :hover on button 在已经悬停的 div 中不起作用