공공데이터 API 사용법 익히기
날씨관련 데이터를 받으려다가 데이터를 보니까 생활기상지수가 있었는데 어짜피 날씨는 다들 네이버나 시리와 같이 일상적으로 잘 확인하기 때문에 해당 앱에서는 다른 정보를 보여주면 좋을 것이라고 생각
https://data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15043583
체감온도, 더위체감지수, 자외선지수, (겨울) 동파가능지수, 불쾌지수
https://data.go.kr 공공데이터포털에서 [생활기상지수 조회서비스] 오픈 api를 받았다. JSON과 XML의 데이터 포맷을 가지고 있고 request, get 방식을 이용해서 필요한 데이터를 받아볼 수 있는 듯 했다.
API 사용법을 익힐 새도 없이 자꾸 초반부터 에러가 뜨니까 짜증이 나서 그냥 레이아웃부터 만들어 놓기로 했다👻
A slideshow component for cycling through elements—images or slides of text—like a carousel.
<div id="carouselExampleSlidesOnly" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
<div class="carousel-item">
<img src="..." class="d-block w-100" alt="...">
</div>
</div>
</div>
<div class="carousel-inner" data-interval="2000">
기본 interval이 "5000"으로 설정되어 있어서 조금 더 짧게 2000으로 설정해 주었다. (만족!)
사진 위에 글씨를 쓰니 글씨가 보이기는 하는데 아무래도 사진이 있어 선명하게 보이지 않아 위에 커버를 살짝 씌워줬다. 다음과 같은 코드를 css 파일에 넣어주니 아래 사진과 같이 만들어 졌다! (gradient 너무 예뻐..💕)
(tmi) 내가 찍은 필름 사진들로 만드니까 너무 ... 좋은 거 있지!
.carousel-inner {
background-image: linear-gradient(45deg, #8baaaa 0%, #ae8b9c 100%);
overflow: hidden;
}
.carousel-inner img {
object-fit: cover;
opacity: 0.5;
}
상단 메뉴에 해당하는 navbar를 만드는 데에 있어서 다양한 supported contents가 있는데 각각의 요소를 알고 나니까 코드 짜는 게 한결 쉬웠다.
.navbar-brand for your company, product, or project name.
.navbar-nav for a full-height and lightweight navigation (including support for dropdowns).
.navbar-toggler for use with our collapse plugin and other navigation toggling behaviors.
.form-inline for any form controls and actions.
.navbar-text for adding vertically centered strings of text.
.collapse.navbar-collapse for grouping and hiding navbar contents by a parent breakpoint.
처음에는 정말 딱 간단한 디자인으로 제대로 기능만 되는 navbar를 만들었다. 만들면서 내가 알게 된 몇 가지 코드, class와 같은 것들이 있는데 다음과 같다.
<nav class="navbar fixed-top navbar-expand-md navbar-dark bg-custom-2">
.bg-custom-2 {
background-image: linear-gradient(-20deg, #6e45e2 0%, #88d3ce 100%);
}
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
@media (min-width: 800px) and (max-width: 850px) {
.navbar:not(.top-nav-collapse) {
background: slategray !important;
}
}
href="#" target="_self"
상위 태그 <ul class="navbar-nav ml-auto"></ul>
안에 일반적으로 클릭해서 바로 새로운 페이지가 연결되도록 할 때는 아래와 같이 써주면 메뉴 글씨가 생성된다.
<li class="nav-item">
<a class="nav-link" href="#">배달음식</a>
</li>
내가 만들고자 하는 것은 상위 메뉴안에 여러 가지 목록이 뜨도록 하는 dropdown menu!
다음과 같이 index.html 문서에 코드를 적었다.
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" target="_self" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">공원별정보</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="#">강서</a>
<a class="dropdown-item" href="#">광나루</a>
<a class="dropdown-item" href="#">난지</a>
<a class="dropdown-item" href="#">뚝섬</a>
<a class="dropdown-item" href="#">망원</a>
<a class="dropdown-item" href="#">반포</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">양화</a>
<a class="dropdown-item" href="#">여의도</a>
<a class="dropdown-item" href="#">이촌</a>
<a class="dropdown-item" href="#">잠실</a>
<a class="dropdown-item" href="#">잠원</a> </div>
</li>
또 욕심이 생긴 나는 다음과 같은 디테일을 넣어보고 싶었다.
위의 기능들을 만들기 위해 추가한 css 코드는 다음과 같다.
.navbar-collapse ul li a.nav-link:before {
position: absolute;
bottom: -5px;
left: 0;
width: 100%;
height: 2px;
background: transparent;
content: '';
opacity: 0;
-ms-transition: opacity 0.3s, -webkit-transform 0.3s;
-webkit-transition: opacity 0.3s, -webkit-transform 0.3s;
transition: opacity 0.3s, transform 0.3s;
-ms-transform: translateY(10px);
-webkit-transform: translateY(10px);
transform: translateY(10px);
}
.navbar-collapse ul li:hover a.nav-link:before {
opacity: 1;
-ms-transform: translateY(0px);
-webkit-transform: translateY(0px);
transform: translateY(0px);
bottom: 0px;
background: linear-gradient(120deg, #f6d365 0%, #fda085 100%);
}
.dropdown-item:hover, .dropdown-item:focus {
color: #FCF0E7;
text-decoration: none;
background: linear-gradient(120deg, #f6d365 0%, #fda085 100%);
}
.dropdown-menu {
border: 0px;
}
<script>
$(document).ready(function () {
$('#navbarDropdown').mouseenter(function () {
$('.dropdown-menu').slideToggle(300, "linear");
});
$('.dropdown-menu').mouseleave(function () {
$(this).slideToggle(300, "linear");
});
});
</script>
이렇게 여기까지 다 하면! 다음과 같이 짜자잔~!!~!
codepen.io 에 되게 유용하게 부분적으로 가져다 쓸 수 있는 코드들이 많다. 개인적으로 처음에 전체적으로 받았던 template zip 파일은 내가 코드를 해석하기가 어려우니 사용하는 것이 무리였는데 여기는 html/css/js 별로 코드를 확인하고 쓸 수 있어서 편하다.
아래 링크를 통해 받아서 내가 필요한 대로 수정했다. 내가 찾고자 하는 디자인이어서 바로 보자마자 사용했지-!👻
https://codepen.io/trishrecuero/pen/geVWMa
완성된 모습은 다음과 같다. (글꼴은 아직!)
(물보라가 치는데 진짜..코드 보니까 개발자는 정말...리스펙이다)
https://m.blog.naver.com/PostView.nhn?blogId=mia8692&logNo=220239773874&proxyReferer=https:%2F%2Fwww.google.com%2F
https://getbootstrap.com/docs/4.0/components/navbar/
https://stackoverflow.com/questions/16453537/bootstrap-transparent-navbar
https://mdbootstrap.com/snippets/jquery/ascensus/1727054#html-tab-view
http://tcpschool.com/css/css_advanced_navigation