www.gusucode.com > CSS3 Chart 多色的立体柱状图表插件附效果示例源码程序 > CSS3 Chart 多色的立体柱状图表插件附效果示例/Animated3DBarChart/Animated3DBarChart/css/graph.css
/********************* * Graph Holder styles * *********************/ /** Graph Holder container **/ .graph-container { position: relative; /* required Y axis stuff, Graph Holder's left and bottom sides to be positions properly */ display: inline-block; /* display: table may also work.. */ padding: 0; /* let the bars position themselves */ list-style: none; /* we don't want to see any default <ul> markers */ margin: 40px 0 0 40px; font-size: 0.8em; /* Graph Holder's Background */ background-image: -webkit-linear-gradient(left , rgba(255, 255, 255, .3) 100%, transparent 100%); background-image: -moz-linear-gradient(left , rgba(255, 255, 255, .3) 100%, transparent 100%); background-image: -o-linear-gradient(left , rgba(255, 255, 255, .3) 100%, transparent 100%); background-image: -ms-linear-gradient(left , rgba(255, 255, 255, .3) 100%, transparent 100%); background-image: linear-gradient(left , rgba(255, 255, 255, .3) 100%, transparent 100%); background-repeat: no-repeat; background-position: 0 -2.5em; } /* Graph Holder bottom side */ .graph-container:before { position: absolute; content: ""; bottom: 0; left: -1.25em; /* skew pushes it left, so we move it a bit in opposite direction */ width: 100%; /* make sure it is as wide as the whole graph */ height: 2.5em; background-color: rgba(183, 183, 183, 1); /* Make it look perspective */ -webkit-transform: skew(-45deg); -moz-transform: skew(-45deg); -o-transform: skew(-45deg); -ms-transform: skew(-45deg); transform: skew(-45deg); } /* Graph Holder left side */ .graph-container:after { position: absolute; content: ""; top: 1.25em; /* skew pushes it up so we move it down a bit */ left: -2.5em; width: 2.5em; background-color: rgba(129, 129, 129, 0.4); /* Make it look perspective */ -webkit-transform: skew(0deg, -45deg); -moz-transform: skew(0deg, -45deg); -o-transform: skew(0deg, -45deg); -ms-transform: skew(0deg, -45deg); transform: skew(0deg, -45deg); } /* Bars and X-axis labels holder */ .graph-container > li { float: left; /* Make sure bars are aligned one next to another */ position: relative; /* Make sure X-axis labels are positioned relative to this element */ } /* A small hack to make Graph Holder's background side be wide enough ..because our bottom side is skewed and pushed to the right, we have to compensate it in Graph Holder's background */ .graph-container > li:nth-last-child(2) { margin-right: 2.5em; } /* X-axis labels */ .graph-container > li > span { position: absolute; left: 0; bottom: -2em; width: 80%; /* play with this one if you change perspective depth */ text-align: center; font-weight: bold; text-shadow: 1px 1px 1px rgba(255,255,255,0.7); color: #777; font-size: 1.5em; } /******************************* * Graph Y-axis Markers styles * *******************************/ /* Markers container */ .graph-container > li:last-child { width: 100%; position: absolute; left: 0; bottom: 0; } /* Y-axis Markers list */ .graph-marker-container > li { position: absolute; left: -2.5em; bottom: 0; width: 100%; margin-bottom: 2.5em; list-style: none; } /* Y-axis lines general styles */ .graph-marker-container > li:before, .graph-marker-container > li:after { content: ""; position: absolute; border-style: none none dotted; border-color: rgba(100, 100, 100, .15); border-width: 0 0 .15em; background: rgba(133, 133, 133, .15); } /* Y-axis Side line */ .graph-marker-container > li:before { width: 3.55em; height: 0; bottom: -1.22em; left: -.55em; z-index: 2; /* be above .graph-container:after */ -webkit-transform: rotate(-45deg); -moz-transform: rotate(-45deg); -o-transform: rotate(-45deg); -ms-transform: rotate(-45deg); transform: rotate(-45deg); } /* Y-axis Background line */ .graph-marker-container li:after { width: 100%; bottom: 0; left: 2.5em; } /* Y-axis text Label */ .graph-marker-container span { position: absolute; font-weight: bold; text-shadow: 1px 1px 1px rgba(255,255,255,0.7); top: 1em; left: -3.5em; /* just to push it away from the graph.. */ width: 3.5em; /* give it absolute value of left offset */ font-size: 1.5em; } /********************* * Graph Bars styles * *********************/ /* Bar wrapper - hides the inner bar when it goes below the bar, required */ .bar-wrapper { overflow: hidden; } /* Bar container - this guy is a real parent of a bar's parts - they all are positioned relative to him */ .bar-container { position: relative; margin-top: 2.5em; /* should be at least equal to the top offset of background casing */ /* because back casing is positioned higher than actual bar */ width: 12.5em; /* required, we have to define the width of a bar */ } /* right bottom patch - make sure inner bar's right bottom corner is "cut" when it slides down */ .bar-container:before { content: ""; position: absolute; z-index: 3; /* to be above .bar-inner */ bottom: 0; right: 0; /* Use bottom border to shape triangle */ width: 0; height: 0; border-style: solid; border-width: 0 0 2.5em 2.5em; border-color: transparent transparent rgba(183,183,183,1); } /** BACK CASING **/ /* Back panel */ .bar-background { width: 10em; height: 100%; position: absolute; top: -2.5em; left: 2.5em; z-index: 1; /* just for reference */ } .bar-background:before, .bar-background:after { content: ""; position: absolute; } /* Bottom panel */ .bar-background:before { bottom: -2.5em; right: 1.25em; width: 10em; height: 2.5em; -webkit-backface-visibility: hidden; -webkit-transform: skew(-45deg); -moz-transform: skew(-45deg); -o-transform: skew(-45deg); -ms-transform: skew(-45deg); transform: skew(-45deg); } /* Left back panel */ .bar-background:after { top: 1.25em; right: 10em; width: 2.5em; height: 100%; -webkit-backface-visibility: hidden; /* skew only the Y-axis */ -webkit-transform: skew(0deg, -45deg); -moz-transform: skew(0deg, -45deg); -o-transform: skew(0deg, -45deg); -ms-transform: skew(0deg, -45deg); transform: skew(0deg, -45deg); } /** FRONT CASING **/ /* Front panel */ .bar-foreground { z-index: 3; /* be above .bar-background and .bar-inner */ } .bar-foreground, .bar-inner { position: absolute; width: 10em; height: 100%; top: 0; left: 0; } .bar-foreground:before, .bar-foreground:after, .bar-inner:before, .bar-inner:after { content: ""; position: absolute; } /* Right front panel */ .bar-foreground:before, .bar-inner:before { top: -1.25em; right: -2.5em; width: 2.5em; height: 100%; background-color: rgba(160, 160, 160, .27); -webkit-transform: skew(0deg, -45deg); -moz-transform: skew(0deg, -45deg); -o-transform: skew(0deg, -45deg); -ms-transform: skew(0deg, -45deg); transform: skew(0deg, -45deg); } /* Top front panel */ .bar-foreground:after, .bar-inner:after { top: -2.5em; right: -1.25em; width: 100%; height: 2.5em; background-color: rgba(160, 160, 160, .2); -webkit-transform: skew(-45deg); -moz-transform: skew(-45deg); -o-transform: skew(-45deg); -ms-transform: skew(-45deg); transform: skew(-45deg); } /** BAR's inner block **/ .bar-inner { z-index: 2; /* to be above .bar-background */ top: auto; /* reset position top */ background-color: rgba(5, 62, 123, .6); height: 0; bottom: -2.5em; color: transparent; /* hide text values */ -webkit-transition: height 0.8s ease-out, bottom 0.8s ease-out; -moz-transition: height 0.8s ease-out, bottom 0.8s ease-out; -o-transition: height 0.8s ease-out, bottom 0.8s ease-out; -ms-transition: height 0.8s ease-out, bottom 0.8s ease-out; transition: height 0.8s ease-out, bottom 0.8s ease-out; } /* Right panel */ .bar-inner:before { background-color: rgba(5, 62, 123, .6); } /* Top panel */ .bar-inner:after { background-color: rgba(47, 83, 122, .7); } /****************************************************************************** ** ** ** UI Elements ** ** ** ** You don't need this stuff in general, it's just used for the demo page ** ** ** ******************************************************************************/ /**************** * FILL BUTTONS * ****************/ input[name^="fill-"] { width: 65px; height: 25px; position: absolute; opacity: 0; cursor: pointer; z-index: 100; } input[name^="fill-"] + label { display: inline-block; margin: 0px; width: 65px; padding: 0px 6px; color: #777; line-height: 20px; font-size: 13px; text-shadow: 1px 1px 1px #fff; border: 1px solid #fff; background: #ffffff; /* Old browsers */ background: -moz-linear-gradient(top, #ffffff 0%, #f6f6f6 47%, #ededed 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(47%,#f6f6f6), color-stop(100%,#ededed)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* Opera 11.10+ */ background: -ms-linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* IE10+ */ background: linear-gradient(top, #ffffff 0%,#f6f6f6 47%,#ededed 100%); /* W3C */ box-shadow: 0px 1px 1px rgba(0,0,0,0.3); } input[name^="fill-"]:checked + label { background: rgba(34, 35, 36, .7); border-color: #333; color: #fff; text-shadow: none; box-shadow: 0px 1px 1px rgba(255,255,255, 0.4); } /* Change bars fill when a Product is selected */ /* None */ input#f-none:checked ~ .graph-container > li:nth-child(1) .bar-inner { height: 0; bottom: -2.5em; } input#f-none:checked ~ .graph-container > li:nth-child(2) .bar-inner { height: 0; bottom: -2.5em; } input#f-none:checked ~ .graph-container > li:nth-child(3) .bar-inner { height: 0; bottom: -2.5em; } input#f-none:checked ~ .graph-container > li:nth-child(4) .bar-inner { height: 0; bottom: -2.5em; } input#f-none:checked ~ .graph-container > li:nth-child(5) .bar-inner { height: 0; bottom: -2.5em; } /* Product 1 */ input#f-product1:checked ~ .graph-container > li:nth-child(1) .bar-inner { height: 25%; bottom: 0; } input#f-product1:checked ~ .graph-container > li:nth-child(2) .bar-inner { height: 50%; bottom: 0; } input#f-product1:checked ~ .graph-container > li:nth-child(3) .bar-inner { height: 75%; bottom: 0; } input#f-product1:checked ~ .graph-container > li:nth-child(4) .bar-inner { height: 100%; bottom: 0; } input#f-product1:checked ~ .graph-container > li:nth-child(5) .bar-inner { height: 50%; bottom: 0; } /* Product 2 */ input#f-product2:checked ~ .graph-container > li:nth-child(1) .bar-inner { height: 50%; bottom: 0; } input#f-product2:checked ~ .graph-container > li:nth-child(2) .bar-inner { height: 100%; bottom: 0; } input#f-product2:checked ~ .graph-container > li:nth-child(3) .bar-inner { height: 25%; bottom: 0; } input#f-product2:checked ~ .graph-container > li:nth-child(4) .bar-inner { height: 75%; bottom: 0; } input#f-product2:checked ~ .graph-container > li:nth-child(5) .bar-inner { height: 100%; bottom: 0; } /* Product 3 */ input#f-product3:checked ~ .graph-container > li:nth-child(1) .bar-inner { height: 25%; bottom: 0; } input#f-product3:checked ~ .graph-container > li:nth-child(2) .bar-inner { height: 75%; bottom: 0; } input#f-product3:checked ~ .graph-container > li:nth-child(3) .bar-inner { height: 100%; bottom: 0; } input#f-product3:checked ~ .graph-container > li:nth-child(4) .bar-inner { height: 50%; bottom: 0; } input#f-product3:checked ~ .graph-container > li:nth-child(5) .bar-inner { height: 25%; bottom: 0; } /**************** * COLOR BUTTONS * ****************/ input[name^="paint-"] { width: 25px; height: 25px; position: absolute; opacity: 0; cursor: pointer; z-index: 100; } /* unselected color switch */ input[name^="paint-"] + label { color: #989da4; font-weight: bold; text-decoration: none; display: inline-block; width: 25px; height: 25px; overflow: hidden; background: rgba(34, 35, 36, .7);/*#171b20;*/ margin: 0 2px -7px; position: relative; cursor: pointer; color: transparent; box-shadow: 0 0 0 2px rgba(255,255,255,0.1), 1px 1px 3px rgba(0,0,0,0.3); text-align: center; } #graph-blue + label { background: #2972c3; background: -webkit-radial-gradient(rgba(39, 118, 205, 1), rgba(44, 106, 174, .9)); background: -moz-radial-gradient(rgba(39, 118, 205, 1), rgba(44, 106, 174, .9)); background: -o-radial-gradient(rgba(39, 118, 205, 1), rgba(44, 106, 174, .9)); background: -ms-radial-gradient(rgba(39, 118, 205, 1), rgba(44, 106, 174, .9)); background: radial-gradient(rgba(39, 118, 205, 1), rgba(44, 106, 174, .9)); } #graph-green + label { background: #5f9a3f; background: -webkit-radial-gradient(rgba(98, 160, 60, .9), rgba(43, 148, 48, 1)); background: -moz-radial-gradient(rgba(98, 160, 60, .9), rgba(43, 148, 48, 1)); background: -o-radial-gradient(rgba(98, 160, 60, .9), rgba(43, 148, 48, 1)); background: -ms-radial-gradient(rgba(98, 160, 60, .9), rgba(43, 148, 48, 1)); background: radial-gradient(rgba(98, 160, 60, .9), rgba(43, 148, 48, 1)); } #graph-rainbow + label { background: transparent url(../img/rainbow.gif) no-repeat; } #graph-green:checked + label, #graph-blue:checked + label, #graph-rainbow:checked + label { box-shadow: 0 0 0 2px rgba(255,255,255,0.7), 1px 1px 3px rgba(0,0,0,0.3); } input#graph-blue:checked ~ .graph-container .bar-inner, input#graph-blue:checked ~ .graph-container .bar-inner:before { background-color: rgba(5, 62, 123, .6); } input#graph-blue:checked ~ .graph-container .bar-inner:after { background-color: rgba(47, 83, 122, .7); } input#graph-green:checked ~ .graph-container .bar-inner, input#graph-green:checked ~ .graph-container .bar-inner:before { background-color: rgba(5, 123, 5, .3); } input#graph-green:checked ~ .graph-container .bar-inner:after { background-color: rgba(63, 122, 47, .4); } input#graph-rainbow:checked ~ .graph-container li:nth-child(1) .bar-inner, input#graph-rainbow:checked ~ .graph-container li:nth-child(1) .bar-inner:before { background-color: rgba(196, 109, 59, .6); } input#graph-rainbow:checked ~ .graph-container li:nth-child(1) .bar-inner:after { background-color: rgba(216, 143, 102, .7); } input#graph-rainbow:checked ~ .graph-container li:nth-child(2) .bar-inner, input#graph-rainbow:checked ~ .graph-container li:nth-child(2) .bar-inner:before { background-color: rgba(5, 123, 5, .3); } input#graph-rainbow:checked ~ .graph-container li:nth-child(2) .bar-inner:after { background-color: rgba(63, 122, 47, .4); } input#graph-rainbow:checked ~ .graph-container li:nth-child(3) .bar-inner, input#graph-rainbow:checked ~ .graph-container li:nth-child(3) .bar-inner:before { background-color: rgba(255, 0, 0, .3); } input#graph-rainbow:checked ~ .graph-container li:nth-child(3) .bar-inner:after { background-color: rgba(255, 71, 71, .3); } input#graph-rainbow:checked ~ .graph-container li:nth-child(4) .bar-inner, input#graph-rainbow:checked ~ .graph-container li:nth-child(4) .bar-inner:before { background-color: rgba(255, 248, 136, .3); } input#graph-rainbow:checked ~ .graph-container li:nth-child(4) .bar-inner:after { background-color: rgba(252, 248, 182, .5); } input#graph-rainbow:checked ~ .graph-container li:nth-child(5) .bar-inner, input#graph-rainbow:checked ~ .graph-container li:nth-child(5) .bar-inner:before { background-color: rgba(5, 62, 123, .6); } input#graph-rainbow:checked ~ .graph-container li:nth-child(5) .bar-inner:after { background-color: rgba(47, 83, 122, .7); } /**************** * SIZE BUTTONS * ****************/ input[name^="resize-"] { position: absolute; opacity: 0; cursor: pointer; z-index: 100; width: 70px; height: 35px; z-index: 100; } /* unselected color switch */ input[name^="resize-"] + label { color: #fff; display: inline-block; background: rgba(183, 172, 172, .7); width: 70px; line-height: 35px; height: 35px; text-align: center; position: relative; } input[name^="resize-"]:checked + label { background: rgba(34, 35, 36, .7); color: #fff; box-shadow: 0px 1px 1px rgba(255,255,255,0.3); } input#graph-small:checked ~ .graph-container .bar-container, input#graph-small:checked ~ .graph-container:after, input#graph-small:checked ~ .graph-container > li:last-child { height: 10em; } input#graph-normal:checked ~ .graph-container .bar-container, input#graph-normal:checked ~ .graph-container:after, input#graph-normal:checked ~ .graph-container > li:last-child { height: 30em; } input#graph-large:checked ~ .graph-container .bar-container, input#graph-large:checked ~ .graph-container:after, input#graph-large:checked ~ .graph-container > li:last-child { height: 60em; } /****************************************************************************** ** ** ** VARIABLES ** ** ** ******************************************************************************/ /**************** * SPACING * ****************/ /* spacing between bars */ .graph-container > li .bar-container { margin-right: 1.5em; } /* spacing before first bar */ .graph-container > li:first-child { margin-left: 1.5em; } /* spacing after last bar */ .graph-container > li:nth-last-child(2) .bar-container { margin-right: 1em; } /**************** * Colors * ****************/ /* Bar's Back side */ .bar-background { background-color: rgba(160, 160, 160, .1); } /* Bar's Bottom side */ .bar-background:before { background-color: rgba(160, 160, 160, .2); } /* Bar's Left Back side */ .bar-background:after { background-color: rgba(160, 160, 160, .05); } /* Bar's Front side */ .bar-foreground { background-color: rgba(160, 160, 160, .1); } .button-label{ font-weight: bold; color: #aaa; line-height: 40px; text-shadow: 1px 1px 1px rgba(255,255,255,0.8); display: inline; margin: 0 10px 0 20px; } .button-label:before { content: " "; white-space: wrap; } .main span:first-of-type{ margin-left: 0px; } /****************************************************************************** ** ** ** RESPONSIVENESS ** ** ** ** Just as an example to show you the way how to resize the graph ** ** ** ******************************************************************************/ @media screen and (max-width: 1125px) { .graph-container{ font-size: 0.7em; } } @media screen and (max-width: 1050px) { .graph-container{ font-size: 0.6em; } } @media screen and (max-width: 900px) { .button-label{ margin: 0 10px 0 0; } .button-label:before { content:"\A"; white-space: pre; } .main { padding: 20px 20px 40px; } } @media screen and (max-width: 765px) { .graph-container { font-size: 0.5em; } } @media screen and (max-width: 720px) { .graph-container { font-size: 0.45em; } } @media screen and (max-width: 630px) { .graph-container { font-size: 0.32em; } } @media screen and (max-width: 360px) { .graph-container { font-size: 0.22em; } .button-label{ margin: 0 5px 0 0;} }