首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素(和动画)的垂直分布- jQuery

元素(和动画)的垂直分布- jQuery
EN

Stack Overflow用户
提问于 2015-06-01 15:51:01
回答 1查看 142关注 0票数 1

我想知道用jQuery垂直分布元素的最干净的方法。我搞定了,但它不是很干净,对吗,><?我想在没有插件的情况下.预先谢谢你;)

我的JSFiddle

代码语言:javascript
复制
jQuery(document).ready(function($) {
var gap         = 10;
var firstElem   = $('#lorem');
if(firstElem.length){
    var heightCall  = (firstElem.offset().top)+(firstElem.outerHeight())+(gap);
    var middleElem  = $('#dolore');
    middleElem.offset({top : heightCall});
    var lastElem   = $('#amet');
    var NewHeightCall  = (middleElem.offset().top)+(middleElem.outerHeight())+(gap);
    lastElem.offset({top : NewHeightCall});

    /* Animation */
    $('#lorem, #dolore, #amet').hover(
        function(){
            $(this).stop().animate({left: (($(this).offset().left)-(20))+'px',opacity:'0.5'},'slow')
        },
        function(){
            $(this).stop().animate({left: (($(this).offset().left)+(20))+'px',opacity:'1'},'slow')
    });
}

});

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 16:16:40

我篡改了你的代码:

这是一个简化的版本: HTML:

代码语言:javascript
复制
<div id="lorem" class="vertical-block">My first ID div</div>
<div id="dolore" class="vertical-block">My second ID div.<br>My second ID div. My second ID div.</div>
<div id="amet" class="vertical-block">My third ID div</div>

CSS:

代码语言:javascript
复制
.vertical-block {
    position: absolute;
    padding:15px;
}
#lorem{
    top:20%;
    right:40px;
    background:#f79673;
}
#dolore{
    right:80px;
    background:#cd7454;
}
#amet{
    right:40px;
    background:#a15338;
}

.vertical-block:hover {
    opacity: 0.5;
    padding-right: 30px;
    -webkit-transition: all 2s;
    transition: all 0.4s;
}

Javascript:

代码语言:javascript
复制
jQuery(document).ready(function($) {
    var gap         = 10;
    var firstElem   = $('#lorem');
    var top = 0;

    $('.vertical-block').each(function(element){
        var $currentElement = $(this);
        if (top === 0) {
            top = $currentElement.offset().top + $currentElement.outerHeight() + gap;
        } else {
            $currentElement.offset({top: top});
            top = top + $currentElement.outerHeight() + gap;
        }
    });
});

https://jsfiddle.net/rae2x4e0/1/

现在,如果您想使用纯css解决方案,那么:

HTML:

代码语言:javascript
复制
<div class="container">
    <div id="lorem" class="vertical-block">My first ID div</div>
    <br />
    <div id="dolore" class="vertical-block">My second ID div.<br>My second ID div. My second ID div.</div>
    <br />
    <div id="amet" class="vertical-block">My third ID div</div>
</div>

CSS:

代码语言:javascript
复制
.container {
    position-relative;
    text-align: right;
    padding-top: 10%;
}    
.vertical-block {
    padding:15px;
    display: inline-block;
    margin-top: 20px;
}
#lorem{
    right:40px;
    background:#f79673;
}
#dolore{
    right:80px;
    background:#cd7454;
}
#amet{
    right:40px;
    background:#a15338;
}

.vertical-block:hover {
    opacity: 0.5;
    padding-right: 30px;
    -webkit-transition: all 2s;
    transition: all 0.4s;
}

https://jsfiddle.net/ycdwpjxw/1/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30577861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档