【发布时间】:2014-10-06 03:35:30
【问题描述】:
我尝试为我的网站设置一个简单的登录页面,只有 5 张图片,以五边形的形式排列。 (图像将在每个五边形边缘)。 所以不是一行或一行中的 5 个图像,而是一个“圆圈”中的 5 个图像。
我能够在响应式布局中将图像设置在我想要的位置,它们在较小的屏幕上调整大小,甚至图像的位置也是响应式的。
但问题就从这里开始了。图片的位置是相对于屏幕边框设置的
position: absolute; top: 50% left: 25%
对于第一个图像,以此类推其他 4 个图像,以使它们位于五边形的五个边缘的位置
当调整浏览器窗口的大小时,从一个图像到另一个图像的距离会发生变化,这当然是因为位置是相对于窗口边框设置的。
并且图像的顺序当然会中断,直到它们看起来彼此远离或彼此接近。
有没有办法将图像位置设置为相对于屏幕上预设点的绝对位置,例如屏幕的绝对中心?
这五个图像应该是响应式的,但是图像的顺序和它们之间的距离应该始终保持相同的关系! (为了将图像保持在一个圆圈中,或者在五边形的五个边缘处以其他方式表示)
现在我使用以下内联样式的代码,在 980*1280 像素的屏幕上看起来很棒,但在更小或更大的屏幕上,图像的位置不再是所需的“五边形”顺序:
<!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%);
}
现在一切都很好,但我希望容器始终显示在视口的中心(仅宽度)
(position: absolute; left:50%; )
我的 image.ri:empty 显然不适用于 .container(仅适用于没有子元素的元素!!!!!!)
有人知道如何将其居中吗?
position: absolute; left:50vw;
也不行。
问题很明显:
“注意选择器:img.ri:empty — empty 是一个结构伪类,它只匹配没有子元素的元素(图像永远不应该有任何子元素)。这是一个 CSS3 选择器,因此 IE8 及以下版本将不解析声明。我们可以使用替代方法,例如条件注释,但这似乎是一种更有效的解决方案,并且只需要六个额外的字符。”
那么如何将 CONTAINER 设置为屏幕宽度的真实中心?
【问题讨论】:
标签: css image responsive-design css-position