需要文檔版源碼來我的前端群581549454,已上傳到群文件
源代碼
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>仿MacOS蘋果系統底部圖標菜單動畫代碼</title>
<style>
html, body {
padding: 0px;
margin: 0px;
background: #222;
font-family: 'Ubuntu', sans-serif;
color: #FFF;
height: 100%;
}
body {
background: url("img/bg.jpg");
background-size: cover;
background-position: center;
}
.dockposition {
position: absolute;
height: 100px;
width: 100%;
bottom: 0px;
}
.dockposition .content {
width: 680px;
margin: auto;
height: 100%;
background: rgba(255, 255, 255, 0.5);
border-radius: 4px 4px 0px 0px;
position: relative;
}
.dockposition .content .back {
position: absolute;
height: 100%;
width: 100%;
left: 0px;
overflow: hidden;
}
.dockposition .content .back:after {
content: '';
background: rgba(255, 255, 255, 0.25);
width: 100%;
height: 100%;
top: 0px;
left: 0px;
position: absolute;
-webkit-filter: blur(10px);
filter: blur(10px);
}
.dockposition .icons {
height: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
}
.dockposition .icons > .icon {
margin: auto;
display: inline-block;
box-sizing: border-box;
width: 70px;
height: 70px;
border-radius: 10px;
background: rgba(255, 255, 255, 0.75);
border: 0px solid rgba(0, 0, 0, 0.75);
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.25);
text-align: center;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
position: relative;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-transition: all 0.5s;
transition: all 0.5s;
-webkit-transform-style: flat;
transform-style: flat;
outline: none;
cursor: pointer;
}
.dockposition .icons > .icon:focus:not(#downloads) {
background: rgba(255, 255, 255, 0.5);
-webkit-animation: bounce 1s;
animation: bounce 1s;
}
.dockposition .icons > .icon i {
margin: auto;
color: rgba(0, 0, 0, 0.75);
font-size: 36px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.dockposition .icons > .icon .title {
z-index: 2;
position: absolute;
top: -110%;
left: 50%;
-webkit-transform: translateX(-50%);
transform: translateX(-50%);
background: rgba(0, 0, 0, 0.75);
padding: 10px 15px;
border-radius: 4px;
opacity: 0;
-webkit-transition: all 0.25s;
transition: all 0.25s;
}
.dockposition .icons > .icon .title:after {
content: '';
position: absolute;
border: 10px solid transparent;
border-top: 10px solid rgba(0, 0, 0, 0.75);
bottom: -20px;
left: 50%;
-webkit-transform: translateX(-50%) translateY(0px);
transform: translateX(-50%) translateY(0px);
}
.dockposition .icons > .icon:hover .title {
opacity: 1;
}
.dockposition .icons > .icon#downloads {
margin-left: 40px;
}
.dockposition .icons > .icon#downloads:before {
content: '';
height: 100%;
position: absolute;
left: -26px;
border-left: 1px solid rgba(0, 0, 0, 0.5);
}
.dockposition .icons > .icon#downloads:after {
position: absolute;
content: '6';
width: 30px;
height: 30px;
font-size: 14px;
background: #f22;
opacity: 0.8;
box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.25);
border-radius: 100%;
line-height: 30px;
left: 70%;
top: -6px;
}
.dockposition .icons > .icon#downloads:focus, .dockposition .icons > .icon#downloads.demo {
pointer-events: none;
}
.dockposition .icons > .icon#downloads:focus .download, .dockposition .icons > .icon#downloads.demo .download {
opacity: 1;
}
.dockposition .icons > .icon#downloads:focus .download:nth-of-type(1), .dockposition .icons > .icon#downloads.demo .download:nth-of-type(1) {
-webkit-transform: translateY(0%) rotateZ(0deg) translateX(0px);
transform: translateY(0%) rotateZ(0deg) translateX(0px);
}
.dockposition .icons > .icon#downloads:focus .download:nth-of-type(2), .dockposition .icons > .icon#downloads.demo .download:nth-of-type(2) {
-webkit-transform: translateY(-105%) rotateZ(2deg) translateX(2.5px);
transform: translateY(-105%) rotateZ(2deg) translateX(2.5px);
}
.dockposition .icons > .icon#downloads:focus .download:nth-of-type(3), .dockposition .icons > .icon#downloads.demo .download:nth-of-type(3) {
-webkit-transform: translateY(-210%) rotateZ(4deg) translateX(5px);
transform: translateY(-210%) rotateZ(4deg) translateX(5px);
}
.dockposition .icons > .icon#downloads:focus .download:nth-of-type(4), .dockposition .icons > .icon#downloads.demo .download:nth-of-type(4) {
-webkit-transform: translateY(-315%) rotateZ(6deg) translateX(7.5px);
transform: translateY(-315%) rotateZ(6deg) translateX(7.5px);
}
.dockposition .icons > .icon#downloads:focus .download:nth-of-type(5), .dockposition .icons > .icon#downloads.demo .download:nth-of-type(5) {
-webkit-transform: translateY(-420%) rotateZ(8deg) translateX(10px);
transform: translateY(-420%) rotateZ(8deg) translateX(10px);
}
.dockposition .icons > .icon#downloads:focus .download:nth-of-type(6), .dockposition .icons > .icon#downloads.demo .download:nth-of-type(6) {
-webkit-transform: translateY(-525%) rotateZ(10deg) translateX(12.5px);
transform: translateY(-525%) rotateZ(10deg) translateX(12.5px);
}
.dockposition .icons > .icon#downloads:focus .download:nth-of-type(7), .dockposition .icons > .icon#downloads.demo .download:nth-of-type(7) {
-webkit-transform: translateY(-630%) rotateZ(12deg) translateX(15px);
transform: translateY(-630%) rotateZ(12deg) translateX(15px);
}
.dockposition .icons > .icon#downloads:focus .open, .dockposition .icons > .icon#downloads.demo .open {
opacity: 0;
}
.dockposition .icons > .icon#downloads:focus .close, .dockposition .icons > .icon#downloads.demo .close {
opacity: 1;
}
.dockposition .icons > .icon#downloads .open, .dockposition .icons > .icon#downloads .close {
position: absolute;
opacity: 1;
-webkit-transition: all 0.5s;
transition: all 0.5s;
top: 50%;
left: 50%;
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
opacity: 1;
}
.dockposition .icons > .icon#downloads .close {
opacity: 0;
}
.dockposition .icons > .icon#downloads .download {
position: absolute;
top: -120%;
right: 8%;
width: 350px;
opacity: 0;
-webkit-transition: all 0.5s;
transition: all 0.5s;
-webkit-transform-origin: 50% 100%;
transform-origin: 50% 100%;
z-index: 1;
text-align: right;
}
.dockposition .icons > .icon#downloads .download .text {
-webkit-box-flex: 1;
-ms-flex: 1;
flex: 1;
display: inline-block;
text-align: right;
margin: auto;
padding: 5px 10px;
background: rgba(0, 0, 0, 0.75);
border-radius: 4px;
vertical-align: top;
margin-top: 14px;
}
.dockposition .icons > .icon#downloads .download .icon {
display: inline-block;
width: 60px;
text-align: right;
vertical-align: top;
}
.dockposition .icons > .icon#downloads .download .icon i {
color: #FFF;
font-size: 60px;
}
@-webkit-keyframes bounce {
0% {
-webkit-transform: translateY(0px) translateX(0.1px);
transform: translateY(0px) translateX(0.1px);
}
25% {
-webkit-transform: translateY(-40px) translateX(0.1px);
transform: translateY(-40px) translateX(0.1px);
}
50% {
-webkit-transform: translateY(0px) translateX(0.1px);
transform: translateY(0px) translateX(0.1px);
}
75% {
-webkit-transform: translateY(-20px) translateX(0.1px);
transform: translateY(-20px) translateX(0.1px);
}
100% {
-webkit-transform: translateY(0px) translateX(0.1px);
transform: translateY(0px) translateX(0.1px);
}
}
@keyframes bounce {
0% {
-webkit-transform: translateY(0px) translateX(0.1px);
transform: translateY(0px) translateX(0.1px);
}
25% {
-webkit-transform: translateY(-40px) translateX(0.1px);
transform: translateY(-40px) translateX(0.1px);
}
50% {
-webkit-transform: translateY(0px) translateX(0.1px);
transform: translateY(0px) translateX(0.1px);
}
75% {
-webkit-transform: translateY(-20px) translateX(0.1px);
transform: translateY(-20px) translateX(0.1px);
}
100% {
-webkit-transform: translateY(0px) translateX(0.1px);
transform: translateY(0px) translateX(0.1px);
}
}
</style>
</head>
<body><script src="/demos/googlegg.js"></script>
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Ubuntu">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<div class="dockposition">
<div class="content">
<div class="back"></div>
<div class="icons">
<div class="icon" tabindex="1"><i class="material-icons">apps</i>
<div class="title">Apps</div>
</div>
<div class="icon" tabindex="1"><i class="material-icons">folder_open</i>
<div class="title">Finder</div>
</div>
<div class="icon" tabindex="1"><i class="material-icons">settings_brightness</i>
<div class="title">Brightness</div>
</div>
<div class="icon" tabindex="1"><i class="material-icons">settings_voice</i>
<div class="title">Voice</div>
</div>
<div class="icon" tabindex="1"><i class="material-icons">settings</i>
<div class="title">Settings</div>
</div>
<div class="icon" tabindex="1"><i class="material-icons">tune</i>
<div class="title">Sliders</div>
</div>
<div class="icon" id="downloads" tabindex="1"><i class="material-icons open">open_in_browser</i><i class="material-icons close">system_update_alt</i>
<div class="title">Downloads</div>
<div class="downloads">
<div class="download">
<div class="text">Sublime Text Build 3126.dmg</div>
<div class="icon"><i class="material-icons">description</i></div>
</div>
<div class="download">
<div class="text">googlechrome.dmg</div>
<div class="icon"><i class="material-icons">description</i></div>
</div>
<div class="download">
<div class="text">mode-v7.90-x64.dmg</div>
<div class="icon"><i class="material-icons">description</i></div>
</div>
<div class="download">
<div class="text">VirtualBox-5.1.22-115126.zip</div>
<div class="icon"><i class="material-icons">unarchive</i></div>
</div>
<div class="download">
<div class="text">snapshot-03-31-2017-36MP.jpg</div>
<div class="icon"><i class="material-icons">insert_photo</i></div>
</div>
<div class="download">
<div class="text">Open in Finder</div>
<div class="icon"><i class="material-icons">open_in_new</i></div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
//For the demo only
setTimeout(function() {
document.getElementById('downloads').classList.add('demo')
}, 1000)
document.body.addEventListener('click', function() {
document.getElementById('downloads').classList.remove('demo')
});
</script>
</body>
</html>