【发布时间】:2018-12-02 23:21:06
【问题描述】:
好的,所以我想要完成的是在响应式图像下方放置一个绝对定位的元素。问题是,每当屏幕尺寸发生变化时,图像都会发生变化,并且绝对定位的元素不会停留在其下方。
这是我一直在研究的代码笔,有助于说明问题:https://codepen.io/gojiHime/pen/MXXGbK?editors=1100
为了 Stack Overflow,这里是 CSS 和 HTML:
<div class="item">
<div class="btn-container">
<a href="https://www.rottentomatoes.com/" target="_blank" class="learn-more">Learn More</a>
</div>
<a href="https://www.doomworld.com/" class="outer-link" target="_blank" tabindex="0">
<img src="image.png" alt="">
<div class="cta">Download Now</div>
</a>
</div>
CSS:
.item {
border: 1px solid black;
width: 1024px;
display: block;
height: auto;
position: relative;
float: left;
text-align: center;
margin: 0 auto;
max-width: 100%;
}
.item a {
text-decoration: none;
}
.item img {
width: 100%;
max-width: 100%;
}
.cta,
.learn-more {
font-size: 36px;
width: 280px;
margin-left: auto;
margin-right: auto;
margin-bottom: 20px;
}
.learn-more {
background: forestgreen;
color: black;
position: absolute;
width: 280px;
margin: 0 auto;
max-width: 100%;
top: 50%;
border: 1px solid black;
padding: 15px;
}
.learn-more:hover {
background: darkgreen;
color: white;
}
.outer-link {
float: left;
border: 1px solid red;
margin: 0 auto;
width: 1024px;
max-width: 100%;
}
.cta {
border: 1px solid orange;
background: orange;
color: white;
margin-top: 8rem;
padding: 10px;
}
.cta:hover {
color: black;
background: brown;
}
现在,图像和“立即下载”片段必须保存在同一个链接标签中。为什么不把它们分开,然后在它们之间加上“了解更多”按钮呢?好吧,这不是我的选择,因为我坚持它,所以它就是这样。
我希望“了解更多”按钮始终位于图像下方,无论图像大小如何。我一直在尝试不同的东西,但无法让它保持在图像下方。我不能把它放在包含图片和“立即下载”按钮的链接中,因为“了解更多”按钮必须有自己的链接。
有什么想法吗?
【问题讨论】:
-
绝对定位意味着您知道要放置元素相对于父元素的位置,因此除非您知道图像的高度,否则您将无法使用它。如果可以的话,您可以使用 JS 找出答案。另一方面,您可以在多大程度上修改 HTML 的结构?
-
@VictoriaRuiz 我无法改变图像和“立即下载”必须位于 href 标记内的事实。就是这样。
-
您放置元素的顺序非常错误,解释了您遇到问题的原因。考虑为图像使用背景。
-
不能使用图片作为背景。就是这样。元素的设置方式不是我的决定,我尝试将其更改为更合理的方式,但有人告诉我这是必须的。
标签: html css css-position absolute