消息关闭
    暂无新消息!

css3效果两边收缩

问题作者 : Solis2017-08-07发布

效果: 有一个长方形border框,用css3实现鼠标移动到上面时两边同时往中间收缩成圆形。主要问题是不懂怎么实现两边同时往中间缩?请大神们指教!!


9个回答

︿ 3
// html 
<div class="wrapper">
  <div class="box3"></div>  
</div>


// css
.wrapper{
  width: 200px;
 height: 50px;
}
.box3{
width: 200px;
height: 50px;
background: green;
transition: 1s;
margin:0 auto;
border-radius: 30px;
}
.box3:hover{
border-radius: 50%;
width: 50px;
height: 50px;
}
︿ 2

需求:让长方形变成圆,且应有过渡效果
1:先画个长方形
2:再在hover的时候将长方形的宽高设成一致,再画成圆
3:加上过渡效果(transition)

html

<div class="tra"></div>

css

.tra {
  width: 90px;
  height: 50px;
  border: 1px solid #368;
  transition: all 1s;
}

.tra:hover {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  margin-left: 18px;
  transition: all 1s;
}
︿ 1

一个例子:宽度变小,居中不变,自然看起来就是“两边同时往中间缩”了。

不要想,怎么真的让它两边同时往中间缩,动画效果,只需要考虑,怎么看起来像就好。

︿ 1

当hover的时候加border-radius:50%;如果觉的太生硬可以加个transition的属性过渡时间效果,就可以了。

︿ 1

刚动手写一下:

 .borderRadiusAnimation {
            width: 400px;
            height: 200px;
            border: 1px solid #000;
            transition: all 2s;
            margin: 0 auto;
            outline: none;
        }

        .borderRadiusAnimation:hover {
            width: 200px;
            border-radius: 50%;
        }
        
        
    <div class="borderRadiusAnimation">
    </div>

居中的话, 看起来就是同时向中间收缩了。 居中我这里用的margin:0 auto

︿ 1

这样么?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div {
            width: 100px;
            height: 50px;
            border: 1px solid #000000;
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            margin: 0 auto;
        }

        div:hover {
            transition: 1s;
            width: 50px;
            border-radius: 50%;
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>
︿ 0

你需要用position把它先定位一下,之后就能两边同时缩进了。具体代码(在你的代码基础上改的):

.box3{
    position: relative;
    left: 0; right: 0;
    margin: auto;
    width: 200px;
    height: 50px;
    background: green;
    transition: 1s;
    border-radius: 30px;
    }
    .box3:hover{

    border-radius: 50%;
    width: 50px;
    height: 50px;
    }
︿ 0

<div id="div1"></div>

#div1{
        width: 200px;
        height: 100px;
        border: 1px solid #000;
        position: absolute;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
        -moz-transform: translate(-50%, -50%);
        -ms-transform: translate(-50%, -50%);
        -o-transform: translate(-50%, -50%);
        transform: translate(-50%, -50%);
        -webkit-transition: width .5s;
        -moz-transition: width .5s;
        -ms-transition: width .5s;
        -o-transition: width .5s;
        transition: width .5s;
    }
    #div1:hover{
        width: 100px;
        border-radius: 50%;
    }