全站搜索

网站前端制作-不定高度的元素实现transition动画

网站开发 423

在网站页面的制作中,不少效果是由transition实现过渡动画做成的。最近的工作,需要做一个div的hover效果,hover的时候文字内容自适应高度即是height: 70px(固定高度)变化到height: auto; 从下往上产生一个过渡动画,过程中由中间圆形遮罩中间扩散到消失,显示底图。

过程中,遇到的问题有两点:

关于不定高度的元素实现transition动画,制作过渡效果的过程中,发现height: auto;会导致过渡动画不产生效果,而且看起来不流畅,显得生硬。

中间圆形显示部分底图四周是遮罩的效果,div hover之后圆形逐渐扩大的过渡动画,显示完整的底图。如下所示的效果图:

 

关于不定高度的元素实现transition动画,可以用max-height,文本内容设置max-height: 64px; transition: max-height 1s; 文本内容的div hover之后设置max-height: 250px(例如250px),就可以实现这个效果,不过在这里这个动画效果不是很理想。也可以通过js获取div.text精确的高度,赋予div.txt一个明确的值,移出鼠标之后,移除这个值。如下所示:

Css:

.divLi .txt{

Height: 640;

-webkit-transition: all 0.5s ease;

    transition: all 0.5s ease;

}

Html:

<div class=”divLi”>

<a href=”project_detail.html”>

<div class=”ic”>

<img src=”images/img102.png”/>

</div>

<div class=”img”>

<img src=”images/img101.jpg” />

<div class=”img-circle”>

            <span></span>

        </div>

</div>

<div class=”txt”>

<div class=”text”>

<div class=”t1″>

Joint project of Planting Grass in the Gobi Desert

</div>

<div class=”t2″>

Immunity, the best doctor of human health, is the ability of the human body to resist external…

</div>

</div>

</div>

</a>

</div>

Js:

<script>

$( ‘.divLi’).hover(function() {

var hei = $(this).find(“.text”).height();

$(this).children(“.txt”).css(‘height’, hei);

},function() {

    $(this).children(“.txt”).removeAttr(“style”);

});

</script>

关于上图的中间圆形显示部分底图四周遮罩,先设置定位在图片上面,中间的圆形可以用border做,设置border-color做遮罩色,border-width设置大一些,再border-radius设置50%就能做成一个中间是圆形显示部分底图的遮罩,div hover 之后设置缩放的倍数,例如transform: scale(4),加上div原先设置的过渡动画transition,就能把圆形显示四周遮罩放大,中间的圆形就会放大,可以显示全部的底图,如下所示:

Html:

<div class=”img-circle”>

<span></span>

</div>

Css:

. divLi .img-circle{

position: absolute;

z-index: 3;

top: 0;

right: 0;

bottom: 0;

left: 0;

pointer-events: none;

-webkit-transition: all 0.5s ease;

transition: all 0.5s ease;

-webkit-transform: scale(1);

transform: scale(1);

}

. divLi:hover .img-circle{

    -webkit-transform: scale(4);

    transform: scale(4);

}

. divLi .img-circle span{

position: absolute;

    top: 50%;

    left: 50%;

    width: 55%;

    -webkit-transform: translate(-50%, -50%);

    transform: translate(-50%, -50%);

}

. divLi .img-circle span::before {

    content: “”;

    display: block;

    padding-top: 100%;

}

. divLi .img-circle span:after{

content: “”;

    position: absolute;

    top: 50%;

    left: 50%;

    width: 100%;

    height: 100%;

    border: 1000px solid #edf6ff;

    border-radius: 50%;

    -webkit-transform: translate(-50%, -50%);

    transform: translate(-50%, -50%);

}

上一篇: 下一篇:

相关推荐

  • 制造企业网站和服务企业网站设计的根本差异

    329

    为一家制造业企业设计网站和为一家服务企业设计网站,两者有无区别? 当然有区别。区别在哪里呢?可能一些建站公司会总结出“配色区别”“构架区别”等等。 那么,为什么存在这样的区别呢?我们认为服务业与制造业,从网站设计的角度而言,有如下根本性的差异。  ...

    查看全文
  • 建站OR入驻第三方平台?建鱼塘OR钓鱼?

    413

    建官网对应开设公众号、做小程序,做企业商城对应入驻第三方电商平台,自己开店对应直播。我们可以将前者称之为建站,将后者称之为入驻第三方建站平台。 企业主一旦寻求互联网B端服务,总是会遇到两个选择——选前者还是选后者?   “钓鱼就应该去鱼多的地方钓”...

    查看全文
  • 建站还是小程序:商业和社交并不完全相通

    310

    互联网风风雨雨这么多年,有一个问题,始终令人不解—— 为何阿里想要做社交,但是却始终做不起来?为何社交平台不断尝试商业,但是总比不过纯商业平台?举例来说,支付宝也尝试过社交,但是社交人气总是起不来。微信的朋友圈,开始充斥广告,越来越多的人,开始讨厌...

    查看全文
  • 什么是内容优先的网页设计以及如何做?

    351

    内容优先设计不仅仅是完成任务的顺序。内容优先设计也将内容按重要性顺序放在首位。商业网站的目标是将访问者转化为客户。而用户首先看到的是文字内容,这也是为何要设计内容优先网页的原因。内容优先web设计围绕内容构建网站,反之亦然。这个概念适用于网站的品牌、...

    查看全文
展开更多