简体   繁体   English

jQuery .. div显示/滑动?

[英]jQuery.. div reveal/slide?

I have a div, which has content in it. 我有一个div,其中包含内容。

The content could be really long, or the content could be really small. 内容可能很长,也可能很小。

I don't want the content to stretch the page on page load if it is long, I want them to click a "more" link and it will slide down and reveal the rest of the content. 如果内容太长,我不希望内容在页面加载时拉伸页面,我希望他们单击​​“更多”链接,它将向下滑动并显示其余内容。

For example: 例如:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor坐下,一直保持着安静的状态。 Suspendisse vulputate mi egestas ligula feugiat volutpat. 悬韧带状小舌小叶紫癜。 Morbi eros felis, aliquam in varius id, sodales quis nunc. Morbi eros felis,阿里夸姆(varius id),sodales quis nunc。 Nulla sagittis consectetur arcu, sed auctor odio placerat quis. Nulla sagittis consectetur arcu,sed auctor dioo placerat quis。 Praesent vitae lacus neque. Praesent vitae lacus neque。 Curabitur ultricies tristique sollicitudin. Curabitur ultricies tristique sollicitudin。 Suspendisse malesuada nunc at augue interdum at facilisis ipsum gravida. Suspendisse malesuada nunc在facilisis ipsum gravida的augue interdum。

Below it is a bar or link that says "show the rest" 它下方是一个显示“显示其余内容”的栏或链接

Up on click, this div lengthens and shows the rest of the content: 点击后,此div就会加长并显示其余内容:

Nunc congue sapien sed sem tincidunt ut adipiscing neque lacinia. Nunc congue sapen sed sem tincidunt ut adipiscing neque lacinia。 Praesent facilisis quam sed tellus sodales id tristique massa ullamcorper. Praasent facilisis quad sed tellus sodales id tristique massa ullamcorper。 Donec sem turpis, cursus in elementum id, tincidunt a libero. Donec sem turpis,基本元素的诅咒,libcidunt libero。 Etiam feugiat, sem quis dictum imperdiet, nisl ante pharetra erat, ut ornare nulla justo ac sapien. Etiam feugiat,sem quis dictum imperdiet,nisl ante pharetra erat,ut ornare nulla justo ac sapien。

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor坐下,一直保持着安静的状态。 Suspendisse vulputate mi egestas ligula feugiat volutpat. 悬韧带状小舌小叶紫癜。 Morbi eros felis, aliquam in varius id, sodales quis nunc. Morbi eros felis,阿里夸姆(varius id),sodales quis nunc。 Nulla sagittis consectetur arcu, sed auctor odio placerat quis. Nulla sagittis consectetur arcu,sed auctor dioo placerat quis。 Praesent vitae lacus neque. Praesent vitae lacus neque。 Curabitur ultricies tristique sollicitudin. Curabitur ultricies tristique sollicitudin。 Suspendisse malesuada nunc at augue interdum at facilisis ipsum gravida. Suspendisse malesuada nunc在facilisis ipsum gravida的augue interdum。 Nunc congue sapien sed sem tincidunt ut adipiscing neque lacinia. Nunc congue sapen sed sem tincidunt ut adipiscing neque lacinia。 Praesent facilisis quam sed tellus sodales id tristique massa ullamcorper. Praasent facilisis quad sed tellus sodales id tristique massa ullamcorper。 Donec sem turpis, cursus in elementum id, tincidunt a libero. Donec sem turpis,基本元素的诅咒,libcidunt libero。 Etiam feugiat, sem quis dictum imperdiet, nisl ante pharetra erat, ut ornare nulla justo ac sapien. Etiam feugiat,sem quis dictum imperdiet,nisl ante pharetra erat,ut ornare nulla justo ac sapien。

I know itll be hard to control what will be cut off, blah blah but it isn't for that type of thing. 我知道很难控制将要切断的内容,等等,但这不是针对这种事情的。 The div does not contain text, it contains a list of features, for example X listing may have 4 features, Z listing may have 14 features, instead of the page stretching if the listing has 14 features listed vertically, we want it to only show a few and then they must click "show me more" for it to slide down and reveal the rest. div不包含文本,它包含功能列表,例如X列表可能具有4个功能,Z列表可能具有14个功能,如果列表垂直列出了14个功能,则不进行页面拉伸,我们只希望它显示几下,然后他们必须单击“显示更多”,以使其向下滑动并显示其余部分。

How would I go about doing this? 我将如何去做呢? Even a jsfiddle to demonstrate it? 甚至用jsfiddle来演示吗?

Thank you :) 谢谢 :)

Try giving a fixed height to the div. 尝试给div指定一个固定的高度。 You can use CSS for this. 您可以为此使用CSS。 Then compare height of the list with the outer div. 然后将列表的高度与外部div进行比较。 If it is greater show the bar with link show more . 如果更大,则显示带有链接的栏, 显示更多 On click of this bar you can manage the height of outer div. 单击此栏,您可以管理外部div的高度。 Like this - 像这样 -

CSS CSS

   .parentDiv{
              height:some fixed height px;
              overflow: auto;
              }

Jquery jQuery的

          var parentHeight = $('.parentDiv').height();
          var listHeight = $('#List').outerHeight(true);
          if(parentHeight < listHeight) {
                   $('#linkBar').show();
                }
          $('#linkBar').click(function(){
            //$('.parentDiv').height(listHeight);
            //OR you can use following code to animate the div
            $('.parentDiv').animate({'height': listHeight}, 'slow')
            });

Here's a working demo of my implementation (coincidentally similar to the answer given above; I was making this before any answers were given): http://jsfiddle.net/7fhrN/15/ 这是我的实现的工作演示(碰巧类似于上面给出的答案;在给出任何答案之前我正在这样做): http : //jsfiddle.net/7fhrN/15/

It works for users without JavaScript and gives graceful degradation to your page. 它适用于使用JavaScript的用户并可以优雅地降级您的页面。 Try switching the JS library to something random on JsFiddle and click Run . 尝试在JsFiddle上将JS库切换为随机变量,然后单击Run

HTML: HTML:

<div class="stretchy">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse vulputate mi egestas ligula feugiat volutpat. Morbi eros felis, aliquam in varius id, sodales quis nunc. Nulla sagittis consectetur arcu, sed auctor odio placerat quis. Praesent vitae lacus neque. Curabitur ultricies tristique sollicitudin. Suspendisse malesuada nunc at augue interdum at facilisis ipsum gravida.</div>
<div class="stretchy">Nunc congue sapien sed sem tincidunt ut adipiscing neque lacinia. Praesent facilisis quam sed tellus sodales id tristique massa ullamcorper. Donec sem turpis, cursus in elementum id, tincidunt a libero. Etiam feugiat, sem quis dictum imperdiet, nisl ante pharetra erat, ut ornare nulla justo ac sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse vulputate mi egestas ligula feugiat volutpat. Morbi eros felis, aliquam in varius id, sodales quis nunc. Nulla sagittis consectetur arcu, sed auctor odio placerat quis. Praesent vitae lacus neque. Curabitur ultricies tristique sollicitudin. Suspendisse malesuada nunc at augue interdum at facilisis ipsum gravida. Nunc congue sapien sed sem tincidunt ut adipiscing neque lacinia. Praesent facilisis quam sed tellus sodales id tristique massa ullamcorper. Donec sem turpis, cursus in elementum id, tincidunt a libero. Etiam feugiat, sem quis dictum imperdiet, nisl ante pharetra erat, ut ornare nulla justo ac sapien.</div>

CSS: CSS:

.stretchy
{
    margin: 20px;
    padding: 5px;
    background-color: rgb(240, 240, 240);
    overflow: hidden;

    position: relative;

    padding-bottom: 20px;
}

.inner
{
    max-height: 120px;
    overflow: hidden;
}

.reveal
{
    position: absolute;
    bottom: 0px;
}

JavaScript: JavaScript的:

$(document).ready(function()
{
  $('.stretchy').each(function()
  {
    if ($(this).height() > 130)
    {
      $(this).replaceWith('<div class="stretchy"><div class="inner">' + $(this).html() + '</div><a href="#" class="reveal">Show me more lipsum</a></div>');
    }
  });

  $('.reveal').toggle(function()
  {
    $(this).parent().find('.inner').animate({maxHeight: '1000px'});
  }, function() {
    $(this).parent().find('.inner').animate({maxHeight: '120px'});
  });
});

Basically, I iterate over all the <div> s with the class stretchy . 基本上,我遍历所有<div> s的类stretchy If they are too big, I replace them with a <div> with a container and a link at the bottom which changes the max-height of the inner <div> to some ridiculous value. 如果它们太大,我将其替换为带有容器的<div>和底部的链接,该链接将内部<div>max-height更改为一些可笑的值。

Just try it. 去尝试一下。 Seeing > having me explain it to you. 看到>让我向您解释。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM