首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >溢出:当位置:绝对时隐藏不工作

溢出:当位置:绝对时隐藏不工作
EN

Stack Overflow用户
提问于 2016-04-05 08:45:05
回答 2查看 941关注 0票数 0

我正在尝试构建一个UI组件,其思想是有两个重叠的部分(第一个部分必须包括第二个部分),并使用一个可拖放的元素展开第一个部分。我提供给你一个演示:

http://codepen.io/LazarGeorgiev/pen/yOPbmx

问题是,当我调整第一个元素的大小时,我不希望这些元素重新定位,为了达到这个目的,我使用了position:absolute;,它显然阻止了我的overflow:hidden;

我查看了StackOverflow上的一些帖子,其中应该在外部<div>元素上使用position:relative;,这在这里不起作用,因为它阻止了position:absolute;

因此,我的问题是,如何使它隐藏时,调整大小,而不重新定位元素在里面。

最里面的<div>.the-content,外部是.first

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-05 15:02:46

你能用固定的吗?如果是的话,下面的代码应该适用于您。

代码语言:javascript
复制
(function($)
{
    $sectionheight = $('.covered').height();
    $.fn.coveringBad = function(options)
    {
        var settings = $.extend(
        {
            marginY: $sectionheight / 2,
            marginX: 30,
            setX: 30,
            setY: 30,
            direction: "horizontal"
        }, options);
        return this.each(function()
        {
            // Initialization
            ////////////////////////////////
            var $this = $(this),
                $changeable = $this.find('>.changeable'),
                $handle = $this.find('>.handle'),
                width = $this.innerWidth(),
                height = $this.innerHeight(),
                pos_x = null,
                startX = null,
                min_left = settings.marginX,
                max_left = width - settings.marginX,
                min_top = settings.marginY,
                max_top = height - settings.marginY,
                setX = settings.setX,
                setY = settings.setY;
            $changeable.height($this.height());
            if (setX < min_left)
            {
                setX = min_left;
            }
            if (setY < min_top)
            {
                setY = min_top;
            }
            $handle.css('left', setX);
            $handle.css('top', setY);
            // Direction
            //////////////////////////////////
            $changeable.width(setX);
            $changeable.css('border-right', '1px dashed #FFF');
          
            // Dragging Bad
            //////////////////////////////////
            $handle.on('mousedown', function(event)
            {
                event.preventDefault();
                $handle.addClass('draggable');
                pos_x = parseInt($handle.css('left'));
                startX = event.pageX;
            });
            $(document).on('mouseup', function(event)
            {
                $handle.removeClass('draggable');
            });
            $this.bind('mousemove', dragger);

            function dragger(e)
                {
                    var left = pos_x + (e.pageX - startX);
                    if (left < min_left) left = min_left;
                    else if (left > max_left) left = max_left;
                    $('.draggable').css('left', left);
                    if ($('.draggable').length)
                    {
                        $changeable.width(left);
                    }
                }
        });
    }
})(jQuery);
$('.covered').coveringBad();
代码语言:javascript
复制
.covered {
  position: relative;
	width  : 600px;
	height : 400px;
	margin : 50px auto;
	border:1px solid black;
}

.changeable {
  position: static;
  overflow: hidden;
}
.first {
  width:100%;
  height:100%;
  background-color:white;
  overflow:hidden;
}
.the-content{
  position: relative;
  width: 600px;
  padding: 10px;
}
.second{
  position:absolute;
  z-index:-1;
  margin-left:50px;
  padding:10px;
}
.second h3 {
  margin-left:450px;
}
.logo{
  width:70px;
  margin-right:15px;
  margin-bottom:15px;
}
.handle {
	position: absolute;
	width : 46px;
	height: 46px;
	margin-left  : -23px;
	margin-top   : -23px;
	border-radius: 50%;
	background-color: #fff;
	text-align : center;
  cursor:ew-resize;
  z-index:2;
}

.handle span {
	display : inline-block;
	margin : 15px 1px 0;
	color : #000;
	transition : 0.4s ease-out;
}

.handle:hover, .handle:active {
	background-color: #555;
}

.handle:hover span, .handle:active span {
	color : #FFF;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="covered">
  <div class="second">
    <h3> Clients</h3>
    <img class="logo" src="http://images.all-free-download.com/images/graphicthumb/nike_logo_30021.jpg">
    <img class="logo" src="http://images.all-free-download.com/images/graphicthumb/nike_logo_30021.jpg">
    <img class="logo" src="http://images.all-free-download.com/images/graphicthumb/nike_logo_30021.jpg">
    <img class="logo" src="http://images.all-free-download.com/images/graphicthumb/nike_logo_30021.jpg">
    <img class="logo" src="http://images.all-free-download.com/images/graphicthumb/nike_logo_30021.jpg">
    <img class="logo" src="http://images.all-free-download.com/images/graphicthumb/nike_logo_30021.jpg">
     
  </div>
  
  <div class="handle">
    <span class="left icon-chevron-left"></span>
    <span class="right icon-chevron-right"/></span>
  </div>
  
  <div class="changeable">
    <div class="first">
      <div class="the-content">
        <h3>Partners</h3>
        <img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Adidas_Logo.svg/2000px-Adidas_Logo.svg.png">
        <img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Adidas_Logo.svg/2000px-Adidas_Logo.svg.png">    <img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Adidas_Logo.svg/2000px-Adidas_Logo.svg.png">    <img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Adidas_Logo.svg/2000px-Adidas_Logo.svg.png">    <img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Adidas_Logo.svg/2000px-Adidas_Logo.svg.png">    <img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Adidas_Logo.svg/2000px-Adidas_Logo.svg.png">    <img class="logo" src="https://upload.wikimedia.org/wikipedia/commons/thumb/2/20/Adidas_Logo.svg/2000px-Adidas_Logo.svg.png">

      </div>
    </div>
  </div>
</div>

票数 0
EN

Stack Overflow用户

发布于 2016-04-05 09:02:35

看来你在js里的逻辑是错的。你的耐克标识只是因为z索引而不是溢出隐藏的。

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

https://stackoverflow.com/questions/36421332

复制
相关文章

相似问题

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