반응형

요소간에 여백을 줘야 하는 경우 margin, padding을 사용하여 공간을 만들 수 있다.

margin은 자신을 기준으로 외부를 padding은 자신을 기준으로 내부의 여백을 만든다.

 

 

 

사용법

<style>
div{
  margin-top: 20px;
  margin-right: 10px;
  margin-bottom: 15px;
  margin-left: 10px;
}
</style>
<div></div>

 

위 사용법처럼 "-위치별"로 지정하여 줘도 되지만 저렇게 모든 위치를 설정해야 할 경우 한줄로 표현이 가능하다.

 


한줄로 표현하기

<style>
div{
  margin: 20px 10px 15px 10px;
}
</style>
<div></div>

위에서 표현한 방식과 동일한 결과를 얻을 수 있다.

이것을 통해 순서대로 위 오른쪽 아래 왼쪽 방향으로 값이 처리되는 걸 알 수 있다.

시계방향으로 돌아간다고 숙지하면 좋을 것 같다.

 


margin 값이 3개인 경우

<style>
div{
  margin: 20px 10px 15px;
}
</style>
<div></div>

이번엔 4개에서 3개짜리 표현방법이다.

똑같이 시계방향으로 읽으면 된다.

상단 20px margin

우측 20px margin

하단 20px margin

좌측은 여백값이 없는 상태이다.

 


margin 값이 2개인 경우

<style>
div{
  margin: 20px 10px;
}
</style>
<div></div>

이번엔 시계방향처럼 읽지만 상단 하단이 동일값, 좌측 우측이 동일값으로 표현된다.

상단 20px margin

우측 10px margin

하단 20px margin

좌측 10px margin

 


margin 값이 1개만 있는 경우

<style>
div{
  margin: 10px;
}
</style>
<div></div>

모든 영역이 동일한 사이즈로 여백이 지정된다.

상단, 우측, 하단, 좌측 10px margin

padding또한 margin과 사용법은 동일하다.

<style>
div{
  padding: 20px 10px 15px 10px;
}
</style>
<div></div>
반응형
반응형

position 속성을 활용한 레이아웃 나누기

 

layout.html

<!DOCTYPE html>
<html>
<head>
  <link rel="stylesheet" type="text/css" href="layout.css">
</head>
<body>

<div class="container">
  <!-- TOP -->
  <div class="top">
    <span>TOP (1000 x 80) <br/> #FF5E00;</span>
  </div>

  <!-- MIDDLE -->
  <div class="middle">

    <div class="middle-left"> <span>LEFT (600 x 500) <br/> #00D8FF;</span> </div>

    <div class="middle-right">

      <div class="middle-right-1"> <span>RIGHT1 (380 x 150) <br/> #FF00DD;</span> </div>
      <div class="middle-right-2"> <span>RIGHT2 (380 x 150) <br/> #FFE400;</span> </div>
      <div class="middle-right-3"> <span>RIGHT3 (380 x 170) <br/> #99E000;</span> </div>

    </div>

  </div>

  <div class="bottom"> <span>BOTTOM (1000 x 100) <br/> #5D5D5D;</span> </div>

</div>

</body>
</html>

 

layout.css

*{
  margin: 0px;
  padding: 0px;
}
.container{
  width: 1000px;
  margin: 0 auto;
}
.container div{
  text-align: center;
  display: table;
}
.container div span{
  display: table-cell;
  vertical-align: middle;
}
.top{
  margin-top: 20px;
  outline: 1px solid #9F9F9F;
  width: 1000px;
  height: 80px;
  display: table;
  background-color: #FF5E00;
}
.middle{
  margin-top: 20px;
  width: 1000px;
  height: 500px;
  position: relative;
}
.middle-left{
  outline: 1px solid #9F9F9F;
  position: absolute;
  top: 0px;
  width: 600px;
  height: 500px;
  background-color: #00D8FF;
}
.middle-right{
  position: absolute;
  top: 0px;
  left: 620px;
  width: 380px;
  height: 500px;
}
.middle-right-1{
  outline: 1px solid #9F9F9F;
  width: 380px;
  height: 150px;
  background-color: #FF00DD;
}
.middle-right-2{
  outline: 1px solid #9F9F9F;
  margin-top: 10px;
  width: 380px;
  height: 150px;
  background-color: #FFE400;
}
.middle-right-3{
  outline: 1px solid #9F9F9F;
  margin-top: 10px;
  width: 380px;
  height: 180px;
  background-color: #99E000;
}
.bottom{
  margin-top: 20px;
  margin-bottom: 20px;
  outline: 1px solid #9F9F9F;
  width: 1000px;
  height: 100px;
  background-color: #5D5D5D;
  color: #fff;
}
반응형
반응형

BootStrap cdn을 활용하여 네온사인 버튼을 만들어 봅니다.

 

Bootstrap-cdn을 활용한 버튼

 

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- Bootstrap-cdn 적용 -->
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="CheckButton.css" />
<title>CheckButton</title>
</head>
<body>
<ul>
	<li>
		<label>
			<input type="checkbox" name="">
			<div class="icon-box">
                <!-- 이미지 적용(비행기) -->
				<i class="fa fa-plane" aria-hidden="true"></i>
			</div>
		</label>	
	</li>
	<li>
		<label>
			<input type="checkbox" name="">
			<div class="icon-box">
                <!-- 이미지 적용(트위터) -->
				<i class="fa fa-twitter" aria-hidden="true"></i>
			</div>
		</label>	
	</li>
	<li>
		<label>
			<input type="checkbox" name="">
			<div class="icon-box">
                <!-- 이미지 적용(신용카드) -->
				<i class="fa fa-credit-card" aria-hidden="true"></i>
			</div>
		</label>	
	</li>
	<li>
		<label>
			<input type="checkbox" name="">
			<div class="icon-box">
                <!-- 이미지 적용(윈도우) -->
				<i class="fa fa-windows" aria-hidden="true"></i>
			</div>
		</label>	
	</li>
	<li>
		<label>
			<input type="checkbox" name="">
			<div class="icon-box">
                <!-- 이미지 적용(유튜브) -->
				<i class="fa fa-youtube" aria-hidden="true"></i>
			</div>
		</label>	
	</li>
	<li>
		<label>
			<input type="checkbox" name="">
			<div class="icon-box">
                <!-- 이미지 적용(인스타그램) -->
				<i class="fa fa-instagram" aria-hidden="true"></i>
			</div>
		</label>	
	</li>	
</ul>
</body>
</html>

 

 

CheckButton.css

*{
  margin: 0px;
  padding: 0px;
}
body{
	display: flex;
	justify-content: center;
	align-items: center;
	height: 100vh;
	background-color: #111; 
}
ul{
	position: relative;
	display: flex;
	justify-content: center;
	align-items: center;
	flex-wrap: wrap;
	border: 3px solid #000;
	border-radius: 10px;
	padding: 20px 0;
	box-sizing: border-box;
	overflow: hidden;
	width: 240px;
	background: linear-gradient(0deg, #000000, #0c0c0c);
}

ul:before{
	content: '';
	position: absolute;
	width: 100%;
	height: 100%;
	background: rgba(255,255,255,.05);
	bottom: -50%;
	pointer-events: none;
	z-index: 1;
}
ul li{
	position: relative;
	list-style: none;
	text-align: center;
	margin: 15px;
}
ul li label{
	position: relative;
}
ul li label input[type="checkbox"]{
	position: absolute;
	opacity: 0;
	cursor: pointer;
}
ul li label .icon-box{
	width: 60px;
	height: 60px;
	background-color: #101010;
	display: flex;
	justify-content: center;
	align-items: center;
	border: 3px solid #000;
	border-radius: 10px;
	transition: 0.5s;
}

ul li label .icon-box .fa{
	font-size: 30px;
	color: #222;
	transition: 0.5s;
}
ul li label input[type="checkbox"]:checked ~ .icon-box{
	background-color: #000;
	border: 3px solid #fff;
	box-shadow: 0 0 10px rgba(33,156,243,.5),
				0 0 20px rgba(33,156,243,.5),
				0 0 30px rgba(33,156,243,.5);
	
}
ul li label input[type="checkbox"]:checked ~ .icon-box .fa{
	color: #fff;
	text-shadow: 0 0 10px rgba(33,156,243,.8),
				 0 0 10px rgba(33,156,243,1);
}

 

다른 아이콘들을 확인 하고 싶으면

https://fontawesome.com/v4.7.0/icons/

 

Font Awesome Icons

Get 1535 icons right now with FA Free, plus another 7020 icons with Pro, which also gets you another 53 icon category packs as we finish them! Our all-new SVG with JavaScript gives you all the power of SVG without the usual hassle. Ligatures for easier des

fontawesome.com

위 사이트로 접근하여 원하는 이미지로 적용시키면 된다.

 

아래 빨간색으로 처리된 class부분을 변경해주면 된다.

 

반응형
반응형

위의 gif와 같은 버튼을 만들어 보겠습니다.

 

See the Pen rotateBorderButton by myhappyman (@myhappyman) on CodePen.

반응형
반응형

HTML, CSS로만 구성된 사각형박스가 올라오면서 원형으로 변하고 사라지는 배경을 작성해보겠습니다.

HTML PAGE

 

index.html


<!doctype html>
<html>
<head>
<title>Bubbles Background</title>
<link rel="stylesheet" type="text/css" href="BubbleBackground.css" />
</head>
<body>
  <ul class="bubbles">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
  </ul>

</body>
</html>

 

BubbleBackground.css


*{
  margin: 0px;
  padding: 0px;
}
body{
  background: #DDD;
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.bubbles{
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
.bubbles li{
  position: absolute;
  list-style: none;
  display: block;
  width: 20px;
  height: 20px;
  background: rgba(255, 255, 255, .5);
  animation: animate 25s linear infinite;
  bottom: -150px;
}
.bubbles li:nth-child(1){
  left: 5%;
  width: 90px;
  height: 90px;
  animation-delay: 0s;
}
.bubbles li:nth-child(2){
  left: 15%;
  width: 20px;
  height: 20px;
  animation-delay: 2s;
  animation-duration: 12s;
}
.bubbles li:nth-child(3){
  left: 20%;
  width: 150px;
  height: 150px;
  animation-delay: 4s;
}
.bubbles li:nth-child(4){
  left: 30%;
  width: 35px;
  height: 35px;
  animation-delay: 0s;
  animation-duration: 18s;
}
.bubbles li:nth-child(5){
  left: 40%;
  width: 20px;
  height: 20px;
  animation-delay: 0s;
}
.bubbles li:nth-child(6){
  left: 50%;
  width: 110px;
  height: 110px;
  animation-delay: 3s;
}
.bubbles li:nth-child(7){
  left: 60%;
  width: 150px;
  height: 150px;
  animation-delay: 7s;
}
.bubbles li:nth-child(8){
  left: 65%;
  width: 25px;
  height: 25px;
  animation-delay: 15s;
  animation-duration: 45s;
}
.bubbles li:nth-child(9){
  left: 70%;
  width: 15px;
  height: 15px;
  animation-delay: 2s;
  animation-duration: 35s;
}
.bubbles li:nth-child(10){
  left: 80%;
  width: 150px;
  height: 150px;
  animation-delay: 0s;
  animation-duration: 11s;
}
.bubbles li:nth-child(11){
  left: 85%;
  width: 15px;
  height: 15px;
  animation-delay: 2s;
  animation-duration: 35s;
}
.bubbles li:nth-child(12){
  left: 95%;
  width: 20px;
  height: 20px;
  animation-delay: 0s;
  animation-duration: 8s;
}
@keyframes animate {
  0%{
    transform: translateY(0) rotate(0deg);
    opacity: 1;
    border-radius: 0;
  }
  100%{
    transform: translateY(-500px) rotate(360deg);
    opacity: 0.5;
    border-radius: 25%;
  }
  100%{
    transform: translateY(-1000px) rotate(720deg);
    opacity: 0;
    border-radius: 50%;
  }
}
 
반응형