📚HTML
<! DOCTYPE html >
< html lang = " en" >
< head> < meta charset = " UTF-8" > < meta name = " viewport" content = " width=device-width, initial-scale=1.0" > < title> 一个登录注册界面</ title> < link rel = " stylesheet" href = " ./style.css" >
</ head>
< body> < div class = " container" > < div class = " login-box" > < div class = " apple-btn login-apple" > < li class = " red-btn" > </ li> < li class = " yellow-btn" > </ li> < li class = " green-btn" > </ li> </ div> < div class = " title" > Login</ div> < div class = " input" > < input type = " text" id = " login-user" placeholder = " Input your username" > </ div> < div class = " input" > < input type = " password" id = " login-password" placeholder = " Input your password" > </ div> < div class = " btn login-btn" > < span> 登录</ span> </ div> < div class = " change-box login-change" > < div class = " change-btn toSign" > < span> 去注册</ span> </ div> </ div> </ div> < div class = " sign-box" > < div class = " apple-btn sign-apple" > < li class = " red-btn" > </ li> < li class = " yellow-btn" > </ li> < li class = " green-btn" > </ li> </ div> < div class = " title" > Sign</ div> < div class = " input" > < input type = " text" id = " sign-user" placeholder = " Have A Good Name?" > </ div> < div class = " input" > < input type = " password" id = " sign-password" placeholder = " Keep Secret" > </ div> < div class = " btn sign-btn" > < span> 注册</ span> </ div> < div class = " change-box sign-change" > < div class = " change-btn toLogin" > < span> 去登陆</ span> </ div> </ div> </ div> </ div> < script src = " ./script.js" > </ script>
</ body>
</ html>
📚CSS
* { padding : 0px; margin : 0px;
} html, body { height : 100%; width : 100%; background-image : linear-gradient ( 120deg, #A59ACA, #F7CDBC) ; overflow : hidden;
} .container { position : absolute; height : 350px; width : 600px; background-color : rgba ( 255, 255, 255, .9) ; top : 50%; left : 50%; transform : translate ( -50%, -30%) ; border-radius : 10px; box-shadow : 0px 0px 10px rgba ( 17, 39, 59, 0.8) ; border : 1px solid rgba ( 17, 39, 59, 1) ; overflow : hidden; box-sizing : border-box; opacity : 0; transition : 1s;
}
.container-show { transform : translate ( -50%, -50%) ; opacity : 1;
}
.title { margin-top : 10px; position : relative; height : 40px; width : 100%; font-size : 30px; display : flex; justify-content : center; align-items : center; text-transform : uppercase; font-weight : 500; letter-spacing : 3px; transition : .4s;
}
.input { width : 400px; height : 45px; position : relative; margin : 40px auto;
}
input { position : relative; width : 100%; height : 100%; border : none; outline : none; padding-left : 15px; font-size : 16px; background-color : rgba ( 255, 255, 255, 0.4) ; border-radius : 45px; transition : .4s;
}
.btn { height : 50px; width : 160px; position : relative; margin : -10px auto; background-color : rgba ( 0, 0, 0, 0.1) ; border-radius : 20px; color : rgba ( 255, 255, 255, .4) ; display : flex; justify-content : center; align-items : center; cursor : pointer; transition : .4s;
}
.change-box { position : absolute; height : 0px; width : 100%; clip-path : polygon ( 100% 50%, 50% 100%, 100% 100%) ; bottom : 0px; transition : .4s;
}
.change-btn { position : absolute; bottom : 30px; right : 40px; font-size : 20px; display : none; font-weight : 500;
}
.change-btn:hover { text-shadow : 0px 0px 3px rgba ( 200, 200, 200, .8) ; cursor : pointer;
}
.container:hover .title { font-size : 20px;
}
.container:hover input { transform : translate ( 0, -30%) ;
}
.container:hover .btn { height : 30px; width : 90px; transform : translate ( 0, -30%) ; font-size : 12px;
}
.container:hover .change-box { height : 200px;
}
.container:hover .change-btn { display : block;
}
.login-box { position : absolute; height : 100%; width : 100%; background-color : rgba ( 17, 39, 59, 0.8) ; transition : .4s; z-index : 1; transform-origin : 0 100%;
}
.login-box .title { color : white; text-shadow : 0px 0px 7px rgba ( 255, 255, 255, .9) ;
}
.login-box input:focus { box-shadow : 0 0 10px rgba ( 1, 1, 1, .8) ;
}
.login-box input { caret-color : white; color : rgba ( 255, 255, 255, 0.8) ;
}
.login-btn:hover { color : white; background-color : #57606f; box-shadow : rgba ( 0, 0, 0, 0.1) ; text-shadow : 0px 0px 2px rgba ( 0, 0, 0, 0.1) ;
}
.login-change { background-color : rgba ( 255, 255, 255, .8) ;
}
.sign-box { position : absolute; height : 100%; width : 100%; background-color : rgba ( 255, 255, 255, .8) ; transform-origin : 0 100%; transform : rotate ( 90deg) ; transition : .4s; z-index : 1;
}
.sign-box .title { text-shadow : 0 0 10px rgba ( 200, 200, 200, .8) ; font-weight : 500;
}
.sign-box input { box-shadow : 0 0 3px black;
}
.sign-box .btn { color : black; background-color : #e1dddf; transition : .5s;
}
.sign-box .btn:hover { color : white; background-color : #4781C3;
}
.sign-change { background-color : rgba ( 17, 39, 59, 0.8) ;
}
.toLogin { color : white;
}
.apple-btn { position : absolute; height : 15px; width : 65px; top : 3px; }
.apple-btn li { list-style : none; position : relative; height : 15px; width : 15px; border-radius : 15px; opacity : 0;
} .login-apple li { left : 5px; float : left;
} .sign-apple li { right : 5px; float : right;
} .sign-apple { right : 5px;
} li:nth-child(2) { margin : 0px 2px
} .red-btn { background-color : #F03752; transition : .3s; transform : translate ( 0, -50%) ;
} .yellow-btn { background-color : #F3993A; transition : .6s; transform : translate ( 0, -50%) ;
} .green-btn { background-color : #108B96; transition : .9s; transform : translate ( 0, -50%) ;
} .container:hover .red-btn { opacity : 1; transform : translate ( 0, 0) ;
}
.container:hover .yellow-btn { opacity : 1; transform : translate ( 0, 0) ;
}
.container:hover .green-btn { opacity : 1; transform : translate ( 0, 0) ;
}
.animate_login { transform : rotate ( -90deg) ;
}
.animate_sign { transform : rotate ( 0deg) !important ;
}
📚JS
const getSelector = ele => { return typeof ele === "string" ? document. querySelector ( ele) : "" ;
}
const containerShow = ( ) => { var show = getSelector ( ".container" ) show. className += " container-show"
} window. onload = containerShow;
( ( window, document ) => { let toSignBtn = getSelector ( ".toSign" ) , toLoginBtn = getSelector ( ".toLogin" ) loginBox = getSelector ( ".login-box" ) , signBox = getSelector ( ".sign-box" ) ; toSignBtn. onclick = ( ) => { loginBox. className += ' animate_login' ; signBox. className += ' animate_sign' ; } toLoginBtn. onclick = ( ) => { loginBox. classList. remove ( "animate_login" ) ; signBox. classList. remove ( "animate_sign" ) ; } } ) ( window, document) ;