使用CSS更改选项卡上的平滑颜色过渡

时间:2016-05-16 10:42:32

标签: javascript jquery html css css3

我想更改此标签HTML布局上每个标签的背景。从选择一个选项卡到另一个选项卡的过渡需要平滑。现在它变为白色,然后变为下一个颜色。是否可以使用CSS直接将其更改为颜色?

<div class="container">
    <ul class="tabs">
        <li id="seville"><a href="#tab1">Seville</a></li>
        <li id="alicante"><a href="#tab2">Alicante</a></li>
        <li id="barcelona"><a href="#tab3">Barcelona</a></li>
        <li id="cordoba"><a href="#tab4">Córdoba</a></li>
        <li id="sanjuan"><a href="#tab5">San Juan</a></li>
        <li id="havana"><a href="#tab6">Havana</a></li>

    </ul>
    <div class="tab_container">
        <div id="tab1" class="tab_content">

        </div>
        <div id="tab2" class="tab_content">
            <div class="column-left-tabs">

        </div>
        <div id="tab3" class="tab_content">
            <div class="column-left-tabs">

        </div>
        <div id="tab4" class="tab_content">
            <div class="column-left-tabs">

        </div>
        <div id="tab5" class="tab_content">
            <div class="column-left-tabs">

        </div>
        <div id="tab6" class="tab_content">
            <div class="column-left-tabs">

        </div>
    </div>
</div>

您可以在此jsfiddle上查看整个代码。测试从“塞维利亚”选项卡转换到“阿利坎特”选项卡。

https://jsfiddle.net/4yhupgum/

以下是显示问题的GIF:https://gyazo.com/eb7333a156757abacfe1fee8da032dd6

4 个答案:

答案 0 :(得分:1)

在每个.tab_content div中,您有另一个div <div class="column-left-tabs">,并且您没有在任何.tab_content div中关闭它。

这是你的错。检查并将<div class="column-left-tabs">替换为<div class="column-left-tabs"></div>。而已。

    <div id="tab1" class="tab_content">

    </div>
    <div id="tab2" class="tab_content">
        <div class="column-left-tabs">

    </div>
</div>
    <div id="tab3" class="tab_content">
        <div class="column-left-tabs">

    </div>
</div>
    <div id="tab4" class="tab_content">
        <div class="column-left-tabs">

    </div>
</div>
    <div id="tab5" class="tab_content">
        <div class="column-left-tabs">

    </div>
</div>
    <div id="tab6" class="tab_content">
        <div class="column-left-tabs">

    </div>
</div>

使用以下代码替换您的CSS:

    .container {
    width: 1300;
    margin: 10px auto;
}

ul.tabs {
    margin: 0;
    padding: 0;
    list-style: none;
    border-bottom: 1px solid black;
    display: flex;
}

ul.tabs li {
    float: left;
    width: 15%;
    margin: 0;
    padding: 0;
    line-height: 31px;
    margin-bottom: -1px;
    background: #F0F0F0;
    flex: auto;
    border: 1px solid black;
}

ul.tabs li:first-child {
    border-top-left-radius: 8px;
}

ul.tabs li:last-child {
    border-top-right-radius: 8px;
}

ul.tabs li a {
    text-decoration: none;
    color: #000;
    display: block;
    font-size: 1.2em;
    padding: 15px;
    outline: none;
    text-align: center;
}

ul.tabs #seville {
    background-color: C95A00
}

ul.tabs #seville.active {
    background-color: E0861A;
}

ul.tabs #alicante {
    background-color: #499540
}

ul.tabs #alicante.active {
    background-color: #7FB438
}

ul.tabs #barcelona {
    background-color: #2744E1
}

ul.tabs #barcelona.active {
    background-color: #0088CA
}

ul.tabs #cordoba {
    background-color: #31124C
}

ul.tabs #cordoba.active {
    background-color: #4D2259
}

ul.tabs #sanjuan {
    background-color: #810012
}

ul.tabs #sanjuan.active {
    background-color: #812921
}

ul.tabs #havana {
    background-color: #C95A00
}

ul.tabs #havana.active {
    background-color: #C95A00
}

html ul.tabs li.active,
html ul.tabs li.active a:hover {
    border-bottom: 0px;
}

.tab_container {
    border: 1px solid black;
    border-top: none;
    clear: both;
    float: left;
    width: 100%;
    background: #fff;
    -moz-border-radius-bottomright: 5px;
    -khtml-border-radius-bottomright: 5px;
    -webkit-border-bottom-right-radius: 5px;
    -moz-border-radius-bottomleft: 5px;
    -khtml-border-radius-bottomleft: 5px;
    -webkit-border-bottom-left-radius: 5px;
}

.tab_container img {
    float: right;
    position: relative;
}

.tab_content {
    padding: 0 0 10 0;
    font-size: 1.2em;
    height: 365px;
    font-family: 'Lato', sans-serif;
    color: white;
    transition: background 0.5s linear;

}

.tab_content#tab1 {
    background-color: E0861A;
}

.tab_content#tab2 {
    background-color: #7FB438
}

.tab_content#tab3 {
    background-color: #0088CA
}

.tab_content#tab4 {
    background-color: #4D2259
}

.tab_content#tab5 {
    background-color: #812921
}

.tab_content#tab6 {
    background-color: #C95A00
}

.tab_content h2 {
    font-weight: normal;
    font-size: 2em;
}

.tab_content p {
    font-size: 1.2em;
}

a.tabs-ahead {
    display: inline-block;
    text-decoration: none;
    font-size: 18px;
    padding: 0.5em 1em;
    margin: 0;
    background-color: #D35400;
    border-radius: 0.25em;
    color: #FFF;
    behavior: url('assets/css3pie/1.0.0/PIE.htc');
}

.tab_content h3 a {
    color: #254588;
}

.tab_content img {
    margin: 0 0 0px 0;
    border: 1px solid #ddd;
    padding: 5px;
    width: 100%;
}

.column-left-tabs {
    float: left;
    width: 49.5%;
    box-sizing: border-box;
    padding-left: 50px;
}

.column-right-tabs {
    float: right;
    width: 49.5%;
}

.column-2-tabs {
    display: inline-block;
    width: 33%;
}

.column-1-tabs {
    float: left;
    width: 33%;
}

.column-3-tabs {
    float: right;
    width: 33%;
}

答案 1 :(得分:0)

你在寻找这个吗?

ul.tabs {
  transition:all .8s ease-out;
}

答案 2 :(得分:0)

但它并没有真正变成白色。你只是看到了背景。问题是您有几个窗口,对应于您的选项卡。因此,当您显示其中一个时,前一个被隐藏(因此您不再真正看到它的颜色),并且新的一个被放置并且它来自默认的transparent你选择的颜色。

我建议使用单个.page-wrapper元素,并将所有页面放在其中。然后给它一个transition: background-color .8s,当你隐藏并显示其中的页面时,更改.page-wrapper的背景颜色属性。

答案 3 :(得分:0)

问题是,它只是在转换为其他颜色之前显示身体的背景颜色。 尝试通过jquery解决它,如下所示。

1)首先获取活动标签的背景颜色

var background_color = $(this).css( "background-color" );

2)然后将其应用于主标签容器

$('.tab_container').css("background",background_color);

这将满足您的需求。

点击此处,

&#13;
&#13;
$(document).ready(function () {

		//Default Action
		$(".tab_content").hide(); //Hide all content
		$("ul.tabs li:first").addClass("active").show(); //Activate first tab
		$(".tab_content:first").show(); //Show first tab content

		//On Click Event
		$("ul.tabs li").click(function () {
           
            /*code I have added is here*/
            var background_color = $(this).css( "background-color" );
            $('.tab_container').css("background",background_color);
			
          
            $("ul.tabs li").removeClass("active"); //Remove any "active" class
			$(this).addClass("active"); //Add "active" class to selected tab
			$(".tab_content").hide(); //Hide all tab content
			var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
      
      $(activeTab).fadeIn('fast'); //Fade in the active content
			return false;
		});

	});
&#13;
.container {
	width: 1300;
	margin: 10px auto;
}

ul.tabs {
	margin: 0;
	padding: 0;
	list-style: none;
	border-bottom: 1px solid black;
	display: flex;
}

ul.tabs li {
	float: left;
	width: 15%;
	margin: 0;
	padding: 0;
	line-height: 31px;
	margin-bottom: -1px;
	background: #F0F0F0;
	flex: auto;
	border: 1px solid black;
}

ul.tabs li:first-child {
	border-top-left-radius: 8px;
}

ul.tabs li:last-child {
	border-top-right-radius: 8px;
}

ul.tabs li a {
	text-decoration: none;
	color: #000;
	display: block;
	font-size: 1.2em;
	padding: 15px;
	outline: none;
	text-align: center;
}
ul.tabs{
  transition:all .1s ease-out;
}
ul.tabs #seville {
	background-color: C95A00
}

ul.tabs #seville.active {
	background-color: E0861A;
}

ul.tabs #alicante {
	background-color: #499540
}

ul.tabs #alicante.active {
	background-color: #7FB438
}

ul.tabs #barcelona {
	background-color: #2744E1
}

ul.tabs #barcelona.active {
	background-color: #0088CA
}

ul.tabs #cordoba {
	background-color: #31124C
}

ul.tabs #cordoba.active {
	background-color: #4D2259
}

ul.tabs #sanjuan {
	background-color: #810012
}

ul.tabs #sanjuan.active {
	background-color: #812921
}

ul.tabs #havana {
	background-color: #C95A00
}

ul.tabs #havana.active {
	background-color: #C95A00
}

html ul.tabs li.active,
html ul.tabs li.active a:hover {
	border-bottom: 0px;
}

.tab_container {
	border: 1px solid black;
	border-top: none;
	clear: both;
	float: left;
	width: 100%;
	background: #fff;
	-moz-border-radius-bottomright: 5px;
	-khtml-border-radius-bottomright: 5px;
	-webkit-border-bottom-right-radius: 5px;
	-moz-border-radius-bottomleft: 5px;
	-khtml-border-radius-bottomleft: 5px;
	-webkit-border-bottom-left-radius: 5px;
}

.tab_container img {
	float: right;
	position: relative;
}

.tab_content {
	padding: 0 0 10 0;
	font-size: 1.2em;
	height: 365px;
	font-family: 'Lato', sans-serif;
	color: white;
	transition: background 0.5s linear;

}

.tab_content#tab1 {
	background-color: #E67E22;
}

.tab_content#tab2 {
	background-color: #7FB438
}

.tab_content#tab3 {
	background-color: #0088CA
}

.tab_content#tab4 {
	background-color: #4D2259
}

.tab_content#tab5 {
	background-color: #812921
}

.tab_content#tab6 {
	background-color: grey
}

.tab_content h2 {
	font-weight: normal;
	font-size: 2em;
}

.tab_content p {
	font-size: 1.2em;
}

a.tabs-ahead {
	display: inline-block;
	text-decoration: none;
	font-size: 18px;
	padding: 0.5em 1em;
	margin: 0;
	background-color: #D35400;
	border-radius: 0.25em;
	color: #FFF;
	behavior: url('assets/css3pie/1.0.0/PIE.htc');
}

.tab_content h3 a {
	color: #254588;
}

.tab_content img {
	margin: 0 0 0px 0;
	border: 1px solid #ddd;
	padding: 5px;
	width: 100%;
}

.column-left-tabs {
	float: left;
	width: 49.5%;
	box-sizing: border-box;
	padding-left: 50px;
}

.column-right-tabs {
	float: right;
	width: 49.5%;
}

.column-2-tabs {
	display: inline-block;
	width: 33%;
}

.column-1-tabs {
	float: left;
	width: 33%;
}

.column-3-tabs {
	float: right;
	width: 33%;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
	<ul class="tabs">
		<li id="seville"><a href="#tab1">Seville</a></li>
		<li id="alicante"><a href="#tab2">Alicante</a></li>
		<li id="barcelona"><a href="#tab3">Barcelona</a></li>
		<li id="cordoba"><a href="#tab4">Córdoba</a></li>
		<li id="sanjuan"><a href="#tab5">San Juan</a></li>
		<li id="havana"><a href="#tab6">Havana</a></li>

	</ul>
	<div class="tab_container">
		<div id="tab1" class="tab_content">
 
		</div>
		<div id="tab2" class="tab_content">
			<div class="column-left-tabs">

		</div>
		<div id="tab3" class="tab_content">
			<div class="column-left-tabs">

		</div>
		<div id="tab4" class="tab_content">
			<div class="column-left-tabs">

		</div>
		<div id="tab5" class="tab_content">
			<div class="column-left-tabs">

		</div>
		<div id="tab6" class="tab_content">
			<div class="column-left-tabs">

		</div>
	</div>
</div>
&#13;
&#13;
&#13;