请立即查看此jsfiddle以了解我的意思:http://jsfiddle.net/w7yayb5e/
基本上在这个模型中我有一个用css设计的圆形和矩形,并且绝对定位在应该是100%高度的背景上(无法在jsfiddle中使用它)。 / p>
HTML:
<section class="background">
<div class="circle"></div>
<div class ="rectangle"></div>
</section>
CSS:
.background {
background: #666;
height: 275px;
width: 100%;
}
.circle {
display: block;
height: 100px;
width: 100px;
background: red;
position: absolute;
left: 20%;
top: 20%;
-moz-border-radius: 50%;
-webkit-border-radius: 50%;
border-radius: 50%;
border: 2px solid #fafafa;
margin: 0 auto 40px;
-moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
-webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15)
}
.rectangle {
display: block;
height: 50px;
width: 200px;
background: blue;
position: absolute;
right: 20%;
top: 26.5%;
}
现在问题是:当我将窗户拉得更大时,两个物体相互滑动,很快到达真实页面上看起来很奇怪的地方。相反的情况,窗口变小,两个物体相互滑动,响应处理,完全改变屏幕大小的布局。
我希望这两个对象彼此保持固定的宽度,同时在页面上居中。
我知道如果不改变绝对定位,这可能是不可能的,即使我想保留垂直定位,我想我会接受任何解决方案,并废弃100%高度设计。我已经仔细考虑了10个不同的问题,这些问题在这里似乎是一回事,但没有一个答案对我有用。
答案 0 :(得分:0)
试试这个Fiddle
CSS:
body {
background: none repeat scroll 0 0 #666;
height: 95%;
}
.background {
position: absolute;
text-align: center;
top: 30%;
width: 90%;
}
.circle {
background: none repeat scroll 0 0 red;
border: 2px solid #fafafa;
border-radius: 50%;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
display: inline-block;
height: 100px;
width: 100px;
}
.rectangle {
background: none repeat scroll 0 0 blue;
display: inline-block;
height: 50px;
width: 200px;
}
答案 1 :(得分:0)
使用左:50%;和边距左边给出一定偏离中心。 例如,您希望它们之间有200像素。
.circle {
width: 100px;
position: absolute;
left: 50%;
margin-left: -200px;
}
边距-200来自100的圆宽+ 100,相差200px的一半。
对于矩形:
.rectangle {
width: 200px;
position: absolute;
left: 50%;
margin-left: 100px;
}
这将使它们之间的差距居中。如果要将总数居中,则应减去两个对象之间的宽度差除以边距的2(25px)。
答案 2 :(得分:0)
我会将两个形状都包装到一个容器中,因为形状有固定的大小,所以很容易计算出这个容器的高度和宽度(在你的例子中为344x104)。
然后你必须使用以下方法将容器放在背景的中心:
top:0;
bottom:0;
right:0;
left:0;
margin:auto;
position:absolute;
并且形状不需要绝对位置,只需要一个浮点来保持它们相同的线。
希望这很清楚。这里有一个FIDDLE。检查出来
编辑:顺便说一下,要使高度:100%有效,你需要为所有父元素添加高度:100%