【问题标题】:CSS absolute background as link: active positionCSS绝对背景作为链接:活动位置
【发布时间】:2013-07-25 23:08:30
【问题描述】:

我正在创建顶部有链接的图像。图像已设置为相对,图像底部的链接为绝对。基本上它是图像顶部的链接,具有绝对位置和固定宽度和高度。悬停时,链接的背景会改变它的颜色。每当我单击链接时就会出现问题:它位于图像的顶部(在 Opera 和 IE 上它停留在那里)。图片作为例子:

下图是带有链接的图片的正常状态(悬停背景的透明度发生变化)。

下图是链接状态a:active

它保持为绝对元素,但改变它的位置。我已经尝试申请a:active这些选项:复制正常和悬停状态的所有内容position:static;,甚至尝试放置一个margin-top,其大小需要保持在底部 - 不走运。

这是它的css代码:

.image-with-link {width:300px; height:135px; position:relative; float:left; overflow:hidden;}
.image-with-link a {width:280px; height:18px; position:absolute; bottom:20px; left:0; padding:5px 10px; color:#fff; text-align:left; background: rgba(0,0,0,0.3); overflow:hidden;}
.image-with-link a:hover {background: rgba(0,0,0,0.5);}

(不再需要链接)。

【问题讨论】:

  • 如果您提供指向网页本身的链接会更容易检查
  • 听起来你有一些与 a:active 声明冲突的 CSS。正如骑士所说,查看实际页面会非常有帮助。
  • 已编辑并提供链接,感谢您的帮助。

标签: css css-position absolute


【解决方案1】:

您在 custom.css 的第 79 和 194 行有冲突的 CSS,它覆盖了绝对定位:

您正在声明:

a:active, a:focus {
    position:relative;
    top:1px;
}

在第 194 行:

.kategorijos .vienas a:active {
    position:static;
}

这两个都是导致问题的原因。您希望该项目保持 position:absolute 处于 :active 状态。

【讨论】:

  • 您好,您使用什么软件来检测冲突?因为我没有找到与 custom.css 第 79 行中的链接相关的任何内容
  • 我只是在使用 Chrome 的开发工具(右键单击该东西并选择“检查元素”)。然后,您可以将链接设置为活动状态并查看正在应用哪些样式。您只需要确保 :active 状态的 CSS 覆盖不太具体的 CSS。您可以将 !important 添加到更具体的 CSS 中。
  • 感谢您指出导致问题的根源,无论如何我在不同的 CSS 文件中找到了它。既然你的答案是第一位的,我会接受它。
  • 你需要非常好的理由来使用!important。 IMO 这不是一个。
  • @Saram 通常我会同意。但这样做的原因是你不要不假思索地用它覆盖东西。 !important 本身并不一定是。在这种情况下,它应该无关紧要。如果他对他的 CSS 类更具体一点就更好了,但最终结果是一样的。
【解决方案2】:

这是你的问题:

a:active,
a:focus{
    /* Give clicked links a depressed effect. */
    position:relative;
    top:1px;
}

您在以下选择器中覆盖了position,但没有覆盖top.kategorijos .vienas a。您应该添加top: initial 进行修复。 我假设position: static 是在这里设计的:

.kategorijos .vienas a:active {position:static;background: url('../images/arrow.png') 270px 4px  no-repeat rgba(0,0,0,0.5);}

这会将链接移动到图片下方。

【讨论】:

  • 感谢您解释我做了什么和没有覆盖什么。只是出于好奇,不应该bottom:0 !important; 覆盖top
  • 这不可能用另一个属性覆盖一个属性。浏览器两者都适用,并且您的元素更高,但内容是顶部对齐的 - 所以它会上升。试试vertical-align:bottom(我没有测试)。 IMO 用top: initial 覆盖top 是更好的解决方案。
【解决方案3】:

试试这个,我想这会奏效:)

a:active, a:focus {
    position: relative;
    top: 1px;
}

.kategorijos .vienas a:active {
    position: static;
}

【讨论】:

  • position:static; 没有解决 Opera 和 IE 的问题,仅适用于 Chrome。
猜你喜欢
  • 2013-11-15
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 2011-05-03
  • 1970-01-01
  • 2013-01-06
相关资源
最近更新 更多