【问题标题】:HTML tabs not showing in webform (ASP.NET)HTML 选项卡未在 Web 表单中显示 (ASP.NET)
【发布时间】:2017-07-16 11:25:50
【问题描述】:

我正在使用 html-tab 视图,其中选项卡被 CSS 隐藏,并且只有 JavaScript 函数可见。但它不适用于 ASP.NET 的网络表单。

它只是立即显示并在半秒内消失。

我从here复制过来的。

代码是:

<%@ Page Title="" Language="C#" MasterPageFile="~/MASTER/MASTER.Master" AutoEventWireup="true" CodeBehind="CREATE_USER.aspx.cs" Inherits="CRM_CAPSULE.MASTER.WebForm2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">


<style>
body {font-family: "Lato", sans-serif;}

/* Style the tab */
div.tab {
    overflow: hidden;
    border: 1px solid #ccc;
    background-color: #f1f1f1;
}

/* Style the buttons inside the tab */
div.tab button {
    background-color: inherit;
    float: left;
    border: none;
    outline: none;
    cursor: pointer;
    padding: 14px 16px;
    transition: 0.3s;
    font-size: 17px;
}

/* Change background color of buttons on hover */
div.tab button:hover {
    background-color: #ddd;
}

/* Create an active/current tablink class */
div.tab button.active {
    background-color: #ccc;
}

/* Style the tab content */
.tabcontent {
    display: none;
    padding: 6px 12px;
    -webkit-animation: fadeEffect 1s;
    animation: fadeEffect 1s;
}

/* Fade in tabs */
@-webkit-keyframes fadeEffect {
    from {opacity: 0;}
    to {opacity: 1;}
}

@keyframes fadeEffect {
    from {opacity: 0;}
    to {opacity: 1;}
}
</style>



</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">


<h3>Fade in Tabs</h3>

<div id="tabs" class="tab">
  <button class="tablinks" onclick="openCity(event, 'London')">London</button>
  <button class="tablinks" onclick="openCity(event, 'Paris')">Paris</button>
  <button class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</button>
</div>

<div id="tabs">

<div id="London" class="tabcontent">
  <h3>London</h3>
  <p>London is the capital city of England.</p>
</div>

<div id="Paris" class="tabcontent">
  <h3>Paris</h3>
  <p>Paris is the capital of France.</p> 
</div>

<div id="Tokyo" class="tabcontent">
  <h3>Tokyo</h3>
  <p>Tokyo is the capital of Japan.</p>
</div>

</div>

<script>


    function openCity(evt, cityName) {
        var i, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tabcontent");
        for (i = 0; i < tabcontent.length; i++) {
            tabcontent[i].style.display = "none";
        }
        tablinks = document.getElementsByClassName("tablinks");
        for (i = 0; i < tablinks.length; i++) {
            tablinks[i].className = tablinks[i].className.replace(" active", "");
        }
        document.getElementById(cityName).style.display = "block";
        evt.currentTarget.className += " active";
    }



</script>

</asp:Content

【问题讨论】:

    标签: javascript html css asp.net webforms


    【解决方案1】:

    您的 CSS 和 JavaScript 代码可以正常工作。

    一个

    <style>
    body {font-family: "Lato", sans-serif;}
    
    /* Style the tab */
    div.tab {
        overflow: hidden;
        border: 1px solid #ccc;
        background-color: #f1f1f1;
    }
    
    /* Style the buttons inside the tab */
    div.tab button {
        background-color: inherit;
        float: left;
        border: none;
        outline: none;
        cursor: pointer;
        padding: 14px 16px;
        transition: 0.3s;
        font-size: 17px;
    }
    
    /* Change background color of buttons on hover */
    div.tab button:hover {
        background-color: #ddd;
    }
    
    /* Create an active/current tablink class */
    div.tab button.active {
        background-color: #ccc;
    }
    
    /* Style the tab content */
    .tabcontent {
        display: none;
        padding: 6px 12px;
        -webkit-animation: fadeEffect 1s;
        animation: fadeEffect 1s;
    }
    
    /* Fade in tabs */
    @-webkit-keyframes fadeEffect {
        from {opacity: 0;}
        to {opacity: 1;}
    }
    
    @keyframes fadeEffect {
        from {opacity: 0;}
        to {opacity: 1;}
    }
    </style>
    
    
    
    
    
    
    
    <h3>Fade in Tabs</h3>
    
    <div id="tabs" class="tab">
      <button class="tablinks" onclick="openCity(event, 'London')">London</button>
      <button class="tablinks" onclick="openCity(event, 'Paris')">Paris</button>
      <button class="tablinks" onclick="openCity(event, 'Tokyo')">Tokyo</button>
    </div>
    
    <div id="tabs">
    
    <div id="London" class="tabcontent">
      <h3>London</h3>
      <p>London is the capital city of England.</p>
    </div>
    
    <div id="Paris" class="tabcontent">
      <h3>Paris</h3>
      <p>Paris is the capital of France.</p> 
    </div>
    
    <div id="Tokyo" class="tabcontent">
      <h3>Tokyo</h3>
      <p>Tokyo is the capital of Japan.</p>
    </div>
    
    </div>
    
    <script>
    
    
        function openCity(evt, cityName) {
            var i, tabcontent, tablinks;
            tabcontent = document.getElementsByClassName("tabcontent");
            for (i = 0; i < tabcontent.length; i++) {
                tabcontent[i].style.display = "none";
            }
            tablinks = document.getElementsByClassName("tablinks");
            for (i = 0; i < tablinks.length; i++) {
                tablinks[i].className = tablinks[i].className.replace(" active", "");
            }
            document.getElementById(cityName).style.display = "block";
            evt.currentTarget.className += " active";
        }
    
    </script>
    
    
    </script>

    asp:Content 可能有问题...

    从浏览器检查页面并确保您的 CSS 和 JS 代码在页面上的正确位置。

    【讨论】:

    • 问题是.....一切都是正确的,但是每当我点击任何选项卡时,页面都会再次刷新并进入没有选项卡显示其内容的初始阶段。所以,要解决这个问题。我只写“return false;” javascript函数调用的地方,页面不会自行刷新。
    • 谢谢你的帮助兄弟:)
    【解决方案2】:

    首先,将您的第二个 id="tabs" 替换为 class="tab",因为您不能使用重复的 id。试试这个脚本。

    var tabArea = ".tab .tablinks",
        tabContent = '.tabcontent';
    $(tabArea).add(tabContent).each(function () {
        $(this).siblings(':first-child').addClass('active');
    });
    $(tabArea).on('click', function(){
        $(this).each(function(){
            var tabIndex = $(this).index();
            $(this).siblings().removeClass('active');
            $(this).parent('.tab').next(".tab")
                .find(tabContent).removeClass('active');
            $(this).addClass('active');
            $(this).parent('.tab').next(".tab")
                .find(tabContent).eq(tabIndex).addClass('active');
        })
    }); 
    

    还添加以下 CSS

    .tabcontent.active { 
      display: block;
    }
    

    您可以参考这个 codepen 演示:https://codepen.io/kravisingh/pen/xrQqNO

    【讨论】:

    • 你可以在这里找到你的工作代码https://jsfiddle.net/3q8dn1of/3/
    • 感谢兄弟的帮助。
    • 问题是.....一切都是正确的,但是每当我点击任何标签时,页面都会再次刷新并进入没有标签显示其内容的初始阶段。所以,要解决这个问题。我只写“return false;” javascript函数调用的地方,页面不会自行刷新。
    • 如果此代码再次出现任何问题,我将尝试您的代码。谢谢你的帮助兄弟:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 2022-10-17
    相关资源
    最近更新 更多