CSS3 로 페이스북같은 사이드바 메뉴 만들어보기 - #2 적용예

2013. 7. 31. 13:26프로그래밍/HTML5 + CSS3

이리저리 적용한 예시

 중요 CSS 부분은

 #main_wrapper
            {
                overflow:hidden;
                width:100%;
                height:100%;
            }
 
            .navigator {
                  position: absolute;
                  top: 0;
                  width: 0;
                  height: 100%;
                  background: #3B3B3B;
                  overflow-y: hidden;  
                  float:left;
              }
 
 
              // 아래 이하 열기 눌렀을 경우 발생
             #navigator:target {
                  width: 220px;             
                   overflow:hidden;
                }
 
                .close-menu {
                  display: none;
                }
 
                .page-wrap {
                  position: relative;
                  width:100%;
                      
                }
 
            #navigator:target + .page-wrap {
                     
                     
                    left:220px;
                    height:300px;
                     
 
                     .open-menu {
                         display: none;
                      }
                      .close-menu {
                         display: block;
                      }
                      .main-header {           
                        height:0px;
                      }
                     
                }

CSS

@import url(http://fonts.googleapis.com/earlyaccess/nanumgothic.css);

			* {
				margin:0px;
				padding:0px;
				font-family: 'Nanum Gothic', sans-serif;
			}

			a {
				text-decoration: none;
			}

			ul,
			ul ul {
				margin: 0;
				padding: 0;
				list-style: none;
			}

			#wrapper {
				width: 220px;
				overflow:hidden;
				font-size: 0.8125em;
			}

			.menu {
				width: auto;
				height: auto;
				-webkit-box-shadow: 0px 1px 3px 0px rgba(0,0,0,.73), 0px 0px 18px 0px rgba(0,0,0,.13);
				-moz-box-shadow: 0px 1px 3px 0px rgba(0,0,0,.73), 0px 0px 18px 0px rgba(0,0,0,.13);
				box-shadow: 0px 1px 3px 0px rgba(0,0,0,.73), 0px 0px 18px 0px rgba(0,0,0,.13);
			}

			.menu > li > a {
				background-color: #616975;
				background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(114, 122, 134)),to(rgb(80, 88, 100)));
				background-image: -webkit-linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));
				background-image: -moz-linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));
				background-image: -o-linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));
				background-image: -ms-linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));
				background-image: linear-gradient(top, rgb(114, 122, 134), rgb(80, 88, 100));
				filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#727a86', EndColorStr='#505864');
				border-bottom: 1px solid #33373d;
				-webkit-box-shadow: inset 0px 1px 0px 0px #878e98;
				-moz-box-shadow: inset 0px 1px 0px 0px #878e98;
				box-shadow: inset 0px 1px 0px 0px #878e98;
				width: 100%;
				height: 2.75em;
				line-height: 2.75em;
				text-indent: 2.75em;
				display: block;
				position: relative;
				//font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
				font-weight: 600;
				color: #fff;
				text-shadow: 0px 1px 0px rgba(0,0,0,.5);
			}

			.menu ul li a {
				background: #fff;
				border-bottom: 1px solid #efeff0;
				width: 100%;
				height: 2.75em;
				line-height: 2.75em;
				text-indent: 2.75em;
				display: block;
				position: relative;
			   // font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
				font-size: 0.923em;
				font-weight: 400;
				color: #878d95;
			}
			.menu ul li:last-child a {
				border-bottom: 1px solid #33373d;
			}

			.menu > li > a:hover,
			.menu > li > a.active {
				background-color: #35afe3;
				background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(69, 199, 235)),to(rgb(38, 152, 219)));
				background-image: -webkit-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				background-image: -moz-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				background-image: -o-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				background-image: -ms-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				background-image: linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#45c7eb', EndColorStr='#2698db');
				border-bottom: 1px solid #103c56;
				-webkit-box-shadow: inset 0px 1px 0px 0px #6ad2ef;
				-moz-box-shadow: inset 0px 1px 0px 0px #6ad2ef;
				box-shadow: inset 0px 1px 0px 0px #6ad2ef;
			}
			.menu > li > a.active {
				border-bottom: 1px solid #1a638f;
			}


			.menu > li > a:before {
				content: '';
				background-image: url(../images/sprite.png);
				background-repeat: no-repeat;
				font-size: 36px;
				height: 1em;
				width: 1em;
				position: absolute;
				left: 0;
				top: 50%;
				margin: -.5em 0 0 0;
			}

						
			.item1 > a:before {
				background-position: 0 0;
			}
			.item2 > a:before {
				background-position: -38px 0;
			}
			.item3 > a:before {
				background-position: 0 -38px;
			}
			.item4 > a:before {
				background-position: -38px -38px;
			}
			.item5 > a:before {
				background-position: -76px 0;
			}


			.menu > li > a span {
				font-size: 0.857em;
				display: inline-block;
				position: absolute;
				right: 1em;
				top: 50%;
				background: #48515c;
				line-height: 1em;
				height: 1em;
				padding: .4em .6em;
				margin: -.8em 0 0 0;
				color: #fff;
				text-indent: 0;
				text-align: center;
				-webkit-border-radius: .769em;
				-moz-border-radius: .769em;
				border-radius: .769em;
				-webkit-box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, .26), 0px 1px 0px 0px rgba(255, 255, 255, .15);
				-moz-box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, .26), 0px 1px 0px 0px rgba(255, 255, 255, .15);
				box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, .26), 0px 1px 0px 0px rgba(255, 255, 255, .15);
				text-shadow: 0px 1px 0px rgba(0,0,0,.5);
				font-weight: 500;
			}
			.menu > li > a:hover span, .menu > li a.active span {
				background: #2173a1;
			}


			.menu ul > li > a span {
				font-size: 0.857em;
				display: inline-block;
				position: absolute;
				right: 1em;
				top: 50%; /
				background: #fff;
				border: 1px solid #d0d0d3;
				line-height: 1em;
				height: 1em;
				padding: .4em .7em;
				margin: -.9em 0 0 0;
				color: #878d95;
				text-indent: 0;
				text-align: center;
				-webkit-border-radius: .769em;
				-moz-border-radius: 769em;
				border-radius: 769em;
				text-shadow: 0px 0px 0px rgba(255,255,255,.01));
			}
			.menu > li > ul li a:before {
				content: '▶';
				font-size: 8px;
				color: #bcbcbf;
				position: absolute;
				width: 1em;
				height: 1em;
				top: 0;
				left: -2.7em;
			}
			.menu > li > ul li:hover a,
			.menu > li > ul li:hover a span,
			.menu > li > ul li:hover a:before {
				color: #32373D;
			}

			.member_info
			{
				height:3.2em;
				line-height: 3.2em;
				text-indent: 1.75em;
				color:#000;	
				background: #e2e2e2;
				text-shadow: #fff 0px -1px 1px;	
				font-weight:bold;
			}

			.member_info > span
			{

				background: #fff;
				border: 1px solid #d0d0d3;
				line-height: 1em;
				height: 1em;
				padding: .4em .7em;
				margin: -.9em 0 0 0;
				color: #878d95;
				text-indent: 0;
			   
				-webkit-border-radius: .769em;
				-moz-border-radius: 769em;
				border-radius: 769em;
				text-shadow: 0px 0px 0px rgba(255,255,255,.01));
			}

			.member_info > span:hover
			{
			   background: #eee;
			}

			.copyright
			{
			   padding: 1.4em .7em;
				
				border:0px;
				color:#fff;
				right: 1em;
				top: 50%; /
				line-height: 3.2em;
				text-indent: 0.75em;
				

				font:9pt tahoma;
				font-weight:bold;
			}

			.open-menu
			{
				color:#fff;
			}


			.main-header
			{

				 background-color: #35afe3;
				background-image: -webkit-gradient(linear, left top, left bottom, from(rgb(69, 199, 235)),to(rgb(38, 152, 219)));
				background-image: -webkit-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				background-image: -moz-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				background-image: -o-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				background-image: -ms-linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				background-image: linear-gradient(top, rgb(69, 199, 235), rgb(38, 152, 219));
				filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#45c7eb', EndColorStr='#2698db');
				border-bottom: 1px solid #103c56;
				-webkit-box-shadow: inset 0px 1px 0px 0px #6ad2ef;
				-moz-box-shadow: inset 0px 1px 0px 0px #6ad2ef;
				box-shadow: inset 0px 1px 0px 0px #6ad2ef;
				line-height: 2.6em;
				text-indent: 0.75em;
			}

			.main-header > span
			{
				text-align:center;
			}

			#main_wrapper
			{
				overflow:hidden;
				width:100%;
				height:100%;
			}

			.navigator {
				  position: absolute;
				  top: 0;
				  width: 0;
				  height: 100%;
				  background: #3B3B3B;
				  overflow-y: hidden;	
				  float:left;
			  }


			 
			 #navigator:target {
				  width: 220px;				 
				   overflow:hidden;
				}

				.close-menu {
				  display: none;
				}

				.page-wrap {
				  position: relative;
				  width:100%;
					 
				}

			#navigator:target + .page-wrap {
					
					
					left:220px;	
					height:300px;
					

					 .open-menu {
						 display: none; 
					  }
					  .close-menu {
						 display: block;
					  }
					  .main-header {			
						height:0px;
					  }	
					
				}
Body 부분
YTN Sys Mobile
asdfsdfdfsfd
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3
1
2
3http://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigatorhttp://localhost/ytn/#navigator