将我的“翻转”圆圈定位在页面中央

4
我已经创建了一个带有内容的圆形,它不仅可以翻转,而且还能漂浮... 我想确保这个圆形位于用户浏览器的中间位置,但由于翻转原因(我认为是这个原因),该圆形并没有居中显示。 jsFiddle HTML
<div class="flip-container">
                <div class="flipper">
                    <div class="front">
                        <div class="circle floating">
                            <img src="http://mogul.london/images/logo-home.png" width="217" height="107">
                            <span class="title">Title</span>
                            <span class="subline">Subtitle here</span>
                        </div>
                    </div>
                    <div class="back">
                        <div class="circle floating">
                            <span class="calltext">Call us now on</span>
                            <span class="number">000 000 0000</span>
                            <span class="ordertext">to order or make a reservation</span>
                        </div>
                    </div>
                </div>
            </div>

CSS

body {
    font-family: "Trebuchet MS", Helvetica, sans-serif;
    font-size: 15px;
    color:#fff;
}

.flip-container {
    perspective: 1000;
    cursor: pointer;
    position: absolute;
    top: 50%;
    left:50%;
    transform: translateX(-50%) translateY(-50%);
}
    /* flip the pane when hovered */
    .flip-container:hover .flipper, .flip-container.hover .flipper {
        transform: rotateY(180deg);
    }

.flip-container, .front, .back {
    width: 320px;
    height: 480px;
}

/* flip speed goes here */
.flipper {
    transition: 0.6s;
    transform-style: preserve-3d;

    position: relative;
}

/* hide back of pane during swap */
.front, .back {
    backface-visibility: hidden;

    position: absolute;
    top: 0;
    left: 0;
}

/* front pane, placed above back */
.front {
    z-index: 2;
    transform: rotateY(0deg); /* for firefox 31 */
}

/* back, initially hidden pane */
.back {
    transform: rotateY(180deg);
}

.circle {
    background: rgba(255, 0, 73, 0.67);
    text-align: center;
    padding: 85px 35px;
    display: inline-block;

    height: 200px;
    width: 300px;
    -webkit-border-radius: 200px;
    -moz-border-radius: 200px;
    border-radius: 200px;
}

.circle span {
    display: block;
    text-transform: uppercase;
}

.circle span.title {
    font-size: 60px;
    font-weight: bold;
    letter-spacing: -2px;
}
.circle span.subline {
    font-size: 18px;
    margin-top: -5px;
}
.circle span.calltext {
    font-size: 35px;
    margin-top: 30px;
}

.circle span.number {
    letter-spacing: -2px;
    font-size: 46px;
    font-weight: bold;
}

.circle span.ordertext {
    font-size: 18px;
}

.floating{
    float: left;
    -webkit-animation-name: Floatingx;
    -webkit-animation-duration: 3s;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: ease-in-out;
    -moz-animation-name: Floating;
    -moz-animation-duration: 3s;
    -moz-animation-iteration-count: infinite;
    -moz-animation-timing-function: ease-in-out;
    margin-left: 30px;
    margin-top: 5px;
}

@-webkit-keyframes Floatingx{
    from {-webkit-transform:translate(0, 0px);}
    65% {-webkit-transform:translate(0, 15px);}
    to {-webkit-transform: translate(0, -0px);    }    
}

@-moz-keyframes Floating{
    from {-moz-transform:translate(0, 0px);}
    65% {-moz-transform:translate(0, 15px);}
    to {-moz-transform: translate(0, -0px);}    
}

你的圆圈大小会一直保持不变吗? - newBee
是的,它们应该是固定大小的,已经被赋予了一个固定的尺寸。 - InvalidSyntax
3个回答

2
你错误地计算了.flip-container的宽度和高度:
.flip-container, .front, .back {
    width: 370px; // .circle height + 2*padding = 300 + 2*35
    height: 385px; // .circle width + 2*padding + animation translate = 200 + 2*85 + 15
}

Fiddle(另外,我删除了.floating中的边距)


好的,看起来它运行正常,但 .circle 中没有边距 :/ - InvalidSyntax
嗯,有个问题,在Safari中仍然存在。有什么想法吗? - InvalidSyntax
1
为了更好地支持浏览器,请在.flip-container中将transform: translateX(-50%) translateY(-50%);替换为margin-top: -192.5px; margin-left: -185px;(或与webkit前缀一起使用)。 - Wojciech Mleczek
完全忘记添加这些了! - InvalidSyntax

0

将以下样式分配给您的容器 div 或圆形:

position:absolute;
top:50%;
left:50%;
width:400px;
margin-left:-200px
height:400px;
margin-top:-200px

使用这个CSS将其居中在您的页面上。 工作原理:它将左上角精确地定位在中心,然后负边距将“向上”和“向左”“拉回来”。 (边距始终是宽度和高度的一半)

0
<div id="container">

</div>

使用这个代码,你的圆形将会居中并且动画效果为漂浮。

#container{
    position:absolute;
    left:0;right:0;top:0;bottom:0;
    width:400px;
    height:400px;
    background:rgba(255, 0, 73, 0.67);
    border-radius:50%;
    margin:auto auto;
    -webkit-animation: levite 2s ease-in-out 0s infinite normal;
}
@-webkit-keyframes levite{
    from {-webkit-transform:translate(0, 0);}
    65% {-webkit-transform:translate(0, 15px);}
    to {-webkit-transform: translate(0, 0);    }    
}

查看运行


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接