【问题标题】:Changing a CSS class depending on text wrap and window width (Jquery or JavaScript)根据文本换行和窗口宽度(Jquery 或 JavaScript)更改 CSS 类
【发布时间】:2012-04-22 03:42:15
【问题描述】:

我有一个带有一些文本列的响应式设计。列有 h2 标题,并且浮动到标题左侧的是图像图标 - 很好地垂直居中于标题文本。当我缩小窗口宽度时会出现问题。当单标题线换行时,它们不再与图标垂直对齐。

基本上,我正在尝试编写一个脚本,告诉标题的类在它换成两行时发生变化,以便我可以将它的垂直位置更改为居中。

我真的是脚本新手,所以我不确定如何编写它,但本质上就是这样:

if window width > 768 and if lines of text in #services h2 = 1

#services h2 {
top:9px;
}

else

if window width > 768 and if lines of text in #services h2 > 1

#services h2 {
top:1px;
}

有人可以帮我正确格式化吗?我已经将 jQuery 用于其他一些东西,所以如果可以使用它,那就太好了。

谢谢!

编辑:其中最重要的部分是当一行从 1 行换成 2 行时更改类属性。这是关键部分:

if lines of text in #services h2 = 1

#services h2 {
top:9px;
}

else

if lines of text in #services h2 > 1

#services h2 {
top:1px;
}

【问题讨论】:

    标签: javascript jquery css class vertical-alignment


    【解决方案1】:

    你能不把背景图片的垂直位置设置为50%吗?而不是将 js 添加到一个相对较小的外观变化中。

    【讨论】:

    • matpol 它不是背景图片 - 它浮动在 h2 的左侧。
    • 绝对定位?同样的想法将垂直位置设置为 50%
    • 嗯,也许 - 我会试一试。谢谢。
    • 你需要在 h2 周围有相对位置的东西。
    • 现在我只有:
      在图像和 h2 周围。
    【解决方案2】:

    无需 JavaScript(包括 jQuery),使用纯 CSS:http://www.css3.info/preview/media-queries/

    可以在http://css-tricks.com/css-media-queries/找到更详细的解释

    【讨论】:

    • Bergi - 谢谢,但我知道如何使用媒体查询,但除非我错了,否则当使用媒体查询进行文本换行时,我无法更改类。这就是我主要想做的事情——根据文本的行数来改变元素的对齐方式。用于检测窗口宽度的 javascript 是我正在使用的媒体查询的补充,因为我不希望任何脚本更改在窗口低于 768 时生效 - 有意义吗?
    • 为@Bergi 辩护,听起来媒体查询是正确的做法。我真的不明白你为什么要使用 JS!
    • 嗯,好的。我认为用 JS 计算行数不是一个好主意。你可以用高度和线高和字体大小的计算值来做到这一点,是的,但它会变得讨厌。您是否尝试过似乎最符合您要求的表格布局(不开玩笑)?
    • Bergi - 有趣的是你应该提到这一点!刚刚找到这篇文章:css-tricks.com/vertically-center-multi-lined-text谢谢你的帮助!
    【解决方案3】:

    我不确定“and if 文本行”,但 AND 的左侧是:

    -EDIT-我明白了,看看这是不是你想要的。

    $(window).resize(function(){
         var h =$('#services h2').css('line-height');
         var size = $(window).width();
         if (size > 768){
              if( $('#services h2').height() == h){
                     $('#services h2').css('top','1px')
              }
         }else{
               if( $('#services h2').height() > 2*h){
                     $('#services h2').css('top','9px')
              }
         }
    
    });
    

    【讨论】:

    • 如果你能展示代码赢得 jsfiddle.net 或其他更容易理解的东西
    • 谢谢托尼。我在其他地方看到您可以使用 Javascript 检测容器的高度,并且当文本换行到 2 行时,它显然会改变高度。也许这是一种方法?
    • 另外,我可以使用 jsfiddle,但我写的几乎不是代码。 :)
    • @SeanTubridy 我的意思是 HTML
    猜你喜欢
    • 2015-03-03
    • 2017-04-15
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    相关资源
    最近更新 更多