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

使用CSS时,对于多行溢出块使用“…”

曹建明
2023-03-14
问题内容

overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;

如果溢出,将在行的末尾显示“ …”。但是,这将仅显示在一行中。但我希望将其以多行显示。

它可能看起来像:

+--------------------+
|abcde feg hij   dkjd|
|dsji jdia js ajid  s|
|jdis ajid dheu d ...|/*Here it's overflowed, so "..." is shown. */
+--------------------+

问题答案:

使用PushState和预合成
实现方法是使用JavaScript pushState方法。

PushState更改顶部浏览器栏中的URL,而无需重新加载页面。假设您有一个包含标签的页面。选项卡隐藏和显示内容,并且可以使用AJAX或通过简单地设置display:none和display:block来隐藏和显示正确的选项卡内容,从而动态插入内容。

单击选项卡后,使用pushState更新地址栏中的URL。呈现页面后,使用地址栏中的值确定要显示的选项卡。角路由将自动为您执行此操作。

预合成

有两种方法可以打入PushState单页应用程序(SPA)

  1. 通过PushState,用户单击PushState链接,然后将内容AJAXed到其中。
  2. 通过直接点击URL。
    网站上的最初匹配将涉及直接匹配URL。当PushState更新URL时,随后的命中内容将只是AJAX。

抓取工具从页面中收集链接,然后将其添加到队列中以供以后处理。这意味着对于爬虫而言,服务器上的每个命中都是直接命中,它们不会通过Pushstate进行导航。

预组合将初始有效负载捆绑到服务器的第一个响应中,可能作为JSON对象。这使搜索引擎无需执行AJAX调用即可呈现页面。

搜索引擎可以读取和执行JavaScript
Google能够解析JavaScript已有一段时间了,这就是他们最初开发Chrome的原因,以充当Google蜘蛛的全功能无头浏览器。如果链接具有有效的href属性,则可以为新URL编制索引。没什么可做的了。

如果另外单击链接触发了pushState调用,则用户可以通过PushState导航该站点。

搜索引擎对PushState URL的支持
Google和Bing当前支持PushState。

不要使用HashBangs#!
Hashbang网址是一个丑陋的权宜之计,要求开发人员在特定位置提供网站的预渲染版本。它们仍然有效,但是您不需要使用它们。

Hashbang URL如下所示:

domain.com/#!path/to/resource

它将与这样的元标记配对:

<meta name="fragment" content="!">

Google不会以这种形式将它们编入索引,而是会从_escaped_fragments_ URL中提取网站的静态版本并对其进行索引。

Pushstate URL看起来像任何普通URL:

domain.com/path/to/resource

区别在于Angular通过拦截JavaScript中对document.location的更改来为您处理这些更改。

如果您想使用PushState URL(并且您可能会这样做),请删除所有旧的哈希样式URL和元标记,然后在配置块中启用HTML5模式。

在Angular中生成PushState URL
要在Angular中生成真实的URL,而不是前缀的#,请在$ locationProvider对象上设置HTML5模式。

$locationProvider.html5Mode(true);

服务器端

由于您使用的是真实网址,因此您需要确保服务器为所有有效的网址提供了相同的模板(加上一些预先组合的内容)。如何执行此操作将取决于服务器体系结构。

网站地图

您的应用可能会使用异常的导航形式,例如,悬停或滚动。为了确保Google能够驱动您的应用,我可能建议您创建一个站点地图,这是您的应用所响应的所有网址的简单列表。您可以将其放置在默认位置(/ sitemap或/sitemap.xml),也可以使用网站站长工具将其告知Google。

无论如何,拥有一个站点地图是一个好主意。

浏览器支持

Pushstate可在IE10中使用。在较旧的浏览器中,Angular将自动回退到哈希样式的URL



 类似资料:
  • 问题内容: 与 如果溢出,将在行的末尾显示“ …”。但是,这将仅显示在一行中。但我希望将其以多行显示。 它可能看起来像: 问题答案: 我设法做到这一点。它带有一些警告: 它不是纯CSS;它不是纯CSS。您必须添加一些HTML元素。但是,不需要JavaScript。 省略号在最后一行右对齐。这意味着,如果您的文本未正确对齐或对齐,则最后一个可见单词和省略号之间可能会有明显的差距(取决于第一个隐藏单词

  • 问题内容: 我想使用rxjava Observable处理翻新中的分页。我听了另一个问题的建议。 我有100多个页面需要获取,但是链在第20页左右失败,并且在logcat中使用以下日志停止了对可观察对象的任何进一步订阅 有人知道为什么会发生这种情况吗? 更新: 我知道这是由于递归而发生的,但是有没有更优雅的方式来处理带有翻新和rxjava的分页? 问题答案: 因此,鉴于我回答了您引用的原始问题,我

  • 问题内容: 最近,我在尝试执行操作时遇到了很奇怪的错误: SqlDateTime溢出。必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。 关键是,我只用于在对象中设置属性,并且在调用该属性后将其显示为应有的状态。 以前没有发生过,现在该功能总是中断。我完全一无所知-我的SQL Server上的日期似乎还可以。 可能是什么原因造成的? 编辑 我认为这

  • 在下面的代码中, 我有一个父div(.parent)和三个子div(.child1、.child2、.child3) 要求- 。儿童2应该重叠。儿童3 。child2应该可以水平滚动 问题- 使用绝对位置设置overflow-x不起作用。 如何使此表可滚动,以及使其与下面的所有div重叠? 企图-

  • 预备条件: 这篇文章中,让我们了解如何使用 unlink 技巧成功利用堆溢出。但是在了解它之前,首先让我们看看漏洞程序: 上面程序的行会导致堆溢出。用户输入argv[1]复制给了堆缓冲区first,没有任何大小限制。因此,当用户输入大于 666 字节时,它就会覆盖下一个块的头部。这个溢出会导致任意代码执行。 看一看漏洞程序的堆内存图片: unlink:这个技巧的核心思想,就是欺骗 glibc ma

  • 问题内容: .flex-container { 当我删除flex属性时,它工作正常。 我想知道为什么柔韧性会影响省略号。 TIA 问题答案: 您的问题在于缺少“灵活的孩子”。这些将需要包含样式以截断元素,而不是父容器。 尝试将truncate属性移动到一个单独的类,如下所示: