[Rails] 로딩 기능 구현
소개
이번 동영상을 투고한 후 등 로드하는 시간이 걸리거나 하고, 기다리는 시간이 있었던 것이 신경이 쓰였으므로 이하와 같은 로딩의 애니메이션의 구현을 했습니다.
환경
Rails 5.2.3
Ruby 2.5.1
구현 방법
여러 가지 방법이 있지만 제 경우에는 다음을 참고하여 CSS
로 애니메이션을 만들었습니다.
참고 자료
뷰 파일
우선 application.html.haml
파일에 로딩 애니메이션용의 클래스를 body
아래에 기술합니다.
application.html.haml%body
.loader-wrap
.loader
SCSS 파일
그런 다음 SCSS에 로딩 애니메이션을 위한 레이아웃을 작성합니다.
여러가지 기술하고 있습니다만, 방금 전의 참고 자료안에 있는 사이트의 내용을 거의 copipe 하는 것만으로 실장 할 수 있습니다.
후에는 색이나 크기 등을 변경하거나 자신의 마음에 드는 레이아웃으로하십시오.
사용 사이트:Single Element CSS Spinners
htps // p 여지 cts.ぅ케하아 s. 메/cs-ぉ아데 rs/
loading.scss.loader-wrap {
position: fixed;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
.loader,
.loader:before,
.loader:after {
border-radius: 50%;
}
.loader {
color: black;
font-size: 11px;
text-indent: -99999em;
margin: 55px auto;
position: relative;
width: 10em;
height: 10em;
box-shadow: inset 0 0 0 1em;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
}
.loader:before,
.loader:after {
position: absolute;
content: '';
}
.loader:before {
width: 5.2em;
height: 10.2em;
background: white;
border-radius: 10.2em 0 0 10.2em;
top: -0.1em;
left: -0.1em;
-webkit-transform-origin: 5.2em 5.1em;
transform-origin: 5.2em 5.1em;
-webkit-animation: load2 2s infinite ease 1.5s;
animation: load2 2s infinite ease 1.5s;
}
.loader:after {
width: 5.2em;
height: 10.2em;
background: white;
border-radius: 0 10.2em 10.2em 0;
top: -0.1em;
left: 5.1em;
-webkit-transform-origin: 0px 5.1em;
transform-origin: 0px 5.1em;
-webkit-animation: load2 2s infinite ease;
animation: load2 2s infinite ease;
}
@-webkit-keyframes load2 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes load2 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
나중에 이번에는 SCSS를 사용하고 있기 때문에 @import
에서 application.scss
에 SCSS 파일을 읽는 것을 잊지 않도록합니다.
application.scss@import "loading";
jQuery
나중에 애니메이션 설정을 JS 파일에 작성하기 만하면됩니다.
사용 부분은 "페이지 로드가 완료되면 애니메이션 숨겨진 부분"까지도 문제 없습니다.
loading.js$(document).on('turbolinks:load', function() {
$(function(){
var loader = $('.loader-wrap');
//ページの読み込みが完了したらアニメーションを非表示
$(window).on('load',function(){
loader.fadeOut();
});
//ページの読み込みが完了してなくても2秒後にアニメーションを非表示にする
setTimeout(function(){
loader.fadeOut();
},2000);
});
});
마지막으로
이미지를 사용하는 방법도 있었습니다만, 나는 이번 이쪽으로 구현했습니다.
상당히 간단하게 실장할 수 있으므로 신경이 쓰이는 분은 시험해 주세요.
Reference
이 문제에 관하여([Rails] 로딩 기능 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dir_sh0606/items/739edd91d32b79883d30
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
%body
.loader-wrap
.loader
.loader-wrap {
position: fixed;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
.loader,
.loader:before,
.loader:after {
border-radius: 50%;
}
.loader {
color: black;
font-size: 11px;
text-indent: -99999em;
margin: 55px auto;
position: relative;
width: 10em;
height: 10em;
box-shadow: inset 0 0 0 1em;
-webkit-transform: translateZ(0);
-ms-transform: translateZ(0);
transform: translateZ(0);
}
.loader:before,
.loader:after {
position: absolute;
content: '';
}
.loader:before {
width: 5.2em;
height: 10.2em;
background: white;
border-radius: 10.2em 0 0 10.2em;
top: -0.1em;
left: -0.1em;
-webkit-transform-origin: 5.2em 5.1em;
transform-origin: 5.2em 5.1em;
-webkit-animation: load2 2s infinite ease 1.5s;
animation: load2 2s infinite ease 1.5s;
}
.loader:after {
width: 5.2em;
height: 10.2em;
background: white;
border-radius: 0 10.2em 10.2em 0;
top: -0.1em;
left: 5.1em;
-webkit-transform-origin: 0px 5.1em;
transform-origin: 0px 5.1em;
-webkit-animation: load2 2s infinite ease;
animation: load2 2s infinite ease;
}
@-webkit-keyframes load2 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@keyframes load2 {
0% {
-webkit-transform: rotate(0deg);
transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
transform: rotate(360deg);
}
}
@import "loading";
$(document).on('turbolinks:load', function() {
$(function(){
var loader = $('.loader-wrap');
//ページの読み込みが完了したらアニメーションを非表示
$(window).on('load',function(){
loader.fadeOut();
});
//ページの読み込みが完了してなくても2秒後にアニメーションを非表示にする
setTimeout(function(){
loader.fadeOut();
},2000);
});
});
이미지를 사용하는 방법도 있었습니다만, 나는 이번 이쪽으로 구현했습니다.
상당히 간단하게 실장할 수 있으므로 신경이 쓰이는 분은 시험해 주세요.
Reference
이 문제에 관하여([Rails] 로딩 기능 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dir_sh0606/items/739edd91d32b79883d30텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)