我想制作一张包含图片和一些文字的卡片。文本应放在图像上。因此,我将所有这些内容放在.container
position: relative
,position: absolute
将自己设置为.row-start
。
对于文字:
.row-end
,一个接一个地连着<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="css/main.css">
</head>
<body>
<div class="container">
<img src="https://upload.wikimedia.org/wikipedia/commons/e/e4/Color-blue.JPG"/>
<div class="row-start">
<p>Attr 1</p>
<p>Attr 2</p>
</div>
<div class="row-end">
<p>Attr 3</p>
</div>
</div>
</body>
</html>
HTML
.container {
position: relative;
height: 15em;
}
.container img {
width: auto;
height: 100%;
}
.row-start {
position: absolute;
left: 1em;
display: flex;
flex-direction: row;
}
.row-end {
position: absolute;
right: 1em;
}
的CSS:
.row-start
问题是什么
让我感到困惑的是,.row-end
似乎.container
可以工作,而.container
根本不尊重其<html>
父母。它将被放置在{{1}} div之外,并从页面的右侧放置(因此它尊重
{{1}}代码?)
我在这里错过了什么或做错了什么? 这样做的最佳做法是什么?感谢
答案 0 :(得分:0)
您的.container
DIV没有宽度定义,因此它是100%宽,即全宽(其父级/在此窗口示例中)。高度为15 em,显然高于图像的高度。
因此,您的绝对DIV 与.container
相关,但该容器比您显然认为的大 - 图像仅覆盖容器div的一部分。
要更改它,您可以定义容器的宽度,以及100%宽度或图像。
答案 1 :(得分:0)
你的容器元素是一个块,所以它的大小就是屏幕的大小。我添加了一个背景:红色到你的容器,所以我可以告诉你我的意思
你可以在这个pluckr上看到它: https://plnkr.co/edit/QdsaqIU5X7xYX4UXksT9?p=preview
.container {
position: relative;
background: red;
}