我有两个圆圈,一个是svg,另一个是风格链接。风格链接位于svg的顶部。圆形链接必须在svg上水平和垂直居中。通过使用javascript动态定位它,我已经非常接近了。
这里是小提琴:http://jsfiddle.net/arcco96/pf76Laux/3/(按开始查看动作)
jquery最终将其写在文档上:
<svg id="svg">
<path id="timer" fill="#66ff66" />
</svg>
<a class="round-button"><p>Ok</p></a>`
如果您查看代码,则会看到圆圈未居中。
如果您能解决这个问题或对此有任何想法,我希望听到它们。
感谢
答案 0 :(得分:1)
在设置'top': (top + 8) + 'px', 'left': '50%', 'margin-left': (-widthOf / 2) + 'px',
的CSS属性时添加.round-button
。
此外,在您的CSS中将box-sizing: border-box
添加到.round-button
。
的 Updated Fiddle 强>
var cv = $(window).width();
function createTimer(widthOf) {
var timer = document.getElementById('timer');
var svg = document.getElementById('svg');
var width = widthOf;
svg.setAttribute('width', width);
svg.setAttribute('height', width);
var t = 5;
var theta = 0;
var radius = svg.getAttribute('width') / 2;
timer.setAttribute('transform', 'translate(' + radius + ',' + radius + ')');
(function animate() {
theta += 0.5;
theta %= 360;
var x = Math.sin(theta * Math.PI / 180) * radius;
var y = Math.cos(theta * Math.PI / 180) * -radius;
var d = 'M0,0 v' + -radius + 'A' + radius + ',' + radius + ' 1 ' + ((theta > 180) ? 1 : 0) + ',1 ' + x + ',' + y + 'z';
timer.setAttribute('d', d);
setTimeout(animate, t)
})();
}
function createButton(widthOf, top, left) {
$('<a>', {
class: 'round-button',
}).appendTo('#container');
$('.round-button').css({
'height': (widthOf) + 'px',
'width': (widthOf) + 'px',
'top': (top + 8) + 'px',
'left': '50%',
'margin-left': (-widthOf / 2) + 'px',
'font-size': (widthOf / 3) + 'px',
});
$('<p>', {
text: 'tap',
}).appendTo('.round-button');
}
$("#btn1").click(function() {
createTimer(.8 * cv);
var ml = (.25 * cv) / 2;
var mt = (.05 * cv) / 2;
createButton((.75 * cv), mt, ml);
});
body {
background: skyBlue;
text-align: center;
}
#svg {
position: relative;
z-index: 0;
}
#overlay {
position: absolute;
left: 20%;
z-index: 5;
background-color: green;
width: 60%;
height: 30px;
top: 5px;
}
.round-button {
position: absolute;
width: 400px;
z-index: 9999999;
display: block;
width: 500px;
height: 500px;
line-height: 50px;
border: 5px solid #f5f5f5;
border-radius: 50%;
color: #f5f5f5;
text-align: center;
text-decoration: none;
background: #464646;
box-shadow: 0 0 3px gray;
font-size: 20px;
font-weight: bold;
box-sizing: border-box;
}
.round-button p {
vertical-align: middle;
}
.round-button:focus {
background: #262626;
position: absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="container">
<svg id="svg">
<path id="timer" fill="#66ff66" />
</svg>
</div>
<button id="btn1">start</button>