简体   繁体   English

如何使用Unpkg作为MDC CSS文件和S文件的存储在Web应用程序上添加Material Design选项卡

[英]How to add Material Design Tabs on a web app using unpkg as a storage for MDC CSS file and s file

I tried below html code for making a tab set: 我尝试了以下HTML代码来制作标签集:

<section id="dynamic-demo-toolbar">
  <nav id="dynamic-tab-bar" class="mdc-tab-bar" role="tablist">
    <a role="tab" aria-controls="panel-1"
       class="mdc-tab mdc-tab--active" href="#panel-1">Item One</a>
    <a role="tab" aria-controls="panel-2"
       class="mdc-tab" href="#panel-2">Item Two</a>
    <a role="tab" aria-controls="panel-3"
       class="mdc-tab" href="#panel-3">Item Three</a>
    <span class="mdc-tab-bar__indicator"></span>
  </nav>
</section>
<section>
  <div class="panels">
    <p class="panel active" id="panel-1" role="tabpanel" aria-hidden="false">Item One</p>
    <p class="panel" id="panel-2" role="tabpanel" aria-hidden="true">Item Two</p>
    <p class="panel" id="panel-3" role="tabpanel" aria-hidden="true">Item Three</p>
  </div>
  <div class="dots">
    <a class="dot active" data-trigger="panel-1" href="#panel-1"></a>
    <a class="dot" data-trigger="panel-2" href="#panel-2"></a>
    <a class="dot" data-trigger="panel-3" href="#panel-3"></a>
  </div>
</section>

And JavaScript is: JavaScript是:

<script>
var dynamicTabBar = window.dynamicTabBar = new mdc.tabs.MDCTabBar(document.querySelector('#dynamic-tab-bar'));
var dots = document.querySelector('.dots');
var panels = document.querySelector('.panels');

dynamicTabBar.tabs.forEach(function(tab) {?
  tab.preventDefaultOnClick = true;
});

function updateDot(index) {
  var activeDot = dots.querySelector('.dot.active');
  if (activeDot) {
    activeDot.classList.remove('active');
  }
  var newActiveDot = dots.querySelector('.dot:nth-child(' + (index + 1) + ')');
  if (newActiveDot) {
    newActiveDot.classList.add('active');
  }
}

function updatePanel(index) {
  var activePanel = panels.querySelector('.panel.active');
  if (activePanel) {
    activePanel.classList.remove('active');
  }
  var newActivePanel = panels.querySelector('.panel:nth-child(' + (index + 1) + ')');
  if (newActivePanel) {
    newActivePanel.classList.add('active');
  }
}

dynamicTabBar.listen('MDCTabBar:change', function ({detail: tabs}) {
  var nthChildIndex = tabs.activeTabIndex;

  updatePanel(nthChildIndex);
  updateDot(nthChildIndex);
});

dots.addEventListener('click', function (evt) {
  if (!evt.target.classList.contains('dot')) {
    return;
  }

  evt.preventDefault();

  var dotIndex = [].slice.call(dots.querySelectorAll('.dot')).indexOf(evt.target);

  if (dotIndex >= 0) {
    dynamicTabBar.activeTabIndex = dotIndex;
  }

  updatePanel(dotIndex);
  updateDot(dotIndex);
});
const MDCTab = mdc.tabs.MDCTab;
const MDCTabFoundation = mdc.tabs.MDCTabFoundation;

const MDCTabBar = mdc.tabs.MDCTabBar;
const MDCTabBarFoundation = mdc.tabs.MDCTabBarFoundation;
mdc.tabs.MDCTabBar.attachTo(document.querySelector('#my-mdc-tab-bar'));
</script>

please help me... Where is the problem located and how do I solve it? 请帮助我...问题在哪里,如何解决? Actually Material.io doesn't provides sample full code for any components. 实际上,Material.io不提供任何组件的完整示例代码。 That is why I got totally confused. 这就是为什么我完全感到困惑。 I'm making a chat app and tabs are required in there. 我正在制作一个聊天应用,并且在那里需要标签。 So, I think you guys could help me. 所以,我想你们可以帮助我。 If possible, give any codepend or jsfiddle demo code... 如果可能,请提供任何codepend或jsfiddle演示代码...

Remove ? 删除? sign in this line: 登录此行:

dynamicTabBar.tabs.forEach(function(tab) {?

And add some CSS for hiding non-active panel blocks by default: 并添加一些CSS以默认隐藏非活动panel板块:

 var dynamicTabBar = window.dynamicTabBar = new mdc.tabs.MDCTabBar(document.querySelector('#dynamic-tab-bar')); var dots = document.querySelector('.dots'); var panels = document.querySelector('.panels'); dynamicTabBar.tabs.forEach(function(tab) { tab.preventDefaultOnClick = true; }); function updateDot(index) { var activeDot = dots.querySelector('.dot.active'); if (activeDot) { activeDot.classList.remove('active'); } var newActiveDot = dots.querySelector('.dot:nth-child(' + (index + 1) + ')'); if (newActiveDot) { newActiveDot.classList.add('active'); } } function updatePanel(index) { var activePanel = panels.querySelector('.panel.active'); if (activePanel) { activePanel.classList.remove('active'); } var newActivePanel = panels.querySelector('.panel:nth-child(' + (index + 1) + ')'); if (newActivePanel) { newActivePanel.classList.add('active'); } } dynamicTabBar.listen('MDCTabBar:change', function ({detail: tabs}) { var nthChildIndex = tabs.activeTabIndex; updatePanel(nthChildIndex); updateDot(nthChildIndex); }); dots.addEventListener('click', function (evt) { if (!evt.target.classList.contains('dot')) { return; } evt.preventDefault(); var dotIndex = [].slice.call(dots.querySelectorAll('.dot')).indexOf(evt.target); if (dotIndex >= 0) { dynamicTabBar.activeTabIndex = dotIndex; } updatePanel(dotIndex); updateDot(dotIndex); }); const MDCTab = mdc.tabs.MDCTab; const MDCTabFoundation = mdc.tabs.MDCTabFoundation; const MDCTabBar = mdc.tabs.MDCTabBar; const MDCTabBarFoundation = mdc.tabs.MDCTabBarFoundation; mdc.tabs.MDCTabBar.attachTo(document.querySelector('#my-mdc-tab-bar')); 
 .panel { display: none; } .panel.active { display: block } .dot { width: 10px; height: 10px; display: inline-block; background: black; padding: 5px; } .dots { text-align: center; } .dot.active { background: red; } 
 <script src="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.js"></script> <link href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css" rel="stylesheet"/> <section id="dynamic-demo-toolbar"> <nav id="dynamic-tab-bar" class="mdc-tab-bar" role="tablist"> <a role="tab" aria-controls="panel-1" class="mdc-tab mdc-tab--active" href="#panel-1">Item One</a> <a role="tab" aria-controls="panel-2" class="mdc-tab" href="#panel-2">Item Two</a> <a role="tab" aria-controls="panel-3" class="mdc-tab" href="#panel-3">Item Three</a> <span class="mdc-tab-bar__indicator"></span> </nav> </section> <section> <div class="panels"> <p class="panel active" id="panel-1" role="tabpanel" aria-hidden="false">Item One</p> <p class="panel" id="panel-2" role="tabpanel" aria-hidden="true">Item Two</p> <p class="panel" id="panel-3" role="tabpanel" aria-hidden="true">Item Three</p> </div> <div class="dots"> <a class="dot active" data-trigger="panel-1" href="#panel-1"></a> <a class="dot" data-trigger="panel-2" href="#panel-2"></a> <a class="dot" data-trigger="panel-3" href="#panel-3"></a> </div> </section> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 网页材料设计。 如何设置 mdc.menu 的位置? - Material design for the web. How to set the position for a mdc.menu? 如何使用材料设计 mdc-list 制作嵌套列表 - How to make nested list with material design mdc-list 将 .css 文件中的 CSS 添加到材质组件 - Add CSS from a .css file to a material component 材料设计带CSS的App栏 - Material design App bar with CSS 如何使用 NodeJS 在 web 应用程序中从 Azure blob 存储中提供 HTML 文件? - How can I serve an HTML file from Azure blob storage in a web app using NodeJS? 如何从 Vue Web 应用程序中的 firebase 存储下载文件? - How to download a file from firebase storage in a Vue web app? 如何将 web 组件编码为 typescript 和 scss 到 javascript 和 ZC7A628CBA22E28EB17B5F5Material Design 中的 ZC7A628CBA22E28EB17B5F5Material Design - How to transpile web components coded typescript and scss to javascript and css in Material You (Material Design 3) 如何设计一个允许多个存储提供商的Web应用程序? - How to design a web app to allow for multiple storage providers? 使用聚合物和材料设计上传文件 - File upload with Polymer & material design 如何在Spring Web App中添加外部CSS文件 - how to add external css file in spring web aplication
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM