如何在不改变位置的情况下改变div的宽度/高度?

时间:2015-01-14 22:24:58

标签: javascript jquery html css css3

我想要duplicate what this guy did,但不使用画布。我希望在页面的中心有一个div,只需每秒将宽度/高度/边框半径增加10px。这很好用,但由于某种原因,div越大,它越往右下方移动。圆圈并没有停留,它的中心位置随着变大而变化。如何在不改变位置的情况下更改div的宽度/高度?

的main.css

div {
  background-color: green;
  width: 100px;
  height: 100px;
  border-radius: 100px;
  position:absolute;
  top:50%;
  left:50%;
  margin-top:-50px; /* this is half the height of your div*/  
  margin-left:-100px; /*this is half of width of your div*/
}

的index.html

<!DOCTYPE html>
  <head>
    <title>CircleTime</title>
    <link rel="stylesheet" href="main.css"></link>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="app.js"></script>
  </head>
  <body>
  <div></div>
  </body>
</html>

app.coffee

incrementCircle = ->
  newSize = circle.height() + 10
  circle.height newSize
  circle.width newSize
  circle.css 'border-radius', newSize

$(document).ready ->
  window.circle = $("div")
  setInterval(incrementCircle, 1000);

4 个答案:

答案 0 :(得分:1)

您是否也在更改边距?

margin-top:-50px; /* this is half the height of your div*/    
margin-left:-100px; /*this is half of width of your div*/

只需将其添加到您的incrementCircle

即可
circle.css 'margin', -(newSize/2) + 'px, 0px, 0px, ' + -(newSize/2) + 'px'

答案 1 :(得分:1)

在你的coffeescript中,不断更新边距:

incrementCircle = ->
newSize = circle.height() + 10
circle.height newSize
circle.width newSize
circle.css 'border-radius', newSize
circle.css 'margin-top', newSize/-2
circle.css 'margin-left', newSize/-2

$(document).ready ->
  window.circle = $("div")
  setInterval(incrementCircle, 1000);

http://jsfiddle.net/sw0zn36e/5/

答案 2 :(得分:0)

这可能是一个问题。

试试这个:

div {
  background-color: green;
  width: 100px;
  height: 100px;
  border-radius: 100px;
  margin: 0 auto;
}

答案 3 :(得分:0)

切换到margin: 0 auto;有效。请参阅此codepen:http://codepen.io/anon/pen/myWBZW