当前位置: 首页 > 面试题库 >

如何创建“显示更多”按钮并指定最初可以显示多少行文本

左丘繁
2023-03-14
问题内容

我正在寻找一种在响应式网站上创建幻灯片“显示更多”功能的方法,该功能在段落的 两行 之后会中断。

之前,我是通过静态网站来实现此目的的,方法是对容器应用设置的高度并使用overflow: hidden,然后对容器的高度进行动画处理。

但是,由于具有响应能力,容器以不同的浏览器宽度压缩文本,因此文本可能会占用更多/更少的空间。每次按下该段落时,该段落上方也可能有不同的内容。因此,该设置height可能无法完全覆盖两行。

因此,无论容器的宽度是多少,或者该段之前或之后的内容,我都需要在该段的两行之后截断。

感谢您的光临!


问题答案:

从小提琴开始,将内容包装到中<div>,默认类为content,用于选择,单击链接时hideContent将替换为的类。
showContent``show more/show less

我还删除了<p>文本所在的位置。该文本现在位于content-div中,并且我们现在还能够应用正确的高度和行高设置。

HTML:

<div class="text-container">
    <h1>Title goes here</h1>
    <h2>Subtitle</h2>
    <div class="content hideContent">
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
        <p>Some more text</p>
        <ul>
            <li>Some more text</li>
            <li>Some more text</li>
            <li>Some more text</li>
        </ul>
    </div>
    <div class="show-more">
        <a href="#">Show more</a>
    </div>
</div>​

CSS:

.hideContent {
    overflow: hidden;
    line-height: 1em;
    height: 2em;
}

.showContent {
    line-height: 1em;
    height: auto;
}

我假设设置line-height将确保在所有浏览器中都相同。不过,我不确定100%。

我将click事件附加到“显示更多”链接,该链接使用jQueryUI
switchClass() 在div上切换类:

$(".show-more a").on("click", function() {
    var $this = $(this); 
    var $content = $this.parent().prev("div.content");
    var linkText = $this.text().toUpperCase();

    if(linkText === "SHOW MORE"){
        linkText = "Show less";
        $content.switchClass("hideContent", "showContent", 400);
    } else {
        linkText = "Show more";
        $content.switchClass("showContent", "hideContent", 400);
    };

    $this.text(linkText);
});​

JsFiddle演示-显示更多/显示更少,并应用行高和动画

$(".show-more a").on("click", function() {

  var $this = $(this);

  var $content = $this.parent().prev("div.content");

  var linkText = $this.text().toUpperCase();



  if (linkText === "SHOW MORE") {

    linkText = "Show less";

    $content.switchClass("hideContent", "showContent", 400);

  } else {

    linkText = "Show more";

    $content.switchClass("showContent", "hideContent", 400);

  };



  $this.text(linkText);

});


div.text-container {

  margin: 0 auto;

  width: 75%;

}



.hideContent {

  overflow: hidden;

  line-height: 1em;

  height: 2em;

}



.showContent {

  line-height: 1em;

  height: auto;

}



.showContent {

  height: auto;

}



h1 {

  font-size: 24px;

}



p {

  padding: 10px 0;

}



.show-more {

  padding: 10px 0;

  text-align: center;

}


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>

<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>



<div class="text-container">

  <h1>Title goes here</h1>

  <h2>Subtitle</h2>

  <div class="content hideContent">

    Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata

    sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.

    <p>Some more text</p>

    <ul>

      <li>Some more text</li>

      <li>Some more text</li>

      <li>Some more text</li>

    </ul>

  </div>

  <div class="show-more">

    <a href="#">Show more</a>

  </div>

</div>

上面的代码仅是示例,但应该使您入门正确。



 类似资料:
  • 问题背景: 显示一段文本,如果文本超过十行显示展开,收起按钮,按钮占一整行。文本有换行符。 问题:怎么计算文本实际占多少行。 尝试:使用z-index= -1先显示文本,计算文本高度。大于一个固定高度高度来判断。是否超过十行。 疑问:

  • 我有一个非常简单的布局,但当我在我的片段的中调用时,它最初不会显示。 它只在我拉刷新时显示。知道为什么它一开始没有显示吗? 片段xml: 片段代码:

  • 隐藏过长的文章,点击按钮显示更多内容。 标题 内容 类型 通用 支持布局 responsive, fixed-height, fill, container, fixed 所需脚本 https://c.mipcdn.com/static/v2/mip-showmore/mip-showmore.js 示例 设定像素单位的高度阈值 在按钮中增加 on 属性,注意 on 属性中需要填写对应 <mip-

  • 我正在开发一个使用ActionBarSherlock和SlidingMenu的Android应用程序。 现在,我显示打开菜单的按钮: 但我不想表现出来 这就是我设置滑动菜单的方式: 我怎么才能去掉那个 当我点击那个按钮时,我打开了滑动菜单。 更新: 在黑带回答之后,我做了以下事情: 样式。xml: 显示xml: 结果: 我可以看到绿色的Android!!!我不想看到它!!

  • 就是这个班 我想将当前日期显示为文本输入按钮。(以下是按钮的布局。) 这是设置文本输入按钮的.kt代码

  • 我在微型MCE配置中添加了缩进和向外缩进按钮,如下所示: tinyMCE.init({ // 常规选项模式:“textareas”,主题:“高级”,editor_selector:cl2,皮肤:“o2k7”,插件:“advimage,advlink,spellchecker,inlinepopups,contextmenu,paste,noneditable,mergefields” , spel