【问题标题】:jQuery Change line-height in CSS depending on number of charactersjQuery根据字符数更改CSS中的行高
【发布时间】:2012-03-29 21:37:46
【问题描述】:

我的网站上有一个 Twitter 小部件,其中显示了我们公司的最新推文。但是,如果推文超过一定长度,则它不适合网站上的容器并被切断。我想根据推文中的字符数以编程方式更改元素的行高 css。

定义这部分元素的 CSS 如下所示:

ul.tweet_list li{overflow-y: hidden;overflow-x: hidden;padding: 0.5em !important;height: 55px;line-height:55px;vertical-align: middle}

在页面上,元素仅由以下代码生成:

<div class="tweeter_widget"></div>

我需要检测推文是否超过“X”个字符,如果是,请将行高从 55 像素更改为 24 像素。我不是要垂直居中文本,而是..

示例:http://justpaste.it/twitter-widget 如果文本太长,它会在您看到其上方的“白色容器”结束的地方切断。我想更改此文本“条”的行高,使其换行到下一行并留在我的“红色”容器中。

理论上,这可以使用 PHP 完成,但我知道我可能需要使用 jQuery。

编辑:这是生成推文的 JS:

/* Twitter initiates. Enter your username here. */
jQuery(function($){
      $(".tweeter_widget").tweet({
        join_text: "auto",
        username: "username",
        avatar_size: null,
        count: 1,
        auto_join_text_default: "",
        auto_join_text_ed: "",
        auto_join_text_ing: "",
        auto_join_text_reply: "",
        auto_join_text_url: "",
        loading_text: "loading tweets..."
      });
    });

【问题讨论】:

  • 您要解决的实际问题是“如何使文本垂直居中”吗?
  • 我更新了问题...查看链接以获取屏幕截图

标签: php javascript jquery css


【解决方案1】:

see this fiddle

var cnt =  $(".tweeter_widget").text().length;
if (cnt > 10) {
    $(".tweeter_widget").css("line-height", "5px"); 
} 

ie:如果包含 Tweet 的 div 中超过十个字符,则更改行高。

【讨论】:

  • 好吧,这行得通,但由于某种原因,它完全把它扔出了页面。就像,它不会移动它正确的空间量或其他东西。我应该把这段代码放在哪里?
  • 实际上,由于某种原因,这段代码根本没有显示文本..?
  • 你可以把5px改成25px(5px太小了)
  • 如果 line-height 属性已经存在,是否需要在使用此代码更新之前清除它?我不确定它为什么不显示,但我认为这是因为这个 CSS 属性被应用了两次?
  • 还有一件事:推文显示在ul.tweet_list li 中,那么如果我不能将类或id 应用于此li 元素,我该如何更改此元素的行高?例如,我不需要更改 .tweeter_widget 代码中的行高,而是需要更改 ul.tweet_list li 的行高。
【解决方案2】:

已编辑代码以包含在推文 DIV 设置器中,尽管可能仍有一些工作要做:

/* Twitter initiates. Enter your username here. */
jQuery(function($){
      $(".tweeter_widget").tweet({
        join_text: "auto",
        username: "username",
        avatar_size: null,
        count: 1,
        auto_join_text_default: "",
        auto_join_text_ed: "",
        auto_join_text_ing: "",
        auto_join_text_reply: "",
        auto_join_text_url: "",
        loading_text: "loading tweets..."
      });
      if ($(".tweeter_widget").html().length > X)
      {
         $(".tweeter_widget").css('line-height', '24px');
      }
});

由于此更新动态更新,您可能需要通过某种回调来延迟此更新。如果我正确理解了 tweet API,您可以使用 filter 参数来执行此操作:

/* Twitter initiates. Enter your username here. */
jQuery(function($){
      $(".tweeter_widget").tweet({
        join_text: "auto",
        username: "username",
        avatar_size: null,
        count: 1,
        auto_join_text_default: "",
        auto_join_text_ed: "",
        auto_join_text_ing: "",
        auto_join_text_reply: "",
        auto_join_text_url: "",
        loading_text: "loading tweets...",
        filter: function(t) { 
                   if (t.tweet_raw_text.length > X)
                   {
                      $(".tweeter_widget").css('lineheight', '24px');
                   }
                   return t;
                }

      });
});

当然,我还没有测试过这段代码。

【讨论】:

  • 我是 JS 的新手……我应该把它放在哪里?我需要做什么才能在 onLoad 上运行?
  • 我编辑了顶部的代码以显示生成推文的 JS。我可以在里面放任何代码吗?
  • 是的,我想你可以把它放在最后一行之前;我将编辑我的回复以显示。
猜你喜欢
  • 2023-03-20
  • 2019-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 2013-09-11
  • 1970-01-01
  • 2011-08-13
相关资源
最近更新 更多