我尝试为我的网站设置一个简单的登陆页面,但只有 5 张图像,以五边形形式排序。 (图像将分别位于五边形边缘)。 因此,“圆”中有 5 个图像,而不是一行或一行中的 5 个图像。
我能够在响应式布局中将图像设置在我想要的位置,它们在较小的屏幕上调整大小,甚至图像的位置也是响应式的。
但是问题就开始了。图像的位置相对于屏幕边框设置
position: absolute; top: 50% left: 25%
对于第一张图像,依此类推,对于其他 4 个图像,以便使它们位于五边形的五个边的位置
调整浏览器窗口大小时,一张图像到另一张图像的距离会发生变化,当然这是因为位置是相对于窗口边框设置的。
图像的顺序当然会中断,直到它们看起来彼此远离或彼此接近。
是否无法将图像位置设置为相对于屏幕上预设点(例如屏幕的绝对中心)的绝对位置?
五个图像应该是响应式的,但是图像的顺序和它们之间的距离应该始终保持相同的关系! (为了使图像保持在一个圆圈中,或者说是在五边形的五个边上)
现在我使用以下内联样式的代码,在 980*1280px 屏幕上看起来很棒,但在更小或更大的屏幕上,图像的位置不再是所需的“五边形”顺序:
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body{
background-color: #000;
}
.overlay1 {
width: 10%;
position: absolute;
top: 50%;
left:25%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.overlay2 {
width: 10%;
position: absolute;
top: 25%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.overlay3 {
width: 10%;
position: absolute;
top: 50%;
left: 75%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.overlay4 {
width: 10%;
position: absolute;
top: 75%;
left: 37.5%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
.overlay5 {
width: 10%;
position: absolute;
top: 75%;
left: 62.5%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
</style>
</head>
<body>
<img src="site.com/content/uploads/2014/08/site-logo-vector- 280x280.png" class="overlay1" />
<img src="site.com/content/uploads/2014/08/site-logo-vector-280x280.png" class="overlay2" />
<img src="site.com/content/uploads/2014/08/site-logo-vector-280x280.png" class="overlay3" />
<img src="site.com/content/uploads/2014/08/site-logo-vector-280x280.png" class="overlay4" />
<img src="site.com/content/uploads/2014/08/site-logo-vector-280x280.png" class="overlay5" />
</body>
</html>
更新更新更新:
我编辑了以下代码(更改了 HTML,如下所示):
<div class="container">
<img src="site.com/content/uploads/2014/08/site-logo-vector-280x280.png" class="ri" />
<img src="site.com/content/uploads/2014/08/site-logo-vector-280x280.png" class="ri ri1" />
<img src="site.com/uploads/2014/08/site-logo-vector-280x280.png" class="ri ri2" />
<img src="site.com/uploads/2014/08/site-logo-vector-280x280.png" class="ri ri3" />
<img src="site.com/content/uploads/2014/08/site-logo-vector-280x280.png" class="ri ri4" />
</div>
(CSS 更改如下):
.container{
height: 100vh;
max-width: 100vh;
border: 1px red solid;
position: absolute;
top: 0%;
left: 0%;
}
img.ri
{
position: relative;
max-width: 25%;
}
img.ri:empty
{
top: 23%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
img.ri1:empty
{
top: 50%;
left: -5%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
img.ri2:empty
{
top: 50%;
left: 25%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
img.ri3:empty
{
top: 60%;
left: 30%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
img.ri4:empty
{
top: 60%;
left: 40%;
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}
现在一切都很好,但我希望容器始终显示在视口(viewport)的中心(仅宽度)
(position: absolute; left:50%; )
我的 image.ri:empty 显然不适用于 .container (仅适用于没有子元素的元素!!!!!!)
有人知道如何将其居中吗?
position: absolute; left:50vw;
效果不太好。
问题很明显:
“记下选择器:img.ri:empty——empty是一个结构伪类,它只匹配没有子元素的元素(图像不应该有任何子元素)。这是一个CSS3选择器,因此IE8及以下版本将不解析声明。我们可以使用替代方案,例如条件注释,但这似乎是一个更有效的解决方案,并且只需要六个额外字符。”
那么我如何将容器设置为屏幕宽度的真实中心?
最佳答案
您可以尝试在 div 内设置图像并为该 div 指定静态宽度,以便在调整屏幕大小时图像的相对位置保持不变(基本上使 div 无响应)
编辑:尝试查看 this如果这就是您要找的,请告诉我:)我所做的是,我创建了一个包装 <div class="container">
并赋予它以下属性:
.container {
border: 1px red solid;
position: relative;
width: 100%;
height: 0;
padding-bottom: 100%;
}
然后我向每个图像添加了以下类,以及 .overlay#
您拥有的类(class)(删除了一些部分):
.picture {
width: 10%;
position: absolute;
display: inline;
}
引用:this SO post的第二个答案
编辑 #2:下面是我的评论的示例:
<div class="container">
<div class="adjusted">
// images, same as above
</div>
</div>
还有额外的 CSS:
.container {
/* same as above, plus the following line */
top: 50%;
}
.adjusted {
top: -100px; /* <--this would be half the height of your pentagon */
}
编辑#3:我想我明白了!有两个嵌套<div>
容器,并且可能有一些额外的样式行,但它非常接近。我想如果你玩 this那么你也许能够让它发挥作用。
祝你好运!
关于css - 如何设置图像相对于屏幕中心的绝对位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25274926/