css - 我可以在不知道高度的情况下响应性地将 ::before 元素添加到它的父元素的顶部吗
问题描述
我想在div 的顶部添加一条斜条纹。我将使用 SVG 来创建它(或者我可以使用 CSS)。我可以用媒体查询来做到这一点,但我想知道是否有办法使用 CSS 自动解决这个问题。
如果我知道 height,我可以做到这一点,并且我可以手动将高度添加到媒体查询中(这不是一项很长的工作)。但肯定有更聪明的方法吗?
我尝试查看 calc,但它再次依赖于我们知道宽度或百分比或类似内容。
我不想使用 JavaScript。
这是我的代码:
.itemTitle--padder {
position: absolute;
bottom: 0;
width: 100%;
}
.itemTitle--padder::before {
background: url('../../../../images/joomla-london-brand-assets/videos-diagonal-background.svg?5d167918') no-repeat;
background-size: cover;
width: 100%;
height: 100%;
position: absolute;
top:0;
left:0;
display: block;
content: "";
margin-top: -56px;
}
.itemTitle--holder {
position: relative;
width: 100%;
height: 100%;
background: $dark-blue;
padding: 0.25rem 0.5rem;
}
<div class="itemTitle--padder">
<div class="itemTitle--holder">
<div class="itemTitle">
The Title of thing I'm creating
</div>
</div>
</div>
目前它完全依赖于我的负边距。还有另一种方法可以实现这一目标吗?
尝试实现这一点的主要原因是因为.itemTitle
div 中的内容可以是可变长度
解决方案
在 Gregs 的建议之后,我意识到使用 ::before 并不是实现这一目标的好方法,因为它总是会从它的父级继承一些东西。
我最终通过使用两个 div 来做到这一点。
HTML
<div class="itemTitle--padder">
<div class="itemTitle--image">
<img src="../../../../images/joomla-london-brand-assets/videos-diagonal-background.svg" alt="" width="100%" height="auto">
</div>
<div class="itemTitle--holder">
<div class="itemTitle">
The Title
</div>
</div>
</div>
SCSS
.itemTitle--padder {
position: absolute;
bottom: 0;
width: 100%;
}
.itemTitle--holder {
position: relative;
width: 100%;
height: 100%;
background: $dark-blue;
padding: 0.25rem 0.5rem;
}
.itemTitle--image {
width: 100%;
img {
position: absolute;
bottom: calc(100% - 1px);
}
}
推荐阅读
- php - HTML AJAX 不执行 PHP
- reactjs - 如何隐藏按钮,仅当 React 的输入标签中有值时
- sql - 将 PagingAndSortingRepository.findAll(Pageable pageable) 与未排序的可分页一起使用是否可靠?
- php - 如何将 php 文件中的 Json 数据解码为另一个 php 文件?
- matlab - 在 Matlab 中:从 Alpha-stable pdf 生成随机数,它会在时间上消耗(在循环中)
- r - 谁能指导如何从起点开始日期?我想以一年的差距绘制从 2003 年到 2016 年的日期
- c# - 如何自定义格式的文本框输入?
- php - LRAVEL 使用未定义的常量问题 - 控制器中假设的“问题”
- ios - 使用 xcodebuild 归档时缺少配置文件错误
- python - 经验洗牌检查python