设一个div 在页面加载完成后 改变他的radius值 使div逐渐变成圆形 变成圆形后再逐渐变为矩形 重复这一过程 使用js完成
时间: 2024-02-01 20:02:00 浏览: 140
可以使用CSS3的transition和border-radius属性配合JavaScript来实现这个效果。
首先,在HTML中添加一个div元素,并给它一个默认的CSS样式,如下所示:
```html
<div id="myDiv" style="width: 200px; height: 200px; background-color: #f00;"></div>
```
接着,在JavaScript中获取这个div元素,并添加一个事件监听器,当页面加载完成后触发该事件。在事件处理函数中,我们可以通过修改div元素的border-radius属性来实现逐渐变成圆形的效果。代码如下:
```javascript
var myDiv = document.getElementById('myDiv');
window.addEventListener('load', function() {
var radius = 0;
var intervalId = setInterval(function() {
radius += 5;
if (radius <= 100) {
myDiv.style.borderRadius = radius + '%';
} else if (radius <= 200) {
myDiv.style.borderRadius = (200 - radius) + '%';
} else {
clearInterval(intervalId);
}
}, 50);
});
```
在上面的代码中,我们定义了一个变量radius来表示div元素的圆角半径,初始值为0。然后使用setInterval函数来每隔一定时间执行一次半径增加的操作,直到半径达到100就停止增加,此时div元素就变成了圆形。随后,我们继续让半径增加,直到半径达到200,此时div元素又变成了矩形。最后,我们清除定时器,结束动画效果。
完整的代码如下所示:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Div变形</title>
<style>
#myDiv {
width: 200px;
height: 200px;
background-color: #f00;
transition: border-radius 0.5s ease-out;
}
</style>
</head>
<body>
<div id="myDiv"></div>
<script>
var myDiv = document.getElementById('myDiv');
window.addEventListener('load', function() {
var radius = 0;
var intervalId = setInterval(function() {
radius += 5;
if (radius <= 100) {
myDiv.style.borderRadius = radius + '%';
} else if (radius <= 200) {
myDiv.style.borderRadius = (200 - radius) + '%';
} else {
clearInterval(intervalId);
}
}, 50);
});
</script>
</body>
</html>
```
阅读全文