所以我需要这个图像的比例可以说是 100vh 上的 2880x1520。
我可以使用 object-fit:cover; 对象位置:左中;
它工作正常。
问题是我还必须在图像的特定部分放置按钮,并且图像当然会根据浏览器的比例调整大小。
因此,我很难弄清楚按钮遵循 object-fit:cover 所暗示的图像大小调整的规则是什么,因此按钮将始终位于该特定图像部分的顶部并遵循图像调整大小.
它可能是 vh 和 vw 的组合,但我无法真正弄清楚这里的确切规则是什么。
提前感谢您的想法!
所以我需要这个图像的比例可以说是 100vh 上的 2880x1520。
我可以使用 object-fit:cover; 对象位置:左中;
它工作正常。
问题是我还必须在图像的特定部分放置按钮,并且图像当然会根据浏览器的比例调整大小。
因此,我很难弄清楚按钮遵循 object-fit:cover 所暗示的图像大小调整的规则是什么,因此按钮将始终位于该特定图像部分的顶部并遵循图像调整大小.
它可能是 vh 和 vw 的组合,但我无法真正弄清楚这里的确切规则是什么。
提前感谢您的想法!
为此,您还需要添加一些 javascript 来计算容器的纵横比是否比图像的纵横比更宽或更窄。
window.addEventListener("resize", moveButtons);
imageRatio = 2880/1520;
let container = document.getElementById("container");
let button1 = document.getElementById("button1");
function moveButtons() {
containerRatio = container.clientWidth / container.clientHeight;
if (imageRatio <= containerRatio) {
// the container is wider than the image - top and bottom are cut off
button1.style.height = (staticHeight * imageRatio / containerRatio)+ "vh";
} else {
// the container is narrower than the image - left and right sides are cut off
button1.style.left = (staticWidth * imageRatio / containerRatio)+ "vw";
}
}
这是假设图像居中并且按钮的位置设置为绝对。它可能需要一些微调,并且可能需要在方程式或开关比率中添加按钮的尺寸,但基本上就是这样。
祝你好运,让我们知道进展如何!
我不会这样做,而是将图像设置为 div 的背景,然后使用 flexbox 来定位按钮。
HTML
<section class="main">
<button>Random button</button>
</section>
CSS
.main
{
width: 100vw;
height: 100vh;
background: url("https://res.surplex.com/images/c_fit,d_no_image.png,f_auto,fl_progressive,h_1920,q_auto,w_1920/i_05015637/AINGERSOLL_RAND_Kompresszor.jpg");
display: flex;
justify-content: center;
align-items: center;
}
您想要使用的方法也可以像这样。将位置绝对设置为图像和按钮,然后使用 flexbox 将按钮定位到中间。
HTML
<section class="main">
<img src="https://res.surplex.com/images/c_fit,d_no_image.png,f_auto,fl_progressive,h_1920,q_auto,w_1920/i_05015637/AINGERSOLL_RAND_Kompresszor.jpg" alt="">
<button>Random button</button>
</section>
CSS
.main
{
width: 100vw;
height: 100vh;
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
button
{
position: absolute;
display: flex
}
img
{
width: 100%;
height: 100%;
position: absolute;
object-fit: cover;
}
如果您不希望按钮位于中间,这在您的帖子中不太清楚,您可以使用不同的 flex 对齐选项,然后离开:vw; (视口宽度)或顶部:vh;(viewport-height) 以进一步对齐您的按钮。