具有 2 个图像的响应式绝对定位
Responsive absolute positioning with 2 images
我有一张包含 11 个区域(左端区、右端区和 0-9 区)的足球场图像。我还有一张足球图像,我希望能够将其绝对放置在任何区域这些所需的 11 个区域,并根据需要调整球和场地的大小(它将在平板电脑、台式机和移动设备上使用)。我也在使用 bootstrap,但现在我已经删除了该变量所以我可以尝试让它与我自己的 CSS/HTML.
一起工作
我可以让它把球绝对定位在场地的顶部,我可以让场地适当缩小,但球保持不变。此外,随着屏幕尺寸的缩小,球的位置会变得不正常。我怀疑这是因为我对 left/top 值使用 px 单位。我试过让它与百分比一起工作(左:10%,top:50%,等等)但是当我这样做时它似乎忽略了 left/top。
我也试过设置字段容器的宽度和高度,它遵守百分比,但随后它不再响应。我是一名后端开发人员,正在学习 CSS,我确定我只是错过了定位和响应能力的一些重要但简单的方面。我宁愿不求助于一些骇人听闻的解决方案,我将图像分成几个部分,这会带来很多问题。
媒体查询能更好地处理这个问题吗?
HTML
<div class='field-container'>
<img src='https://i.imgur.com/R4nJuCS.png' class='field' />
<img src='https://i.imgur.com/OFUsjLJ.png' class='ball' />
</div>
CSS
.field-container {
position:relative;
width:1000px;
height:200px;
/* add this to test responsiveness */
/* width:400px; */
}
.field {
position:absolute;
max-width: 100%;
height: auto;
}
.ball {
position:absolute;
top:50%;
}
我想你想要这样的东西:
.field-container {
position:relative;
width:50%;
}
.field {
width: 100%;
height: auto;
}
.ball {
left: calc(8.3% * 4);
display: inline-block;
position:absolute;
top: 50%;
width: 7%;
transform: translate(10%, -50%);
}
该字段不必绝对定位,但它必须填充它的包含元素。
球的宽度应为其容器的百分比,以便使其按比例调整大小。
您可以通过相对于容器从顶部 50% 绝对定位球来居中球,然后使用 transform
将其平移回其高度的一半 (50%);
最后,可以使用 calc 将球定位在球场上。 8.3% 是 100/12,也就是 12 个分区之一 field.Adjust 第二个在分区之间移动球的数字。翻译功能只需要 10% 就可以将球推到位。
我有一张包含 11 个区域(左端区、右端区和 0-9 区)的足球场图像。我还有一张足球图像,我希望能够将其绝对放置在任何区域这些所需的 11 个区域,并根据需要调整球和场地的大小(它将在平板电脑、台式机和移动设备上使用)。我也在使用 bootstrap,但现在我已经删除了该变量所以我可以尝试让它与我自己的 CSS/HTML.
一起工作我可以让它把球绝对定位在场地的顶部,我可以让场地适当缩小,但球保持不变。此外,随着屏幕尺寸的缩小,球的位置会变得不正常。我怀疑这是因为我对 left/top 值使用 px 单位。我试过让它与百分比一起工作(左:10%,top:50%,等等)但是当我这样做时它似乎忽略了 left/top。
我也试过设置字段容器的宽度和高度,它遵守百分比,但随后它不再响应。我是一名后端开发人员,正在学习 CSS,我确定我只是错过了定位和响应能力的一些重要但简单的方面。我宁愿不求助于一些骇人听闻的解决方案,我将图像分成几个部分,这会带来很多问题。
媒体查询能更好地处理这个问题吗?
HTML
<div class='field-container'>
<img src='https://i.imgur.com/R4nJuCS.png' class='field' />
<img src='https://i.imgur.com/OFUsjLJ.png' class='ball' />
</div>
CSS
.field-container {
position:relative;
width:1000px;
height:200px;
/* add this to test responsiveness */
/* width:400px; */
}
.field {
position:absolute;
max-width: 100%;
height: auto;
}
.ball {
position:absolute;
top:50%;
}
我想你想要这样的东西:
.field-container {
position:relative;
width:50%;
}
.field {
width: 100%;
height: auto;
}
.ball {
left: calc(8.3% * 4);
display: inline-block;
position:absolute;
top: 50%;
width: 7%;
transform: translate(10%, -50%);
}
该字段不必绝对定位,但它必须填充它的包含元素。
球的宽度应为其容器的百分比,以便使其按比例调整大小。
您可以通过相对于容器从顶部 50% 绝对定位球来居中球,然后使用 transform
将其平移回其高度的一半 (50%);
最后,可以使用 calc 将球定位在球场上。 8.3% 是 100/12,也就是 12 个分区之一 field.Adjust 第二个在分区之间移动球的数字。翻译功能只需要 10% 就可以将球推到位。