本网站只能被运行在支持JavaScript脚本的环境中

使用CSS 3样式制作具有动画效果的标签面板

本文介绍一个不使用脚本代码,仅通过CSS 3中的transition动画功能制作的具有动画效果的标签面板。


鼠标移动到标签上时具有动画效果

为了制作标签面板的切换效果,我们使用ul元素制作标签面板,使用li元素制作一系列标签面板中的每一个标签面板,在li元素中使用label元素制作标签,使用div元素制作标签下部的面板,通过type属性值为radio的input元素来实现标签切换效果,ul元素的HTML代码如下所示。

<ul class="tabs">
    <li>
        <input type="radio" name="tabs" id="tab1" checked />
        <label for="tab1">标签1</label>
        <div id="tab-content1" class="tab-content">
            <p>内容1</p>
        </div>
    </li>
    <li>
        <input type="radio" name="tabs" id="tab2" />
        <label for="tab2">标签2</label>
        <div id="tab-content2" class="tab-content">
            <p>内容2</p>
        </div>
    </li>
</ul>

本例中的CSS样式代码如下所示。

* {
    margin: 0;
    padding: 0;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
body {
    padding: 20px;
    text-align: left;
    font-family: Lato;
    color: #fff;
    background: #9b59b6;
}
.tabs {
    width: 650px;
    float: none;
    list-style: none;
    position: relative;
    margin: 80px 0 0 10px;
    text-align: left;
}
.tabs li {
    float: left;
    display: block;
}
.tabs input[type="radio"] {
    position: absolute;
    top: -9999px;
    left: -9999px;
}
.tabs label {
    display: block;
    padding: 14px 21px;
    border-radius: 2px 2px 0 0;
    font-size: 20px;
    font-weight: normal;
    text-transform: uppercase;
    background: #8e44ad;
    cursor: pointer;
    position: relative;
    top: 4px;
    -webkit-transition: all 0.2s ease-in-out;
    -moz-transition: all 0.2s ease-in-out;
    -o-transition: all 0.2s ease-in-out;
    -ms-transition: all 0.2s ease-in-out;
    transition: all 0.2s ease-in-out;
}
.tabs label:hover {
    background: #703688;
}
.tabs .tab-content {
    z-index: 2;
    display: none;
    overflow: hidden;
    width: 100%;
    font-size: 17px;
    line-height: 25px;
    padding: 25px;
    position: absolute;
    top: 53px;
    left: 0;
    background: #612e76;
}
.tabs [id^="tab"]:checked + label {
    top: 0;
    padding-top: 17px;
    background: #612e76;
}
.tabs [id^="tab"]:checked ~ [id^="tab-content"] {
    display: block;
}