在屏幕调整大小时将新的 类 分配给 bootstrap 元素不起作用

Assigning new classes to bootstrap elements at screen resize not working

我试图在 window 达到 991px 或更小时将 FONT-AWESOME 字形 class 从 fa-3x 大小更改为 fa-2x 大小。当 window 以 991px 或更小加载时,它也需要更改...这是我尝试过的两个选项:

JAVASCRIPT 方法一:

/*CHANGE CLASS OF #glyph2 AT 991 OR LESS VW DURING DOCUMENT READY*/
    if( $(window).innerWidth() <= 991)
      {document.getElementById('#glyph2').className = "fa fa-caret-right fa-2x";} 
    else if( $(window).innerWidth() > 991)
      {document.getElementById('#glyph2').className = "fa fa-caret-right fa-3x";} 

/*CHANGE CLASS OF #glyph2 AT 991 OR LESS VW DURING RESIZE*/
  $(window).resize(function () {
    if( $(window).innerWidth() <= 991)    
      {document.getElementById('#glyph2').className = "fa fa-caret-right fa-2x";} 
    else if( $(window).innerWidth() > 991)  
      {document.getElementById('#glyph2').className = "fa fa-caret-right fa-3x";};
}); 

JAVASCRIPT 方法二:

(function($) {
var $window = $(window),
    $glyph2 = $('#glyph2');

function resize() {
    if ($window.width() <= 991) {
        return $glyph2.addClass('fa fa-caret-right fa-2x');
    }
    $glyph2.addClass('fa fa-caret-right fa-3x');
}

$window
    .resize(resize)
    .trigger('resize');
})(jQuery);

这两个选项都不起作用。任何想法或修复将不胜感激,谢谢!

(已找到修复方法!我没有更改 class,而是在每次 window 最终小于 991px 时重写 html 代码:

使用Javascript方法1:

HTML 代码:

<button id="btn6" type="button" class="btn btn-default"><p id="btn6Text">READ MORE ABOUT US<i id="glyph2" class="fa fa-caret-right fa-3x"></i></p></button>

JAVASCRIPT 代码:

/*CHANGE CLASS OF #glyph2 AT 991 OR LESS VW DURING DOCUMENT READY*/
if( $(window).innerWidth() <= 991)
  {document.getElementById("btn6Text").innerHTML = "READ MORE ABOUT US<i id='glyph2' class='fa fa-caret-right fa-2x'></i>";}
else if( $(window).innerWidth() > 991)
  {document.getElementById("btn6Text").innerHTML = "READ MORE ABOUT US<i id='glyph2' class='fa fa-caret-right fa-3x'></i>";}

/*CHANGE CLASS OF #glyph2 AT 991 OR LESS VW DURING RESIZE*/
$(window).resize(function () {
if( $(window).innerWidth() <= 991)    
  {document.getElementById("btn6Text").innerHTML = "READ MORE ABOUT US<i id='glyph2' class='fa fa-caret-right fa-2x'></i>";} 
else if( $(window).innerWidth() > 991)  
  {document.getElementById("btn6Text").innerHTML = "READ MORE ABOUT US<i id='glyph2' class='fa fa-caret-right fa-3x'></i>";};
}); 

所以每次 window 最终小于 991px,我重写这些代码:

<button id="btn6" type="button" class="btn btn-default"><p id="btn6Text">READ MORE ABOUT US<i id="glyph2" class="fa fa-caret-right fa-3x"></i></p></button>

为此:

<button id="btn6" type="button" class="btn btn-default"><p id="btn6Text">READ MORE ABOUT US<i id="glyph2" class="fa fa-caret-right fa-2x"></i></p></button>

差异:fa-3x 更改代码为 fa-2x

更简单的 CSS 和媒体查询方法:

可能是最好和最简单的方法 - 仅使用媒体查询和 CSS:

HTML 代码:

<button id="btn6" type="button" class="btn btn-default"><p id="btn6Text">READ MORE ABOUT US<i id="glyph2" class="fa fa-caret-right fa-3x"></i></p></button>

CSS 代码:

/* When SCREEN VW <= 991px ----------- */
@media only screen
and (max-width : 991px) {

/* Styles */
#glyph2 {
    font-size: 2em !important;
}

}

JSFIDDLE DEMO HERE

如果您正在寻找仅 CSS 和 Font-Awesome/Bootstrap 风格的解决方案, 您可以执行以下操作:

创建一些新的 CSS 类 来表示 lg、2x、3x、4x 和 5x。每个 bootstrap 您想要的屏幕尺寸(例如 smmdlg)。然后对它们使用@media

你最终会得到这样的结果:

/* sm */
@media (min-width: 768px) { 
    .fa-3x-sm {
        font-size: 3em !important;
    }
    .fa-2x-sm {
        font-size: 2em !important;
    }
    .fa-lg-sm {
        font-size: 1.33333333em !important;
        line-height: 0.75em !important;
        vertical-align: -15% !important;
    }
}
/* md */
@media (min-width: 992px) {
    .fa-3x-md {
        font-size: 3em !important;
    }
    .fa-2x-md {
        font-size: 2em !important;
    }
    .fa-lg-md {
        font-size: 1.33333333em !important;
        line-height: 0.75em !important;
        vertical-align: -15% !important;
    }
}
/* lg */
@media (min-width: 1200px) {
    .fa-3x-lg {
        font-size: 3em !important;
    }
    .fa-2x-lg {
        font-size: 2em !important;
    }
    .fa-lg-lg {
        font-size: 1.33333333em !important;
        line-height: 0.75em !important;
        vertical-align: -15% !important;
    }
}

我只使用 fa-lgfa-2xfa-3x 来保持简短。 这样,您可以使用 fa-3x-lg 在 lg 分辨率上获得 3 倍大小的图标,在较小的屏幕上获得常规大小的图标。

或者,您可以像在 bootstrap 解决方案上那样组合其中的一些,就像使用 fa-2x-sm fa-3x-md 会在 md 屏幕尺寸及更大尺寸上为您提供 3 倍大小的图标,sm 屏幕尺寸上的 2 倍大小图标和更小屏幕上的常规尺寸图标。

这就像使用一些 bootstrap 的 FontAwesome 大小约定 类。

希望对您有所帮助。