javascript - Bootstrap 4:用于响应式导航栏的独立折叠 js
问题描述
我用 Bootstrap 4.3.1 制作了一个小型网站,除了带有切换按钮的响应式导航栏的折叠插件外,不需要任何 javascript。
Bootstrap 4 不再有定制器,所以我被迫加载jquery-3.3.1.slim.min.js
69 kiB 和bootstrap.min.js
57 kiB,这导致下载 126 kiB Javascript 用于小屏幕上的交互式菜单切换按钮。
我能做些什么来减少我的用户的 javascript 下载大小吗?
解决方案
删除所有 jQuery 和 bootstrap javascript,并添加以下内容:
<script type="text/javascript">
const triggers = Array.from(document.querySelectorAll('[data-toggle="collapse"]'));
triggers.forEach(elem => {
elem.addEventListener('click', event => {
const selector = elem.getAttribute('data-target');
collapse(selector, 'toggle');
});
});
const fnmap = {
'toggle': 'toggle',
'show': 'add',
'hide': 'remove'
};
const collapse = (selector, cmd) => {
const targets = Array.from(document.querySelectorAll(selector));
targets.forEach(target => {
target.classList[fnmap[cmd]]('show');
});
};
</script>
灵感来自https://medium.com/dailyjs/mimicking-bootstraps-collapse-with-vanilla-javascript-b3bb389040e7
推荐阅读
- azureservicebus - Use transformed variable into steps like Send Mail (V2)
- excel - 选择要复制和粘贴的特定列?
- javascript - 动态突出显示文本
- 基于选中的复选框
- javascript - agGrid 汇总示例显示缺少 ClientSideRowModelModule
- python - 在可执行文件中读取带有熊猫的csv文件的问题
- bluetooth - 在 Opera 上调用 navigator.bluetooth.requestDevice 时出现“Web Bluetooth API global disabled”错误
- laravel-5.6 - 在 laravel 中将文件从一个文件夹复制到另一个文件夹会导致错误 File not found
- algorithm - 小循环的大 O
- angular - Angular 的 reportProgress 和 PHP。一个请求,多个响应。可能吗?
- c++11 - c ++从内存中获取值一个进程