jQuery로 로딩 화면 구현
소개
이번은, 폼등으로 송신했을 때에, 송신중에 화면상에 로딩 화면을 표시시키는 실장을 실시합니다.
완성 이미지
환경
MacOS 10.15.7
루비 2.6.5
Ruby on Rails 6.0.0
jquery 3.4.1
전제 조건
환경
MacOS 10.15.7
루비 2.6.5
Ruby on Rails 6.0.0
jquery 3.4.1
전제 조건
일하자.
①jquery-loading-overlay 도입
이번에는 jquery-loading-overlay라는 jQuery 플러그인을 사용하여 로딩 화면을 구현합니다.
jquery-loading-overlay를 사용하는 경우에는 npm으로 설치하는 방법이나 CDN을 사용하여 도입하는 방법이 있지만 이번에는 CDN을 사용한 방법으로 도입해 나갈 것입니다.
application.html.erb에
application.html.erb
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/loadingoverlay.min.js"></script>
여기를 추가합니다.
이제 준비가 되었습니다.
②js 파일에 처리를 기술
js 파일이 어느 시점에서 로딩 화면을 표시할지 설명합니다.
이번에는 new.html.erb내의 「투고하는 버튼」을 눌렀을 때에 로딩 화면을 표시하게 합니다.
일단 소개합니다만, 투고하는 버튼은 이하와 같습니다.
new.html.erb<input type='submit' id='sending' class='send__btn' value='投稿する'>
다음 js 파일입니다. js 파일은 ``loading.js'' 파일을 작성하고 거기에 작성합니다.
loading.js$(function() {
$("form").on('submit', function(){
$.LoadingOverlay("show");
});
});
이상입니다.
이제 실제로 게시하는 버튼을 누르면
같은 느낌이 듭니다.
③옵션 지정
jquery-loading-overlay에서는 옵션을 사용하여 로딩 화면을 사용자 정의할 수 있습니다.
③-1 텍스트 삽입
예를 들어 텍스트 문장을 추가하려면
loading.js$(function() {
$("form").on('submit', function(){
$.LoadingOverlay("show", {
text :"Sending..."
});
});
});
이렇게 기술함으로써,
이렇게 텍스트 문장을 넣는 것도 가능합니다.
③-2 font-awesome 사용
그리고 다음과 같이 font-awesome을 사용하여 아이콘을 변경할 수도 있습니다.
덧붙여서, font-awesome의 아이콘을 회전시키는 경우에는, 클래스명의 뒤에 fa-spin
라고 기술하는 것으로,
아이콘을 회전할 수 있습니다.
loading.js$(function() {
$("form").on('submit', function(){
$.LoadingOverlay("show", {
image : "",
fontawesome : "fa fa-cog fa-spin"
});
});
});
실행하면 다음과 같습니다.
③-3 상태바 표시
다음과 같은 설정을 하면, 로드의 진행 상황을 가시화할 수 있게 됩니다.
loading.js$(function() {
$("form").on('submit', function(){
$.LoadingOverlay("show", {
image : "",
progress : true
});
let count = 0;
let interval = setInterval(function(){
if (count >= 100) {
clearInterval(interval);
return;
}
count += 10;
$.LoadingOverlay("progress", count);
});
});
});
수행한 결과는 다음과 같습니다.
③-4 커스터마이징
자신이 좋아하는 화면으로 하고 싶은 경우에는 CSS를 지정해 작성하는 것도 가능합니다.
다음과 같이 작성하여 사용자 정의할 수 있습니다.
loading.js$(function() {
$("form").on('submit', function(){
var customElement = $("<div>", {
"css" : {
"border" : "2px solid blue",
"font-size" : "30px",
"color" : "#ffffff",
"text-align" : "center",
"padding" : "5px",
},
"class" : "your-custom-class",
"text" : "送信中...",
});
$.LoadingOverlay("show", {
image : "",
fontawesome : "fas fa-sync fa-spin",
background : "rgba(0, 0, 0, 0.5)",
custom : customElement,
});
});
});
실행 결과는 다음과 같습니다.
③-5 특정 요소에만 오버레이를 적용
클래스 또는 id를 지정하여 특정 요소에만 오버레이를 적용할 수도 있습니다.
이번에는 「투고하는 버튼」에만 오버레이를 걸겠습니다. 투고하는 버튼에는 `id='sending' 으로 설정하고 있으므로, 그곳에서 지정합니다.
아래 코드입니다.
loading.js$(function() {
$("#sending").click(function(){
$("#sending").LoadingOverlay("show");
});
});
실행 결과는 다음과 같습니다.
참고 참조
이것들은 모두 jquery-loading-overlay의 레퍼런스에 기술하고 있으므로, 그쪽을 참고에 여러가지 시험해 주시면 좋겠습니다.
참조 : htps : //가 s 빠레 s 암이. 코 m/ぁbs/j쿠에 ry-ぉ아아 g-오ゔぇrぁy/
Reference
이 문제에 관하여(jQuery로 로딩 화면 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomato1125/items/78d5c20554957fd9d067
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/loadingoverlay.min.js"></script>
<input type='submit' id='sending' class='send__btn' value='投稿する'>
$(function() {
$("form").on('submit', function(){
$.LoadingOverlay("show");
});
});
$(function() {
$("form").on('submit', function(){
$.LoadingOverlay("show", {
text :"Sending..."
});
});
});
$(function() {
$("form").on('submit', function(){
$.LoadingOverlay("show", {
image : "",
fontawesome : "fa fa-cog fa-spin"
});
});
});
$(function() {
$("form").on('submit', function(){
$.LoadingOverlay("show", {
image : "",
progress : true
});
let count = 0;
let interval = setInterval(function(){
if (count >= 100) {
clearInterval(interval);
return;
}
count += 10;
$.LoadingOverlay("progress", count);
});
});
});
$(function() {
$("form").on('submit', function(){
var customElement = $("<div>", {
"css" : {
"border" : "2px solid blue",
"font-size" : "30px",
"color" : "#ffffff",
"text-align" : "center",
"padding" : "5px",
},
"class" : "your-custom-class",
"text" : "送信中...",
});
$.LoadingOverlay("show", {
image : "",
fontawesome : "fas fa-sync fa-spin",
background : "rgba(0, 0, 0, 0.5)",
custom : customElement,
});
});
});
$(function() {
$("#sending").click(function(){
$("#sending").LoadingOverlay("show");
});
});
이것들은 모두 jquery-loading-overlay의 레퍼런스에 기술하고 있으므로, 그쪽을 참고에 여러가지 시험해 주시면 좋겠습니다.
참조 : htps : //가 s 빠레 s 암이. 코 m/ぁbs/j쿠에 ry-ぉ아아 g-오ゔぇrぁy/
Reference
이 문제에 관하여(jQuery로 로딩 화면 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomato1125/items/78d5c20554957fd9d067텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)