Dark UI Kit
CSS3带来的技术革新颠覆了传统网页的制作技术。只要你能够熟练掌握,通过CSS3的新特性,几乎可以制作出任何你想要的效果以及一部分以前只能用JS来实现的组件。白牙根据国外UI套件设计图,结合CSS3和原生JS将其所有组件还原了出来。包括以下各组件:导航条、表单、按钮、select下拉多选菜单、分享按钮、Tooptip、switcher开关、sliderbar滑动器、对话框、图片轮播插件、HTML5Video视频播放器等等。其中主要应用到的CSS3特性有:border-radius圆角,gradient线性渐变和径向渐变,box-shadow盒子阴影,transition过渡以及font-face制作图表等。
下面我们分块来向大家展示各个组件的HTML结构、CSS样式、JS脚本以及对应的效果图,首先先给出页面布局的基础样式。
body {
background: url(bg.jpg);
font-family: Arial,Helvetica,Geneva,Verdana,sans-serif;
}
::-webkit-input-placeholder {
font-size: 12px !important;
color: #fff;
}
::-moz-placeholder {
font-size: 12px;
color: #fff;
opacity: 1 !important;
}
.row {margin: 20px 0;}
.row div[class*="span"] {float: left;}
.row:after {
content: "";
width: 0;
height: 0;
display: block;
clear:both;
visibility:hidden;
}
/*布局栅格宽度*/
.span2 {width: 20%;}
.span4 {width: 33%;}
.span10 {width: 80%;}
/*清楚浮动*/
.clearfix:after {
content: "";
width: 0;
height: 0;
display: block;
clear:both;
visibility:hidden;
}
.container {
width: 700px;
border: 1px dashed #fff;
margin: 0 auto;
padding: 50px 20px;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
/*加载服务器字体文件*/
@font-face {
font-family: 'icomoon';
src:url('fonts/icomoon.eot');
src:url('fonts/icomoon.eot?#iefix') format('embedded-opentype'),
url('fonts/icomoon.woff') format('woff'),
url('fonts/icomoon.ttf') format('truetype'),
url('fonts/icomoon.svg#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
一、导航
HTML
<div class="navbar">
<ul class="nav clearfix">
<li><a href="">Menu</a></li>
<li><a href="">Menu</a></li>
<li><a href="">Menu</a></li>
<li><a href="">Menu</a></li>
</ul>
<form class="navbar-search">
<div class="input-append">
<input type="text" placeholder="Search..." />
<span class="icon-search"></span>
</div>
</form>
</div>
此处学习了bootstrap的导航条结构,非常清晰,建议初学者在HTML结构上可以多多参照bootstrap的各个组件
CSS代码
.navbar {
border: 1px solid;
margin-bottom: 20px;
float: left;
border-color: rgb(102,104,105) rgb(98,100,102) rgb(94,96,97);
box-shadow: 0 1px 3px rgb(0,0,0);
border-radius: 2px;
background:-webkit-linear-gradient(top,rgb(71,74,75),rgb(58,61,63));
background:-moz-linear-gradient(top,rgb(71,74,75),rgb(58,61,63));
background:-ms-linear-gradient(top,rgb(71,74,75),rgb(58,61,63));
background:linear-gradient(top,rgb(71,74,75),rgb(58,61,63));
}
.navbar .nav {
margin: 0;
padding: 0;
float: left;
}
.navbar .nav li {
float: left;
list-style:none;
}
.navbar .nav li:first-child {border-radius: 2px 0 0 2px;}
.navbar .nav a {
color: #fff;
text-decoration:none;
font-size: 12px;
border-right: 1px solid rgb(102,104,105);
line-height: 43px;
text-align: center;
display: inline-block;
min-width: 100px;
-moz-box-sizing:border-box;
box-sizing:border-box;
padding: 0 30px;
text-shadow:0 1px 0 rgb(0,0,0);
}
.navbar .nav a:hover {
background: -webkit-linear-gradient(top,rgb(61,64,66),rgb(49,53,55));
background: -moz-linear-gradient(top,rgb(61,64,66),rgb(49,53,55));
background: -ms-linear-gradient(top,rgb(61,64,66),rgb(49,53,55));
background: linear-gradient(top,rgb(61,64,66),rgb(49,53,55));
}
.navbar .navbar-search {
float: right;
margin-left: 45px;
position: relative;
}
.navbar-search .input-append input {
border:1px solid;
color: #fff;
border-color: transparent rgb(84,87,88) rgb(113,115,116);
border-top: none;
border-radius: 3px;
height: 35px;
width: 199px;
padding: 9px 10px;
font-size: 12px;
margin: 4px;
outline:none;
box-shadow:inset 0 1px 2px rgb(17,17,18),inset 0 2px 0 rgb(34,34,34),0 1px 0 rgb(77,80,82);
background-color: rgb(51,51,51);
-moz-box-sizing:border-box;
box-sizing:border-box;
}
.navbar .navbar-search .icon-search {
position: absolute;
font-family: 'icomoon';
height: 35px;
width: 35px;
text-align: center;
line-height: 35px;
right: 10px;
top: 4px;
cursor: pointer;
color: rgb(102,104,105);
}
.navbar .navbar-search .icon-search:hover {color: rgb(140,140,140);}

二、表单输入框、checkbox和radio
HTML
<div class="row">
<input type="text" placeholder="Name..." />
<input type="text" placeholder="Email..." />
<input type="text" class="input-query" placeholder="Password..." />
</div>
<div class="row">
<span class="checkbox">
<input type="checkbox" id="checkbox1" name="ckeckbox" />
<label for="checkbox1" data-on="a"></label>
</span><span class="checkbox">
<input type="checkbox" id="checkbox2" name="ckeckbox" />
<label for="checkbox2" data-on="a"></label>
</span><span class="checkbox">
<input type="checkbox" id="checkbox3" name="ckeckbox" checked="checked" />
<label for="checkbox3" data-on="a"></label>
</span>
<span class="radio">
<input type="radio" id="radio1" name="radio" />
<label for="radio1"></label>
</span><span class="radio">
<input type="radio" id="radio2" name="radio" />
<label for="radio2"></label>
</span><span class="radio">
<input type="radio" id="radio3" name="radio" checked="checked" />
<label for="radio3"></label>
</span>
</div>
结构很简单,没有什么好说的,其中
</span><span>
的写法是为了移除display:inline-block带来的间隙。
CSS
.input-query {
border-radius: 17px !important;
}
/*表单输入框*/
input[type="text"] {
height: 36px;
width: 189px;
color: #fff;
outline:none;
font-size: 12px;
padding: 9px 10px;
margin-right: 20px;
box-shadow: 0 0 0 1px rgba(0,0,0,0.4),inset 0 1px 1px rgba(0,0,0,0.3);
border-radius: 3px;
border:1px solid;
border-color: rgb(57,57,57) rgb(73,73,73) rgb(86,86,86);
-moz-box-sizing:border-box;
box-sizing:border-box;
background: -webkit-linear-gradient(top,rgb(42,42,42),rgb(62,62,62));
background: -moz-linear-gradient(top,rgb(42,42,42),rgb(62,62,62));
background: -ms-linear-gradient(top,rgb(42,42,42),rgb(62,62,62));
background: linear-gradient(top,rgb(42,42,42),rgb(62,62,62));
}
.checkbox, .radio {
margin-right: 10px;
padding: 0;
display: inline-block;
}
.checkbox label, .radio label {
width: 20px;
height: 20px;
border:1px solid;
border-radius: 2px;
border-color: rgb(63,64,64) rgb(79,80,81) rgb(93,95,96);
display: inline-block;
vertical-align: top;
line-height: 20px;
text-align: center;
cursor: pointer;
box-shadow: 0 0 0 1px rgba(0,0,0,0.4),inset 0 1px 1px rgba(0,0,0,0.3);
background: -webkit-linear-gradient(top,rgb(61,64,66),rgb(74,76,78));
background: -moz-linear-gradient(top,rgb(61,64,66),rgb(74,76,78));
background: -ms-linear-gradient(top,rgb(61,64,66),rgb(74,76,78));
background: linear-gradient(top,rgb(61,64,66),rgb(74,76,78));
}
.radio label {border-radius: 50%}
.checkbox label:hover:before {
content: attr(data-on);
font-family: 'icomoon';
}
.checkbox input:checked + label:before {
font-family: 'icomoon';
content: attr(data-on);
color: rgb(236,190,29)
}
.radio label:hover:before {
content: "";
display: block;
width: 8px;
height: 8px;
position: relative;
left: 6px;
top: 6px;
-moz-box-sizing:border-box;
box-sizing:border-box;
border: 1px solid rgb(38,38,38);
border-radius: 50%;
background-color: rgb(51,51,51);
}
.radio input:checked + label:before {
content: "";
display: block;
width: 8px;
height: 8px;
position: relative;
left: 6px;
top: 6px;
border:none;
border-radius: 50%;
box-shadow: 0 1px 0 rgb(0,0,0);
background: -webkit-linear-gradient(top,rgb(238,200,63),rgb(207,169,32));
background: -moz-linear-gradient(top,rgb(238,200,63),rgb(207,169,32));
background: -ms-linear-gradient(top,rgb(238,200,63),rgb(207,169,32));
background: linear-gradient(top,rgb(238,200,63),rgb(207,169,32));
}
.checkbox input, .radio input {
display: none;
}
其中通过label标签来自定义checkbox和radio的样式

三、slider范围滑动控件
HTML
<div class="row">
<div class="sliderbar sliderbar-bothway show-value" data-type="bothway">
<div class="slider-range"></div>
<a class="slider-handle left-handle">|||</a>
<a class="slider-handle right-handle">|||</a>
</div>
<div class="sliderbar sliderbar-oneway" data-type="oneway">
<div class="slider-range"></div>
<a class="slider-handle"></a>
</div>
<div class="sliderbar sliderbar-bothway " data-type="bothway">
<div class="slider-range"></div>
<a class="slider-handle left-handle"></a>
<a class="slider-handle right-handle"></a>
</div>
</div>
CSS
.sliderbar {
width: 186px;
height: 12px;
border-radius: 6px;
box-shadow: inset 0 -1px 0 rgba(0,0,0,0.4),0 1px 0 rgba(140,140,140,0.4);
background: -webkit-linear-gradient(top,rgb(38,38,38),rgb(63,63,63));
background: -moz-linear-gradient(top,rgb(38,38,38),rgb(63,63,63));
background: -ms-linear-gradient(top,rgb(38,38,38),rgb(63,63,63));
background: linear-gradient(top,rgb(38,38,38),rgb(63,63,63));
position: relative;
margin-bottom: 20px;
}
.sliderbar .slider-range {
width: 33%;
height: 60%;
border-radius: 4px;
top: 20%;
background-color: rgb(122,161,41);
position: absolute;
}
.sliderbar-bothway .slider-range {left: 20%;}
.sliderbar-bothway .slider-handle {
height: 20px;
width: 20px;
top: -4px;
border:none;
margin-left: -10px;
border-radius: 50%;
background: -*-linear-gradient(45deg,rgb(134,126,126),rgb(134,126,126) 15%, rgb(134,126,126) 16%, rgb(220,220,220) 50%, rgb(134,126,126) 85%,rgb(134,126,126)) no-repeat left top/50% 50%,
-*-linear-gradient(-45deg,rgb(134,126,126),rgb(134,126,126) 15%, rgb(134,126,126) 16%, rgb(220,220,220) 50%, rgb(134,126,126) 85%,rgb(134,126,126)) no-repeat right top/50% 50%,
-*-linear-gradient(-45deg,rgb(134,126,126), rgb(134,126,126) 15%, rgb(134,126,126) 16%,rgb(220,220,220) 50%, rgb(134,126,126) 85%,rgb(134,126,126)) no-repeat left bottom/50% 50%,
-*-linear-gradient(45deg,rgb(134,126,126), rgb(134,126,126) 15%, rgb(134,126,126) 16%,rgb(220,220,220) 50%, rgb(134,126,126) 85%,rgb(134,126,126)) no-repeat right bottom/50% 50%;
display: block;
position: absolute;
cursor: pointer;
}
.sliderbar-bothway.show-value .slider-handle {
width: 38px;
height: 150%;
top: -25%;
border:1px solid rgba(0,0,0,0.1);
border-radius:4px;
text-align: center;
font-size: 12px;
font-weight: bolder;
color: rgb(140,136,136);
text-shadow:0 1px 0 rgb(239,239,239);
background:-webkit-linear-gradient(top,rgb(255,255,255),rgb(169,169,169));
background:-moz-linear-gradient(top,rgb(255,255,255),rgb(169,169,169));
background:-ms-linear-gradient(top,rgb(255,255,255),rgb(169,169,169));
background:linear-gradient(top,rgb(255,255,255),rgb(169,169,169));
}
.sliderbar-bothway:not(.show-value) .slider-handle:before {
content: "";
position: absolute;
left: 6px;
top: 6px;
display: block;
background: rgb(75,74,74);
width: 8px;
height: 8px;
border-radius: 50%;
}
.sliderbar-oneway .slider-handle {
display: block;
position: absolute;
height: 20px;
width: 20px;
top: -4px;
left: 33%;
margin-left: -10px;
border-radius: 50%;
cursor: pointer;
background: -*-linear-gradient(45deg,rgb(134,126,126),rgb(134,126,126) 15%, rgb(134,126,126) 16%, rgb(220,220,220) 50%, rgb(134,126,126) 85%,rgb(134,126,126)) no-repeat left top/50% 50%,
-*-linear-gradient(-45deg,rgb(134,126,126),rgb(134,126,126) 15%, rgb(134,126,126) 16%, rgb(220,220,220) 50%, rgb(134,126,126) 85%,rgb(134,126,126)) no-repeat right top/50% 50%,
-*-linear-gradient(-45deg,rgb(134,126,126), rgb(134,126,126) 15%, rgb(134,126,126) 16%,rgb(220,220,220) 50%, rgb(134,126,126) 85%,rgb(134,126,126)) no-repeat left bottom/50% 50%,
-*-linear-gradient(45deg,rgb(134,126,126), rgb(134,126,126) 15%, rgb(134,126,126) 16%,rgb(220,220,220) 50%, rgb(134,126,126) 85%,rgb(134,126,126)) no-repeat right bottom/50% 50%;
}
.sliderbar-bothway .left-handle {
left: 20%;
margin-left: -10px;
z-index: 1;
}
.sliderbar-bothway .right-handle {
left: 53%;
margin-left: -10px;
z-index: 2;
}
.sliderbar-bothway.show-value .right-handle,
.sliderbar-bothway.show-value .left-handle {
margin-left: -20px;
}
(function(){
var sliderbar = document.querySelectorAll(".sliderbar");
for (var i = 0, len = sliderbar.length; i < len; i++) {
EventUtil.addHandler(sliderbar[i],"mousedown",startDrag);
}
function startDrag(e) {
var e = EventUtil.getEvent(e);
EventUtil.preventDefault(e); /*可以消除拖动元素时出现的禁止操作手势*/
var target = EventUtil.getTarget(e),
parent;
if (target.nodeName.toLowerCase()!="a") {
return;
} else {
parent = target.parentNode;
}
var type = getDataAttr(parent,"type"),
sliderRange = parent.getElementsByTagName("div")[0],
origX = e.clientX,
origLeft = target.offsetLeft,
origRangeWidth = sliderRange.clientWidth,
anotherHandle,
HandleLeft = parent.getElementsByTagName("a")[0],
HandleRight = parent.getElementsByTagName("a")[1];
EventUtil.addHandler(document,"mousemove",doDrag);
EventUtil.addHandler(document,"mouseup",stopDrag);
function doDrag(e) {
var e = EventUtil.getEvent(e),
curX = e.clientX,
curLeft,
maxLeft,
maxRight;
EventUtil.preventDefault(e);
if (type=="bothway") {
var temp;
if (parent.className.match(/show-value/g)) {
temp = 20;
} else {
temp = 10;
}
maxLeft = target===HandleLeft ? - temp : HandleLeft.offsetLeft;
maxRight = target===HandleLeft ? HandleRight.offsetLeft : parent.clientWidth - temp;
curLeft = curX - origX + origLeft;
if (curLeft<maxLeft) {
curLeft = maxLeft;
} else if (curLeft>maxRight) {
curLeft = maxRight;
}
if (target===HandleLeft) {
sliderRange.style.left = target.style.left = curLeft + temp + "px";
} else {
target.style.left = curLeft + temp + "px";
}
curWidth = HandleRight.offsetLeft - HandleLeft.offsetLeft;
sliderRange.style.width = curWidth + "px";
} else {
curLeft = curX - origX + origLeft + 10;
(curLeft < 0)&&(curLeft = 0);
(curLeft > parent.clientWidth)&&(curLeft = parent.clientWidth);
target.style.left = curLeft + "px";
sliderRange.style.width = curLeft + "px";
}
}
function stopDrag(e) {
EventUtil.removeHandler(document,"mousemove",doDrag);
EventUtil.removeHandler(document,"mouseup",stopDrag);
if (type=="oneway") {
return
} else if(target.style.zIndex < 2) {
anotherHandle = target===HandleLeft ? HandleRight : HandleLeft;
exchangeCascadingOrder(target,anotherHandle);
}
}
function exchangeCascadingOrder(activedHandle,anotherHandle) {
activedHandle.style.zIndex = 2;
anotherHandle.style.zIndex = 1;
}
}
})();

四、select下拉菜单和switcher滑动开关
HTML
<div class="select"> <span class="value">select</span> <ul> <li class="option o1">Volvo</li> <li class="option o2">Saab</li> <li class="option o3">Opel</li> <li class="option o4">Audi</li> </ul> <select> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="opel">Opel</option> <option value="audi">Audi</option> </select> </div> <div class="row" style="margin-top:100px;"> <span class="switcher" style="margin-right:30px;"> <input type="checkbox" id="switcher1" checked="checked" /> <label for="switcher1" data-off="OFF" data-on="ON"></label> </span><span class="switcher"> <input type="checkbox" id="switcher2" /> <label for="switcher2" data-off="OFF" data-on="ON"></label> </span> </div>
CSS
.select {
width: 166px;
height: 35px;
position: relative;
line-height: 35px;
outline: none;
border-bottom: 1px solid rgb(56,58,59);
background: -webkit-linear-gradient(top,rgb(111,111,111),rgb(77,77,77));
background: -moz-linear-gradient(top,rgb(111,111,111),rgb(77,77,77));
background: -ms-linear-gradient(top,rgb(111,111,111),rgb(77,77,77));
background: linear-gradient(top,rgb(111,111,111),rgb(77,77,77));
text-indent: 15px;
padding: 0;
color: #fff;
font-size: 12px;
-moz-box-sizing:border-box;
box-sizing:border-box;
cursor: pointer;
-webkit-user-select: none;
}
.select:before {
content: "";
display: block;
position: absolute;
right: 8px;
top: 5px;
width: 23px;
height: 23px;
border:1px solid rgb(51,51,51);
border-radius: 50%;
background: -webkit-linear-gradient(top,rgb(255,255,255),rgb(123,123,123));
background: -moz-linear-gradient(top,rgb(255,255,255),rgb(123,123,123));
background: -ms-linear-gradient(top,rgb(255,255,255),rgb(123,123,123));
background: linear-gradient(top,rgb(255,255,255),rgb(123,123,123));
}
.select:after {
content: "";
display: block;
position: absolute;
width: 0;
height: 0;
right: 16px;
top: 14px;
border-style: solid;
border-width: 8px 4px;
border-color: rgb(95,95,95) transparent transparent transparent;
}
.select ul {
position: absolute;
left: 0;
margin: 0;
padding: 0;
top: 100%;
border-radius:0 0 5px 5px;
width: 100%;
-webkit-user-select: none;
background: -webkit-linear-gradient(top,rgb(101,104,107),rgb(67,70,73));
background: -moz-linear-gradient(top,rgb(101,104,107),rgb(67,70,73));
background: -ms-linear-gradient(top,rgb(101,104,107),rgb(67,70,73));
background: linear-gradient(top,rgb(101,104,107),rgb(67,70,73));
}
.option {
margin: 0;
height: 22px;
line-height: 22px;
display: block;
}
.option:last-child {border-radius: 0 0 5px 5px;}
.option:hover {
background: -webkit-linear-gradient(top,rgb(161,200,74),rgb(115,153,34));
background: -moz-linear-gradient(top,rgb(161,200,74),rgb(115,153,34));
background: -ms-linear-gradient(top,rgb(161,200,74),rgb(115,153,34));
background: linear-gradient(top,rgb(161,200,74),rgb(115,153,34));
}
.select select {display: none;}
/*switcher*/
.switcher label {
width: 56px;
height: 20px;
border-radius: 10px;
display: inline-block;
position: relative;
background: -*-linear-gradient(top,rgb(122,138,58),rgb(148,165,70)) no-repeat left top/0 100%,
-*-linear-gradient(top,rgb(170,65,24),rgb(180,75,35)) no-repeat left top/100% 100%;
box-shadow: inset 0 2px 3px 0 rgba(20,20,20,0.3);
border: 1px solid rgba(20,20,20,0.8);
cursor: pointer;
-*-transition:background-size 500ms ease;
}
.switcher label:before {
content: "|||";
display: block;
position: absolute;
text-align: center;
line-height: 20px;
font-size: 12px;
color: rgb(228,228,228);
text-shadow:1px 0 0 #fff;
left: 0;
top: 0;
height: 20px;
width: 20px;
border-radius: 10px;
background: -*-linear-gradient(top,rgb(255,255,255),rgb(236,236,236));
-*-transition:left 300ms ease;
}
.switcher label:after {
content: attr(data-off);
line-height: 20px;
text-indent: 27px;
font-size: 12px;
color: #fff;
display: inline-block;
-*-transform:scale(0.84);
}
.switcher input:checked + label {
background: -*-linear-gradient(top,rgb(122,138,58),rgb(148,165,70)) no-repeat left top/100% 100%,
-*-linear-gradient(top,rgb(170,65,24),rgb(180,75,35)) no-repeat left top/100% 100%;
}
.switcher input:checked + label:before {left: 36px;}
.switcher input:checked + label:after {content:attr(data-on);text-indent: 12px;}
.switcher input {display: none;}
(function(){
var selectRes = document.querySelector(".select");
var optionsWrapper = selectRes.querySelector("ul");
var selected = selectRes.querySelector(".value");
var dropped = true;
EventUtil.addHandler(selectRes,"click",function(){
if (!dropped) {
optionsWrapper.style.display = "block";
dropped = true;
} else {
optionsWrapper.style.display = "none";
dropped = false;
}
});
EventUtil.addHandler(optionsWrapper,"click",function(e){
var target = EventUtil.getTarget(e);
var select = selectRes.querySelector("select");
var seleOptIndex;
switch(target.className) {
case "option o1" :
seleOptIndex = 1;
break;
case "option o2" :
seleOptIndex = 2;
break;
case "option o3" :
seleOptIndex = 3;
break;
case "option o4" :
seleOptIndex = 4;
break;
}
select.selectedIndex = seleOptIndex -1 ;
selected.innerHTML = select.value;
});
})();

五、登陆表单
<form action class="login-form">
<h4 class="title">Login</h4>
<input type="text" class="e-mail" name="e-mail" placeholder="E-mail..." />
<input type="text" class="password" name="password" placeholder="Password..." />
<input type="submit" class="sign-in" name="sign-in" value="sign-in" />
<div class="remember-me">
<input type="checkbox" id="remember-me" name="remember-me" /><label for="remember-me" data-on="a">
</label><label class="info" for="remember-me">Remember me</label>
</div>
</form>
.login-form {
padding: 20px 16px;
margin-top: 18px;
border: 1px solid;
border-color: rgb(7,8,8) rgb(13,14,16);
border-bottom: none;
box-shadow: 0 1px 0 rgba(140,140,140,0.2);
border-radius: 5px;
background: rgb(20,21,23);
position: relative;
}
.login-form:before {
content:"";
width: 0;
height: 0;
display: block;
position: absolute;
bottom: 100%;
left: 63px;
border: 9px solid;
border-color: transparent rgb(20,21,23) rgb(20,21,23) transparent;
}
.login-form .title {
margin:0;
text-align: center;
color: rgb(193,193,193);
}
.login-form .e-mail, .login-form .password {
height: 30px;
width: 180px;
border-radius: 15px;
margin: 16px 0;
padding: 9px 18px;
font-size: 12px;
display: block;
color: #000;
background: -*-linear-gradient(top,rgb(240,240,240),rgb(255,255,255));
}
.login-form .password::-webkit-input-placeholder,
.login-form .e-mail::-webkit-input-placeholder {
font-size: 12px;
color: #000 !important;
}
.login-form .e-mail::-moz-placeholder,
.login-form .password::-moz-placeholder {
font-size: 12px;
color: #000 !important;
opacity: 1 !important;
}
.login-form .sign-in {
width: 96px;
border:1px solid;
display: block;
height: 30px;
border-radius: 15px;
color: rgb(20,21,23);
text-shadow:0 1px 0 rgb(180,180,180);
background: -*-linear-gradient(top,rgb(159,198,73),rgb(112,150,31));
border-color: rgb(190,217,133) rgb(176,202,120) rgb(156,182,101);
margin-bottom: 16px;
cursor: pointer;
}
.login-form .sign-in:hover {
background: -*-linear-gradient(top,rgb(175,215,85),rgb(125,165,40));
}
.remember-me input {display: none;}
#remember-me + label {
display: inline-block;
width: 18px;
height: 18px;
border-radius: 4px;
position: relative;
vertical-align: middle;
cursor: pointer;
background: -*-linear-gradient(top,rgb(255,255,255),rgb(181,181,181));
}
#remember-me + label:before {
content: "";
display: block;
position: absolute;
width: 10px;
height: 10px;
left: 4px;
top: 4px;
background: rgb(141,179,57);
box-shadow: inset 0 1px 2px rgb(66,84,27);
}
#remember-me:checked + label:before {
content: attr(data-on);
font-family: 'icomoon';
font-size: 12px;
font-weight: 100;
}
.remember-me .info {
font-size: 12px;
color: #fff;
cursor: pointer;
margin-left: 11px;
text-shadow:0 1px 0 rgb(10,10,11);
}

六、按钮和Tooltip
HTML
<div class="span10">
<div class="row">
<button class="btn">Button</button>
<button class="btn light-green">Button</button>
<button class="btn blue">Button</button>
<button class="btn gray">Button</button>
<button class="btn red">Button</button>
</div>
<div class="row">
<button class="btn btn-icon-like" data-icon="b">like</button>
<button class="btn btn-icon-next" data-icon="d">next</button>
<button class="btn btn-icon-prev" data-icon="e">prev</button>
<button class="btn btn-icon-cancel" data-icon="g">cancel</button>
<button class="btn btn-icon-bookmark" data-icon="h">bookmark</button>
</div>
<div class="row">
<button class="btn btn-icon-comment" data-icon="i">comment</button>
<button class="btn btn-icon-add-new" data-icon="j">add new</button>
<button class="btn btn-icon-messages" data-icon="k">messages</button>
<button class="btn btn-icon-download" data-icon="l">download</button>
<button class="btn btn-icon-share" data-icon="m">share</button>
</div>
</div>
<div class="span2">
<div class="row">
<div class="row"><span class="tooltip red">Tooltip</span></div>
<div class="row"><span class="tooltip light-green">Tooltip</span></div>
<div class="row"><span class="tooltip blue">Tooltip</span></div>
</div>
</div>
<div class="row">
<a class="btn-share-twitter">n<span class="counter">230</span></a>
<a class="btn-share-stumbleupon">o<span class="counter">365</span></a>
<a class="btn-share-fb">p<span class="counter">42</span></a>
<a class="btn-share-rss">q<span class="counter">9</span></a>
</div>
.btn {cursor: pointer;}
.btn , .tooltip{
height: 28px;
width: 92px;
border: none;
box-shadow: inset 0 1px 1px rgb(105,108,110),0 0 0 1px rgba(0,0,0,0.2),0 2px 2px 0 rgb(20,20,20);
color: #fff;
border-radius: 15px;
font-size: 12px;
text-shadow:0 1px 0 #000;
background: -*-linear-gradient(top,rgb(51,51,53),rgb(19,20,21));
-moz-box-sizing:border-box;
box-sizing:border-box;
text-transform: capitalize;
}
.btn.light-green, .tooltip.light-green {
color: #000;
background: -*-linear-gradient(top,rgb(205,233,143),rgb(113,149,36));
box-shadow: inset 0 1px 1px rgb(229,244,195),0 0 0 1px rgba(0,0,0,0.2),0 2px 2px 0 rgb(20,20,20);
}
.btn.blue, .tooltip.blue {
background: -*-linear-gradient(top,rgb(54,154,238),rgb(1,96,168));
box-shadow: inset 0 1px 1px rgb(168,212,248),0 0 0 1px rgba(0,0,0,0.2),0 2px 2px 0 rgb(20,20,20);
}
.btn.gray {
color: #000;
background: -*-linear-gradient(top,rgb(255,255,255),rgb(169,169,171));
box-shadow: inset 0 1px 1px rgb(229,244,195),0 0 0 1px rgba(0,0,0,0.2),0 2px 2px 0 rgb(20,20,20);
}
.btn.red, .tooltip.red {
color: #000;
background: -*-linear-gradient(top,rgb(248,53,53),rgb(204,10,10));
box-shadow: inset 0 1px 1px rgb(249,119,119),0 0 0 1px rgba(0,0,0,0.2),0 2px 2px 0 rgb(20,20,20);
}
.btn:hover {background: -*-linear-gradient(top,rgb(71,71,73),rgb(39,40,41));}
.btn.light-green:hover {background:-*-linear-gradient(top,rgb(215,240,160),rgb(130,180,50));}
.btn.blue:hover {background: -*-linear-gradient(top,rgb(75,160,245),rgb(20,116,180));}
.btn.gray:hover {background: -*-linear-gradient(top,rgb(255,255,255),rgb(189,189,191));}
.btn.red:hover {background: -*-linear-gradient(top,rgb(253,73,73),rgb(220,35,35));}
button[class*="btn-icon-"] {
border:1px solid rgb(78,79,80);
border-color: rgb(78,79,80) rgb(77,77,78) rgb(70,71,72);
background: -*-linear-gradient(top,rgb(32,33,35),rgb(20,22,22));
box-shadow: 0 0 0 1px rgba(0,0,0,0.4);
padding:0 23px 0 10px;
position: relative;
}
button[class*="btn-icon-"]:after {
font-family: 'icomoon';
content: attr(data-icon);
speak: none;
font-weight: normal;
font-variant: normal;
text-transform: none;
display: block;
line-height: 28px;
position: absolute;
right: 10px;
top: 0;
-webkit-font-smoothing: antialiased;
}
.tooltip {
display: block;
position: relative;
text-align: center;
line-height: 28px;
color: #fff !important;
}
.tooltip:before {
content:"";
display: block;
width: 0;
height: 0;
position: absolute;
left: -22px;
top: 8px;
border-style: solid;
border-width: 5px 12px;
border-color: transparent;
}
.tooltip.light-green:before {
border-right-color: rgb(160,192,91);
}
.tooltip.blue:before {
border-right-color: rgb(28,126,204);
}
.tooltip.red:before {
border-right-color: rgb(226,32,32);
}
/*btn-share*/
a[class*="btn-share"] {
margin-right: 10px;
width: 98px;
height: 28px;
border: 1px solid rgba(0,0,0,0.4);
background: -*-linear-gradient(top,rgb(44,44,44),rgb(63,63,63));
display: inline-block;
border-radius: 4px;
position: relative;
cursor: pointer;
font-size: 20px;
text-shadow:-1px -1px 0 rgb(92,94,95),1px 1px 0 rgb(92,94,95);
color: rgb(70,73,75);
text-indent: 20px;
line-height: 28px;
font-family: 'icomoon';
box-shadow: 0 2px 3px rgb(32,34,35) inset, 0 1px 0 rgba(140,140,140,0.4);
}
a[class*="btn-share"]:hover {color: rgb(30,30,30);}
a[class*="btn-share"] .counter {
position: absolute;
right: 3px;
top: 2px;
color: #fff;
font-size: 12px;
text-indent: 0;
text-align: center;
line-height: 23px;
display: block;
width: 30px;
height: 23px;
text-shadow:0 1px 0 #000;
border:1px solid ;
border-radius: 4px;
border-color: rgb(105,107,108) rgb(100,102,103) rgb(97,99,100);
background: -*-linear-gradient(top,rgb(75,78,80),rgb(63,66,68));
}
a[class*="btn-share"] .counter:after {
content:"";
display: block;
width: 0;
height: 0;
position: absolute;
left: -15px;
top: 8px;
border-style: solid;
border-width: 4px 8px;
border-color: transparent rgb(68,71,73) transparent transparent;
}
a[class*="btn-share"] .counter:before {
content:"";
display: block;
width: 0;
height: 0;
position: absolute;
left: -18px;
top: 7px;
border-style: solid;
border-width: 5px 9px;
border-color: transparent rgb(100,102,103) transparent transparent;
}

七、对话框
HTML
<div class="comment-block clearfix">
<div class="main-block">
<a href="" class="avatar"></a>
<div class="content">
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Aenean commodo ligula eget dolor. Aenean
massa. Cum sociis natoque penatibus et.</p>
<div class="interation">
<a href="" class="like">b<span class="counter">81</span></a>
<a href="" class="comment-bubble">i<span class="counter">25</span></a>
<button class="reply">Reply</button>
</div>
</div>
</div>
<div class="reply-block">
<a href="" class="avatar"></a>
<div class="content">
<p> Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Aenean commodo ligula eget dolor. Aenean
massa. Cum sociis natoque penatibus et.</p>
<div class="interation">
<a href="" class="like">b<span class="counter">75</span></a>
<a href="" class="comment-bubble">i<span class="counter">5</span></a>
<span class="reply-info">in reoly to xxxx</button>
</div>
</div>
</div>
</div>
CSS
.comment-block .content {
padding: 4px 6px;
width: 323px;
border: 1px solid;
border-color: rgba(0,0,0,0.2);
border-left: none;
background: rgb(227,222,229);
font-size: 12px;
border-radius: 4px;
position: relative;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
.comment-block .content:before {
content:"";
display: block;
position: absolute;
top: 0;
width: 20px;
height: 30px;
background: rgb(227,222,229);
}
.comment-block .content:after {
content:"";
display: block;
position: absolute;
top: -15px;
width: 22px;
height: 30px;
background: url(bg.jpg);
}
.comment-block .main-block .content:before {
left: -20px;
border-bottom-left-radius:20px 30px;
}
.comment-block .main-block .content:after {
left: -22px;
border-bottom-left-radius:22px 16px;
}
.comment-block .reply-block .content:before {
right: -20px;
border-bottom-right-radius:20px 30px;
}
.comment-block .reply-block .content:after {
right: -22px;
border-bottom-right-radius:22px 16px;
}
.comment-block .content p {
margin: 8px 12px;
text-shadow:0 1px 0 #fff;
}
.comment-block .main-block {
padding-left: 100px;
margin-bottom: 20px;
position: relative;
}
.comment-block .avatar {
position: absolute;
top: -30px;
border-radius: 50%;
display: block;
width: 62px;
height: 62px;
border:1px solid rgb(151,148,153);
}
.comment-block .main-block .avatar {left: 12px;background: url(avatar-bg1.jpg);}
.comment-block .reply-block .avatar {right: 12px;background: url(avatar-bg2.jpg);}
.comment-block .interation {
height: 26px;
padding-left: 8px;
border:1px solid;
border-radius: 3px;
border-color: rgb(150,146,153) rgb(185,180,189) rgb(255,255,255);
background: rgb(203,197,207);
}
.like, .comment-bubble {
font-family: 'icomoon';
color: rgb(70,70,70);
text-decoration: none;
line-height: 26px;
font-size: 18px;
vertical-align: top;
text-shadow:0 1px 0 rgb(236,236,236);
}
.like:hover, #myVideo .like:hover, .comment-bubble:hover {color: rgb(231,76,60);}
.like:hover .counter, #myVideo .like:hover .counter, .comment-bubble:hover .counter {color: rgb(70,70,70);}
.like .counter, .comment-bubble .counter {
font-size:12px;
margin:0 10px 0 5px;
text-shadow:0 1px 0 rgb(236,236,236);
display: inline-block;
-*-transform:scale(0.8);
}
.comment-block .interation .reply {
width: 70px;
line-height: 23px;
cursor: pointer;
padding: 0;
margin: 0 1px 0 0 ;
font-size: 12px;
text-shadow:0 1px 0 #fff;
float: right;
border:1px solid;
border-radius: 3px;
-moz-box-sizing:border-box;
box-sizing:border-box;
box-shadow: 0 0 0 1px rgba(226,226,226,0.6);
background: -*-linear-gradient(top,rgb(255,255,255),rgb(199,199,199));
border-color: rgb(169,164,173) rgb(149,144,152) rgb(95,92,97);
}
.comment-block .interation .reply:hover {
background: -*-linear-gradient(top,rgb(230,230,230),rgb(190,190,190));
}
.comment-block .reply-block {
float: right;
padding-right: 100px;
position: relative;
}
.comment-block .reply-block .reply-info {
float: right;
line-height: 26px;
margin-right: 16px;
text-shadow:0 1px 0 #fff;
}

八、图片轮播插件
HTML
<div id="myCarousel">
<ol class="carousel-indicators">
<li data-reference="1" class="active"></li>
<li data-reference="2"></li>
<li data-reference="3"></li>
<li data-reference="4"></li>
</ol>
<div class="carousel-inner">
<div class="item active"><img src="http://www.hhhhold.com/452x178"><p class="description">Carousel in Dark UI Carousel in Dark UI</p></div>
<div class="item"><img src="http://hhhhold.com/452x178/r"><p class="description">Carousel in Dark UI Carousel in Dark UI</p></div>
<div class="item"><img src="http://hhhhold.com/452x178/png"><p class="description">Carousel in Dark UI Carousel in Dark UI</p></div>
<div class="item"><img src="http://hhhhold.com/452x178/jpg"><p class="description">Carousel in Dark UI Carousel in Dark UI</p></div>
</div>
<div class="left carousel-control"></div>
<div class="right carousel-control"></div>
</div>
#myCarousel {
position: relative;
width: 452px;
height: 178px;
margin: 0 auto;
border: 5px solid rgba(0,0,0,0.2);
}
.carousel-inner {
position: relative;
overflow: hidden;
}
.carousel-inner .item {
display: none;
position: relative;
-webkit-transition:.6s ease-in-out left;
-moz-transition: .6s ease-in-out left;
-o-transition: .6s ease-in-out left;
transition: .6s ease-in-out left;
}
.carousel-inner .active {
display: block;
left: 0;
}
.carousel-indicators {
position: absolute;
top: 198px;
left: 50%;
list-style: none;
margin: 0;
z-index: 5;
padding: 0;
}
.carousel-indicators li {
width: 13px;
height: 13px;
border-radius: 7px;
background-color: rgb(20,21,23);
box-shadow: inset 0 1px 3px rgb(0,0,0),0 1px 0 rgb(90,90,90);
float: left;
position: relative;
left: -50%;
margin-right: 5px;
cursor: pointer;
}
.carousel-indicators .active {
background:-*-linear-gradient(top,rgb(63,64,65),rgb(10,11,12));
box-shadow: inset 0 1px 0 rgb(111,112,113);
}
.carousel-control {
height: 34px;
width: 56px;
border-top: 0 none;
position: absolute;
bottom: 16px;
box-shadow: 1px 1px 0 rgba(0,0,0,0.4);
cursor: pointer;
background:rgb(227,222,229);
}
.carousel-control.left {
left: -13px;
border-radius:0 17px 17px 0;
}
.carousel-control.right {
border-radius:17px 0 0 17px;
right: -13px;
}
.carousel-control:before {
content:"";
position: absolute;
width: 0;
height: 0;
border: 4px solid;
display: block;
bottom: 100%;
}
.carousel-control:after {
content:"";
position: absolute;
width: 24px;
height: 24px;
border-radius: 50%;
display: block;
top: 6px;
line-height: 24px;
color: rgb(227,222,229);
font-size: 18px;
font-family: 'icomoon';
text-align: center;
background: -*-linear-gradient(top,rgb(99,100,102),rgb(37,38,40));
}
.carousel-control:hover:after {
color: rgb(120,120,121);
}
.carousel-control.left:before {border-color:transparent rgb(97,96,100) rgb(97,96,100) transparent;left:0;}
.carousel-control.right:before {border-color:transparent transparent rgb(97,96,100) rgb(97,96,100);right: 0;}
.carousel-control.left:after {content:"v";right: 7px;}
.carousel-control.right:after {content:"u";left: 7px;}
.carousel-inner .prev {
display: block;
position: absolute;
left: -100%;
top: 0;
}
.carousel-inner .right.prev,
.carousel-inner .left.next {
left: 0;
}
.carousel-inner .active.right {
left: 100%;
}
.carousel-inner .next {
display: block;
position: absolute;
left: 100%;
top: 0;
}
.carousel-inner .active.left {
left: -100%;
}
.carousel-inner .description {
position: absolute;
left: 7px;
top: 9px;
background-color: rgba(0,0,0,0.4);
color: #fff;
padding: 10px;
font-size: 12px;
}
Javascript
(function(){
var carousel = document.getElementById("myCarousel"),
carlIndicators = $(carousel,".carousel-indicators"),
carlItems = $(carousel,".carousel-inner"),
leftControl = $(carousel,".left"),
rightControl = $(carousel,".right"),
isSliding = false;
var t = carlIndicators.querySelector("li");
EventUtil.addHandler(leftControl,"click",function(e) {
if (isSliding) {
return false;
} else {
isSliding = true;
var curIndicator = $(carlIndicators,".active");
var prevIndicatorIndex;
prevIndicatorIndex = curIndicator.previousElementSibling != null ?
getDataAttr(curIndicator.previousElementSibling,"reference"):
getDataAttr(curIndicator.parentNode.lastElementChild,"reference");
backTo(prevIndicatorIndex);
}
});
EventUtil.addHandler(rightControl,"click",function(e) {
if (isSliding) {
return false;
} else {
isSliding = true;
var curIndicator = $(carlIndicators,".active");
var nextIndicatorIndex;
nextIndicatorIndex = curIndicator.nextElementSibling != null ?
getDataAttr(curIndicator.nextElementSibling,"reference") :
getDataAttr(curIndicator.parentNode.firstElementChild,"reference");
forwardTo(nextIndicatorIndex);
}
});
EventUtil.addHandler(carlIndicators,"click",function(e) {
if (isSliding) {
return false;
} else {
var target = EventUtil.getTarget(e);
if (target.nodeName.toLowerCase()=="li") {
isSliding = true;
var curIndex = getDataAttr($(carlIndicators,".active"),"reference");
var targetIndex = getDataAttr(target,"reference");
var diff = targetIndex - curIndex;
switch(true) {
case diff < 0 :
backTo(targetIndex);
break;
case diff > 0 :
forwardTo(targetIndex);
break;
default :
isSliding = false;
}
}
}
});
function forwardTo(index) {
var curItem = $(carlItems,".active");
var curIndicator = $(carlIndicators,".active");
var targetItem = carlItems.children[index-1];
var targetIndicator = carlIndicators.children[index-1];
addClass(targetItem,"next");
setTimeout(function(){
addClass(curItem,"left");
addClass(targetItem,"left");
removeClass(curIndicator,"active");
addClass(targetIndicator,"active");
setTimeout(function(){
removeClass(curItem,"active");
removeClass(curItem,"left");
addClass(targetItem,"active");
removeClass(targetItem,"next");
removeClass(targetItem,"left");
isSliding = false;
},600);
},0);
}
function backTo(index) {
var curItem = $(carlItems,".active");
var curIndicator = $(carlIndicators,".active");
var targetItem = carlItems.children[index-1];
var targetIndicator = carlIndicators.children[index-1];
addClass(targetItem,"prev");
setTimeout(function(){
addClass(curItem,"right");
addClass(targetItem,"right");
removeClass(curIndicator,"active");
addClass(targetIndicator,"active");
setTimeout(function(){
removeClass(curItem,"active");
removeClass(curItem,"right");
addClass(targetItem,"active");
removeClass(targetItem,"prev");
removeClass(targetItem,"right");
isSliding = false;
},600);
},0);
}
})();

九、HTML5视频播放器
HTML
<div id="myVideo" style="width:464px;margin:0 auto;">
<div class="topbar clearfix">
<span class="title">video title</span>
<a href="" class="like">b<span class="counter">75</span></a>
<div class="share" data-icon="m">
<a>Share</a>
<div class="dropdown">
<ul class="wrapper ">
<li class="twitter">n</li>
<li class="facebook">p</li>
<li class="stumbleupon">o</li>
</ul>
</div>
</div>
</div>
<video width="464px" preload="auto" autoplay="">
<source src="http://vjs.zencdn.net/v/oceans.webm" type="video/webm" />
<p>Your browser does not support the video tag.</p>
</video>
<div class="control">
<button class="btn-play">t</button>
<div class="progress">
<div class="base-bar">
<div class="progress-bar"></div>
</div>
</div>
<div class="volum">
<a class="volume-decrease">r</a>
<div class="base-bar">
<div class="progress-bar"></div>
</div>
<a class="volume-increase">s</a>
</div>
</div>
</div>
CSS
#myVideo {
position: relative;
padding-top: 25px;
box-shadow: 3px 0 0 rgba(80,80,80,0.4),-3px 0 0 rgba(80,80,80,0.4),0 -3px 0 rgba(80,80,80,0.4),inset 0 -4px 0 rgba(80,80,80,0.4),0 -4px 0 rgba(80,80,80,0.4);
}
#myVideo .topbar {
height: 25px;
line-height: 25px;
color: rgb(31,30,30);
font-size: 12px;
width: 100%;
-moz-box-sizing:border-box;
box-sizing:border-box;
padding-left: 12px;
position: absolute;
top: 0;
left: 0;
border: 0 none;
border-top:1px solid rgb(191,188,192);
box-shadow:inset 1px 0 0 rgba(191,188,192,0.6),inset 0 1px 0 rgba(191,188,192,0.6),inset -1px 0 0 rgba(191,188,192,0.6);
background: -*-linear-gradient(top,rgb(170,166,170),rgb(81,77,83));
}
#myVideo .topbar .title {
text-shadow:0 1px 0 rgb(140,140,140);
float: left;
}
#myVideo .like {
color: rgb(31,30,30);
font-size: 12px;
line-height: 25px;
text-shadow:0 1px 0 rgb(140,140,140);
margin-left: 12px;
float: left;
}
#myVideo .like .counter {
text-shadow:0 1px 0 rgb(140,140,140);
}
#myVideo .share {
margin-right: 62px;
line-height: 25px;
text-decoration: none;
color: rgb(31,30,30);
cursor: pointer;
float: right;
position: relative;
text-shadow:0 1px 0 rgb(140,140,140);
}
#myVideo .share:before {
font-family: 'icomoon';
content: attr(data-icon);
display: block;
line-height: 25px;
position: absolute;
left: 100%;
margin-left: 7px;
top: 0;
}
#myVideo .share:hover .dropdown {display: block;}
#myVideo .share .dropdown {
position: absolute;
top: 100%;
left: 50%;
margin-top: 10px;
display: none;
}
#myVideo .share .dropdown .wrapper {
list-style: none;
padding:0;
text-align: center;
margin: 0;
position: relative;
left: -50%;
height: 33px;
min-width: 100px;
border-radius: 4px;
box-shadow: inset 0 1px 0 rgba(240,240,240,0.5), inset 1px 0 0 rgba(240,240,240,0.45),inset -1px 0 0 rgba(240,240,240,0.45);
background:rgba(240,240,240,0.4);
white-space:nowrap;
}
#myVideo .share .dropdown .wrapper:before {
content: "";
width: 0;
height: 0;
display: block;
position: absolute;
bottom: 100%;
left: 50%;
margin-left: -6px;
border-style: solid;
border-width: 8px 6px;
border-color: transparent transparent rgba(240,240,240,0.4) transparent;
}
#myVideo .share .dropdown .wrapper:after {
content: "";
display: block;
position: absolute;
width: 100%;
height: 10px;
left: 0;
bottom: 100%;
}
#myVideo .share .dropdown .wrapper li {
font-family: 'icomoon';
height: 33px;
width: 33px;
float: left;
line-height: 33px;
font-size: 16px;
color: rgb(203,199,205);
text-shadow:0 1px 0 rgb(30,30,30);
}
#myVideo .share .dropdown .wrapper li:hover {
color: rgb(241,196,15);
}
#myVideo .control {
width: 450px;
height: 38px;
position: absolute;
left: 7px;
right: 7px;
bottom: 8px;
box-shadow: inset 0 1px 3px rgb(110,108,100);
background: -*-linear-gradient(top,rgba(100,97,90,0.6),rgba(23,22,19,0.6));
border-radius: 4px;
}
#myVideo .control .btn-play {
border:none;
width: 34px;
height: 100%;
font-family: 'icomoon';
background: transparent;
color: rgb(210,210,210);
position: relative;
float: left;
cursor: pointer;
}
#myVideo .control .btn-play:hover {color: rgb(140,140,140);}
#myVideo .control .btn-play:before,
#myVideo .control .progress:before {
content: "";
display: block;
position: absolute;
right: -1px;
top: 0;
width: 1px;
height: 100%;
background: -*-linear-gradient(top,rgba(120,118,115,0.6),rgba(43,38,36,0.6) 50%,rgba(43,38,36,0.6) 50%,rgba(23,22,19,0));
}
#myVideo .control .btn-play:after,
#myVideo .control .progress:after {
content: "";
display: block;
position: absolute;
right: -2px;
top: 0;
width: 1px;
height: 100%;
background: -*-linear-gradient(top,rgba(78,76,73,0.6),rgba(23,22,19,0.6) 50%,rgba(23,22,19,0.6) 50%,rgba(23,22,19,0));
}
#myVideo .control .progress {
float: left;
width: 283px;
height: 100%;
margin-left: 2px;
position: relative;
}
#myVideo .control .volum {
float: left;
width: 128px;
height: 100%;
margin-left: 2px;
position: relative;
}
#myVideo .base-bar {
height: 8px;
margin: 16px auto;
padding: 1px 2px;
border-top: 1px solid rgb(21,20,22);
border-bottom: none;
border-radius: 4px;
box-shadow: 0 1px 0 rgba(140,140,140,0.4),inset 0 1px 0 rgb(31,29,32);
position: relative;
background: rgb(36,34,37);
-moz-box-sizing:border-box;
box-sizing:border-box;
cursor: pointer;
}
#myVideo .progress .base-bar {width: 270px;}
#myVideo .volum .base-bar {width: 68px;float: left;}
#myVideo .progress-bar {
height: 100%;
width: 0;
border-radius: 3px 0 0 3px;
background: -*-linear-gradient(45deg,rgb(122,161,41) 25%,rgb(95,126,32) 25%,rgb(95,126,32) 75%,rgb(122,161,41) 75%,rgb(122,161,41)) repeat-x left top/8px 100%;
}
#myVideo .volum .progress-bar {width: 100%;}
#myVideo .control .volum a {
font-family: 'icomoon';
line-height: 38px;
float: left;
height: 38px;
color: rgb(210,210,210);
margin: 0 5px;
vertical-align: middle;
cursor: pointer;
}
#myVideo .control .volum a:hover {color: rgb(140,140,140);}
Javascript
(function(){
var video = $("#myVideo video"),
video_controls = $("#myVideo .control"),
progress_base_bar = $(video_controls,".progress .base-bar"),
progress_bar = $(progress_base_bar,".progress-bar"),
volum_base_bar = $(video_controls,".volum .base-bar"),
volum_bar = $(volum_base_bar,".progress-bar"),
btn_play = $("#myVideo .btn-play");
EventUtil.addHandler(btn_play,"click",play);
EventUtil.addHandler(progress_base_bar,"click",seeking);
EventUtil.addHandler(video,"timeupdate",function(){
var duration = this.duration;
var curTime = this.currentTime;
var percentage = curTime/duration;
progress_bar.style.width = (progress_base_bar.offsetWidth-4)*percentage + "px";
});
EventUtil.addHandler(volum_base_bar,"click",function(e){
var posX = e.clientX,
targetLeft = getPosition(this).left,
posLeft = posX - targetLeft - 2;
posLeft <= 0 && (posLeft = 0);
var percentage = posLeft/(this.offsetWidth-4);
percentage >= 1 && (percentage = 1);
changeVolumTo(percentage);
});
EventUtil.addHandler($(video_controls,".volume-decrease"),"click",function(){
var volume = video.volume - 0.1;
volume < 0 && (volume = 0);
changeVolumTo(volume);
})
EventUtil.addHandler($(video_controls,".volume-increase"),"click",function(){
var volume = video.volume + 0.1;
volume > 1 && (volume = 1);
changeVolumTo(volume);
})
EventUtil.addHandler(video,"play",function(){
btn_play.innerHTML = "w";
});
EventUtil.addHandler(video,"pause",function(){
btn_play.innerHTML = "t";
});
function seeking(e) {
var posX = e.clientX,
targetLeft = getPosition(this).left,
posLeft = posX - targetLeft - 2;
posLeft <= 0 && (posLeft = 0);
var percentage = posLeft/(this.offsetWidth-4);
percentage >= 1 && (percentage = 1);
seekTo(percentage);
}
function seekTo(percentage) {
video.currentTime = video.duration * percentage;
progress_bar.style.width = (progress_base_bar.offsetWidth-4)*percentage + "px";
}
function changeVolumTo(percentage) {
video.volume = percentage;
volum_bar.style.width = (volum_base_bar.offsetWidth-4)*percentage + "px";
}
function play(e) {
if (video.paused) {
video.play();
} else {
video.pause();
}
}
})()

特别声明:DarkUI整个设计图并不是白牙设计,而是国外友要提供,如果您私自将上面效果应用到商业中造成的侵仅,本站概不负责,此处提供的代码仅供前端有好者学习所用。谢谢!
如需转载,请遵守W3cplus版权声明,烦请注明出处:https://www.fedev.cn/demo/787.html