【问题标题】:Expandable paragraphs with HTML and CSS带有 HTML 和 CSS 的可扩展段落
【发布时间】:2014-08-25 16:09:46
【问题描述】:

我想知道这里是否有人愿意帮助我。我正在寻找为我客户的网站制作可扩展的段落。他们想保留他们网站上的所有内容,这是相当庞大的,他们希望对设计进行全面改革。他们主要是为了 SEO 目的而保留它。无论如何,我认为如果有某种方法可以使用可扩展段落(您知道,在某行文本之后带有“阅读更多...”链接),这对双方的使用都会有所帮助。 我知道有一些 JQuery 和 Java 解决方案可以解决这个问题,但如果可能的话,我们真的希望远离这些选项。如果可以的话,什么时候需要 HTML 和 CSS。

这是一个例子:

前往这里

带有一堆文字的段落。我希望它出现在预定的行中。例如,也许段落的开头持续了三行,然后我们有 [阅读更多...]

当访问者点击“阅读更多”时,我们希望将其余内容展开以完整显示文章。我希望内容已经在页面上,所以它只是扩展。如果有意义的话,我不希望从另一个文件或任何东西中调用它。 预先感谢您的任何帮助。将不胜感激!

试听

【问题讨论】:

  • 如果没有 Javascript,你真的无法做到这一点。但它只需要几行,你不需要使用 jQuery。您将使用 CSS 设置所有内容。有两个类,一个“显示”和一个“隐藏”,只需使用带有 onClick 的按钮并使用 Javascript 将该元素的类从显示更改为隐藏。如果您愿意使用一点 JS,请告诉我并发布正确的答案
  • 感谢您的回复!我不介意使用 JavaScript。如果你愿意,我愿意接受你的提议。如果我可以向我的客户展示它是轻量级的并且不会打扰他们,他们很可能会使用它。他们担心使用脚本会对加载时间和 SEO 结果产生负面影响。如果你能帮助我,那就太好了。谢谢!
  • 添加了非 js/jQuery 解决方案。它可以工作,但不会那么漂亮。

标签: html css expandable paragraphs


【解决方案1】:

一个简单的解决方案就是这样

您只需要在 css 中使用 display: none;display: block; 进行 2 个切换事件

http://jsfiddle.net/6W7XD/1/

of course you would need to pre-program where you want to start the hide by including a div of it with the close button span inside the div to do the toggles

如果你决定用javascript它 这是您可以查看的内容

http://jedfoster.com/Readmore.js/

【讨论】:

    【解决方案2】:

    我认为你需要使用 Jquery 或 Javascript

    $('a').click(function() {
        var p = $('a').prev('p')
        var lineheight = parseInt(p.css('line-height'))
        if (parseInt(p.css('height')) == lineheight*2) {
           p.css('height','auto');
           $(this).text('Less')
        } else {
           p.css('height',lineheight*2+'px');
           $(this).text('More')
        }
    });
    

    DEMO

    【讨论】:

    • 我也会这样做。当然,还有一点造型。并且可能使用动画而不是 css,以减少不和谐的过渡。
    • @JamesKorden:- 但为此你需要使用 JQuery。当然,您可以添加样式。您可以查看此以获取详细信息:- webdevdoor.com/jquery/expandable-collapsible-panels-jquery/:)
    • 啊,是的,这在一定程度上可以通过 css 实现,但你真的希望 jQuery 能够很好地处理这个问题。
    • @JamesKorden:- 是的,这就是我在第一行提到的原因;)
    • 感谢您的回复。我会看看你的建议。如果它工作顺利,那么我可能能够说服他们使用它。他们担心脚本会对 SEO 结果和页面加载产生负面影响。
    【解决方案3】:

    这可以使用:target 选择器来实现,用于无 jQuery/Javascript 的选项。

    为此,您需要将每个扩展文本设置为目标(给它们一个 id)。然后,将“显示更多”选项卡设置为上述 id/target 的目标。

    类似:

    .article {
        position: relative;
        border: 1px solid grey;
        overflow: hidden;
        width: 300px;
    }
    .article:target {
        height: auto;
    }
    .article:not(target) {
        height: 50px;
    }
    .toggle {
        padding: 2px;
        position: absolute;
        right: 0px;
        bottom: 0px;
        background: white;
        border: 1px solid red;
    }
    

    您可以查看可测试的小提琴here

    请注意,我使用:not(:target) 来确保未选中时它的大小正确。

    【讨论】:

    • 提前感谢您的回复。我不认为他们会挖掘那个,但这绝对是一种方法。我将尝试一些脚本,看看是否可以让他们看到它有效。
    • 他们不喜欢什么?样式并没有真正完成,但这并不真正在问题的范围内。如果这是问题,我可以提供更好的样式示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 2021-11-02
    • 2014-09-23
    • 1970-01-01
    相关资源
    最近更新 更多