更改Bootstrap的默认模态类

时间:2015-09-15 15:40:31

标签: javascript css twitter-bootstrap twitter-bootstrap-3 less

我需要更改Bootstrap的Javascript和CSS文件,以便更改应用于主要包含模式的div的类名。

这是默认容器:

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">

以下是我想改变它的方式:

<div class="MY-modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">

我已经尝试运行modal.js和modal.less文件并将所有对“.modal”的引用更改为“.MY-modal”但是我在控制台中收到以下错误: Uncaught ReferenceError:分配中的左侧无效

有没有人可以提供一些见解,确切地知道我需要在JS文件中更改哪些行才能使其工作?

我需要改变它的原因是,我正在将Bootstrap实现到已经使用类 .modal 的内部CMS中,因为它自己的模式,这会导致与Bootstrap冲突。 / p>

1 个答案:

答案 0 :(得分:0)

我做的是为基地.modal创建修饰符类(例如.modal--custom

如果您使用sass,那很简单:

$modal-name: 'modal';

.#{$modal-name} {
    &--custom {
        .#{$modal-name}-dialog {
            // some custom styling
        }
        .#{$modal-name}-footer {
            // some custom styling
        }
        .#{$modal-name}-body {
            // some custom styling
        }

    }
}

然后你同时应用

<div class="modal modal--custom"></div>

更有问题的是模态背景。我使用了一个解决方法,它基本上在调用.show()方法后添加了一个自定义类:

(function ($) {
    'use strict';

    const backdropClassName = 'modal-backdrop--custom';

    $(() => {
        $('body').on('show.bs.modal', '.modal', () => {
            setTimeout(() => {
                const $modalBackdrop = $('.modal-backdrop');
                if ($modalBackdrop.length > 0 && !$modalBackdrop.hasClass(backdropClassName)) {
                    $modalBackdrop.addClass(backdropClassName);
                }
            });
        });
    });

})(jQuery);