function scrollIt(destination, duration, easing, callback) {

var easings = {
linear: function linear(t) {
return t;
},
easeInQuad: function easeInQuad(t) {
return t * t;
},
easeOutQuad: function easeOutQuad(t) {
return t * (2 - t);
},
easeInOutQuad: function easeInOutQuad(t) {
return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
},
easeInCubic: function easeInCubic(t) {
return t * t * t;
},
easeOutCubic: function easeOutCubic(t) {
return --t * t * t + 1;
},
easeInOutCubic: function easeInOutCubic(t) {
return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
},
easeInQuart: function easeInQuart(t) {
return t * t * t * t;
},
easeOutQuart: function easeOutQuart(t) {
return 1 - --t * t * t * t;
},
easeInOutQuart: function easeInOutQuart(t) {
return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;
},
easeInQuint: function easeInQuint(t) {
return t * t * t * t * t;
},
easeOutQuint: function easeOutQuint(t) {
return 1 + --t * t * t * t * t;
},
easeInOutQuint: function easeInOutQuint(t) {
return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;
}
};

var start = window.pageYOffset;
var startTime = 'now' in window.performance ? performance.now() : new Date().getTime();

var documentHeight = Math.max(document.body.scrollHeight, document.body.offsetHeight, document.documentElement.clientHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight);
var windowHeight = window.innerHeight || document.documentElement.clientHeight || document.getElementsByTagName('body')[0].clientHeight;
var destinationOffset = typeof destination === 'number' ? destination : destination.offsetTop;
var destinationOffsetToScroll = Math.round(documentHeight - destinationOffset < windowHeight ? documentHeight - windowHeight : destinationOffset);

if ('requestAnimationFrame' in window === false) {
window.scroll(0, destinationOffsetToScroll);
if (callback) {
callback();
}
return;
}

function scroll() {
var now = 'now' in window.performance ? performance.now() : new Date().getTime();
var time = Math.min(1, (now - startTime) / duration);
var timeFunction = easings[easing](time);
window.scroll(0, Math.ceil(timeFunction * (destinationOffsetToScroll - start) + start));

if (window.pageYOffset === destinationOffsetToScroll) {
if (callback) {
callback();
}
return;
}

requestAnimationFrame(scroll);
}

scroll();
}





사용할때


for (var scrollEl of document.getElementsByClassName('scroll')){
scrollEl.addEventListener('click', function () {
var target = this.getAttribute('data-scroll-target');
scrollIt(
document.getElementsByClassName(target)[0],
300,
'easeOutQuad',
() => console.log(`Just finished scrolling to ${window.pageYOffset}px`)
);
})
}


HTML

<div id="example">
<input v-on:input="typing" v-bind:value="message" placeholder="여기를 수정해보세요">
<p>메시지: {{ message }}</p>
</div>




JS

// 루트 인스턴스 생성
var vm = new Vue({
el: '#example',
data: {
message:'안녕하세요'
},
methods: {
typing(e) {
this.message = e.target.value
}
}
})


'Coding' 카테고리의 다른 글

최고 권한 부여  (0) 2019.03.05
vanillaJS 부드러운 스크롤  (0) 2019.02.14
자바스크립트 모바일 체크  (0) 2018.12.11
순수 자바스크립트 onclick 이벤트  (0) 2018.11.19
순수 javascript 스코프  (0) 2018.11.08
/***********************************************************
* @name mobilecheck
* @description 접속한 기기가 모바일인지 아닌지 체크하는 기능
* @return boolean
***********************************************************/
window.mobilecheck = function () {
var check = false;
(function (a) {
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true;
})(navigator.userAgent || navigator.vendor || window.opera);
return check;
};


// dom에서 test클래스를 가진 요소를 배열로 변환하여 해당 요소의 길이만큼 반복
Array.from(document.getElementsByClassName('test')).forEach((z) => {
// 현재 .test에 click 이벤트를 건다.
z.addEventListener('click', function () {
// 현재의 .test가 콘솔에 출력된다.
console.log(z);
})
});


'Coding' 카테고리의 다른 글

vue.js - v-model의 한글 사용 문제를 v-on을 사용한 해결법  (0) 2019.01.18
자바스크립트 모바일 체크  (0) 2018.12.11
순수 javascript 스코프  (0) 2018.11.08
주석 예제  (0) 2018.11.01
ajax function  (0) 2018.10.10
// DOM이 완전히로드 된 후 실행
document.addEventListener("DOMContentLoaded", function () {
// 모든 assets(이미지 포함)이 로드 될 때 실행
window.onload = function () {
};
});


'Coding' 카테고리의 다른 글

자바스크립트 모바일 체크  (0) 2018.12.11
순수 자바스크립트 onclick 이벤트  (0) 2018.11.19
주석 예제  (0) 2018.11.01
ajax function  (0) 2018.10.10
for문 안에 function 순서 맞추기  (0) 2018.09.10

/***********************************************************

    * @params Request

    * @description 신청 내역

    * @method POST

    * @return Result.blade.php

    ***********************************************************/

   public function result (Request $request) {

       // 접수 번호로 신청목록 조회

       $inquiry = Inquiry::find($request->inquiry_id);

       // 접수된 신청이 목록에 있다면

       if (isset($inquiry)) {

           // 신청에대한 고객의 전화번호와 입력한 전화번호가 일치하는지 확인

           if ($inquiry->user->contact == $request->contact) {

               // 신청한 고객 정보

               $unknownuser = $inquiry->user;

               // 요청이 가지고 있는 증상

               $symptoms = $inquiry->symptoms;

               // 견적내역

               $estimations = Estimation::where('inquiry_id' , $inquiry->id)->get();

               // 분류명

               $classification = $symptoms[0]->classification->name;

               $img_path = 'https://s3.ap-northeast-2.amazonaws.com/repairmeister';

               $file_path = $inquiry->file_path;

               return view('inquiry.result' , compact('unknownuser' ,

                   'symptoms' , 'classification' , 'inquiry' , 'estimations', 'img_path', 'file_path'));


           } else {

               $message = "주문번호와 연락처가 일치하지 않습니다!";

           }

       } else {

           $message = "조회하신 주문번호가 존재하지 않습니다.";

       }

       flash($message)->important();

       return redirect('/inquiry');

   }

'Coding' 카테고리의 다른 글

순수 자바스크립트 onclick 이벤트  (0) 2018.11.19
순수 javascript 스코프  (0) 2018.11.08
ajax function  (0) 2018.10.10
for문 안에 function 순서 맞추기  (0) 2018.09.10
scss _presets.scss  (0) 2018.08.22
/***************************************************
* @ sort (ajax)
* @description sort button on click ajax 통신 function
***************************************************/
$(document).on('click','.sort-table-arrows > button', function () {
var orderColumn;
if ($(this).closest('th').hasClass('id')) {
orderColumn = 'id';
} else if ($(this).closest('th').hasClass('datetime')) {
orderColumn = 'datetime';
} else if ($(this).closest('th').hasClass('reason')) {
orderColumn = 'reason';
} else if ($(this).closest('th').hasClass('paid')) {
orderColumn = 'paid';
} else if ($(this).closest('th').hasClass('price')) {
orderColumn = 'price';
}
else {
orderColumn = 'cancel';
}

var params = {
current_page: $('.pagination > .active > span').html(),
order_column: orderColumn,
paginate: $('[data-type="assign"]').length,
};

if ($(this).attr('id') === 'sort-down') {
params.des = false;
params.query = null;
} else {
params.des = true;
params.query = null;
}

ajaxCall('/partner/list/orderBy', 'POST', JSON.stringify(params), fn_ajax_success, fn_ajax_error);
});

/***************************************************
* @ fn_ajax_success (ajax)
* @param msg
* @description ajax 통신 성공 function
***************************************************/
var fn_ajax_success = function (data) {
alert(data.msg);
location.reload();
};

/***************************************************
* @ fn_ajax_error (ajax)
* @param msg
* @description ajax 통신 성공 function
***************************************************/
var fn_ajax_error = function (data) {
alert(data.msg);
//location.reload();
};

/***************************************************
* @ fn_ajax_success (ajax)
* @param msg
* @description ajax 통신 성공 function
***************************************************/

function ajaxCall(url, method, data, successFunc, errorFunc) {
try {
$.ajax({
type: method,
url: url,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
dataType: "JSON",
data: data,
success: successFunc,
error: errorFunc,
})
} catch (e) {
alert("fail");
}
}


'Coding' 카테고리의 다른 글

순수 javascript 스코프  (0) 2018.11.08
주석 예제  (0) 2018.11.01
for문 안에 function 순서 맞추기  (0) 2018.09.10
scss _presets.scss  (0) 2018.08.22
fabric 참고  (0) 2018.06.21
for (var i = 0; i < res.data.sheets.length; i++) {
(function () {
var pageListCanvas = new fabric.Canvas('pageListCanvas');
pageListCanvas.setWidth(canvas.width);
pageListCanvas.setHeight(canvas.height);
console.log("invoking: "+i);
pageListCanvas.loadFromJSON(JSON.stringify(res.data.sheets[i].listArr), function () {
pageListCanvas.requestRenderAll.bind(pageListCanvas);
});
console.log(pageListCanvas.getObjects());
})(); // for 문 안에서 function을 실행할때 꼭 이렇게 사용
}


'Coding' 카테고리의 다른 글

주석 예제  (0) 2018.11.01
ajax function  (0) 2018.10.10
scss _presets.scss  (0) 2018.08.22
fabric 참고  (0) 2018.06.21
es6 ::: getter & setter  (0) 2018.06.19
$color-main: #ff5722;
$color-main-dark: #C41C00;
$color-darkGrey: #596568;
$color-Grey: #353535;
$color-lightGrey: #686868;
$color-gnbBg: #ccc;
$color-headSelectBg: #f4f4f4;
$color-textDarkGrey: #585858;
$color-textLightGrey: #909090;
$color-headOptionBg: #e3e3e3;
$color-headBtnGrey: #9eacbc;
$color-toolsBlock: #6e6e6e;
$color-rolerBorder: #979797;
$color-rangeBg: #f5f5f5;
$color-rangeImgIcon: #d0d0d0;
$color-artboardController: #e8e8e8;
$color-mobileIconBg: #201112;
$color-mobileIcon: #ffd232;
$white: #ffffff;

@mixin transition-easing($sec) {
-webkit-transition: all $sec ease-in-out;
-o-transition: all $sec ease-in-out;
transition: all $sec ease-in-out;
}

//
// 미디어 쿼리 MIXIN
// --------------------------------------------------

// Break Point (Desktop First 기준 내림차순 설정)
$desktop-l-width : 1440px;
$laptop-l-width : 1700px;
$tablet-l-width : 1024px;
$tablet-s-width : 768px;
$mob-l-width : 640px;
$mob-m-width : 425px;
$mob-s-width : 375px;

// only PC
@mixin pc-only {
@media screen and (min-width: #{$tablet-l-width + 1}) {
@content;
}
}
// PC large
@mixin pc-large {
@media screen and (min-width: #{$desktop-l-width + 1}) {
@content;
}
}

// --------------------------------------------------

// 노트북
@mixin lap {
@media screen and (max-width: #{$laptop-l-width}) {
@content;
}
}

// 태블릿
@mixin tab {
@media screen and (max-width: #{$tablet-l-width}) {
@content;
}
}
// 모바일
@mixin mob {
@media screen and (max-width: #{$tablet-s-width}) {
@content;
}
}
// 모바일 large
@mixin mob-large {
@media screen and (max-width: #{$mob-l-width}) {
@content;
}
}
// 모바일 mid
@mixin mob-mid {
@media screen and (max-width: #{$mob-m-width}) {
@content;
}
}
// 모바일 small
@mixin mob-small {
@media screen and (max-width: #{$mob-s-width}) {
@content;
}
}




사용


@include mob-large {
}


'Coding' 카테고리의 다른 글

ajax function  (0) 2018.10.10
for문 안에 function 순서 맞추기  (0) 2018.09.10
fabric 참고  (0) 2018.06.21
es6 ::: getter & setter  (0) 2018.06.19
ES6 ::: 배열  (0) 2018.06.18
window.onload = function() {
// 캔버스 요소 주위에 래퍼 만들기 (캔버스 id = "canvas")
var canvas = new fabric.Canvas('canvas').setWidth('700').setHeight('400');
// 오브젝트 추가를 위한 버튼 받아오기
var addRectBtn = document.querySelector('#addRect');
// 페이지 추가를 위한 버튼 받아오기
var addPageBtn = document.querySelector('#addPage');
// 오브젝트 추가 버튼 function
addRectBtn.addEventListener('click', function () {
addRect();
layerLoad();
});
// 페이지 추가 버튼 function
addPageBtn.addEventListener('click', function () {
pageLoad();
});
// 사각형 추가 function
function addRect() {
canvas.add(new fabric.Rect({
left: Math.floor(Math.random() * 500) + 1 ,
top: Math.floor(Math.random() * 230) + 1 ,
fill: getRandomColor(),
width: 200,
height: 150
}));
}
// 추가 된 객체 load
function layerLoad() {
// 추가 된 객체 리스트가 들어갈 공간 #layerList
var layerList = document.querySelector('#layerList');
// 추가 된 객체 갯수가 카운트되서 뿌려질 공간 #layerCount
var layerCount = document.querySelector('#layerCount');
// 캔버스에 모든 객체 가져 오기
var layerObjects = canvas.getObjects();

//layerList.innerHTML = '';
// 캔버스에 모든 객체의 갯수를 layerCount안에 기록한다.
layerCount.innerText = layerObjects.length;

var i;
for (i = 0; i < layerObjects.length; i ++){
var layerObject = layerObjects[i];
var fill = layerObject.fill,
xCoord = Math.floor(layerObject.left),
yCoord = Math.floor(layerObject.top);
var listItem = document.createElement('li');
listItem.classList.add('list-group-item', 'd-flex', 'justify-content-between', 'lh-condensed');
listItem.setAttribute('data-order', i);
listItem.innerHTML =
'<div>\n' +
' <h6 class="my-0">임시 오브젝트 이름</h6>\n' +
' <small class="text-muted" style="font-weight: 600;">사각형 <span style="color: '+ fill +'">' + fill + '</span></small>\n' +
' <small class="text-muted">위치 <span>' + xCoord + ' / '+ yCoord +'</span></small>\n' +
' </div>\n' +
' <span class="text-muted"><i class="fa fa-bars" aria-hidden="true"></i></span>';
layerList.prepend(listItem);
}
$( "#layerList" ).sortable({
stop : function (e, ui) {
//console.log(ui.item[0].getAttribute('data-order'));
var orderChangedTo = [];
var arrayNum;
var i = 0;
$(this).children('li').each(function () {
arrayNum = parseInt($(this).attr('data-order'));
$(this).attr('data-order', layerObjects.length - i - 1);
orderChangedTo.unshift(layerObjects[arrayNum]);
i ++;
});
layerObjects = orderChangedTo;
console.log(layerObjects);
canvas.clear();
for(var j = 0; j < layerObjects.length; j ++){
canvas.add(layerObjects[j]);
}
}
});
}

function pageLoad() {
// 추가 된 페이지 리스트가 들어갈 공간 #pageList
var pageList = document.querySelector('#pageList');
// 캔버스에 모든 객체 가져 오기
var pageObjects = canvas.getObjects();

var i;
for (i = 0; i < pageObjects.length; i ++){
var pageObject = pageObjects[i];
var pageItem = document.createElement('li');
}
pageItem.classList.add('list-group-item', 'd-flex', 'justify-content-between', 'lh-condensed');
pageItem.setAttribute('data-order', i);
pageItem.innerHTML =
'<div>\n' +
' <small class="text-muted">저장내용 <span>' + pageObjects.length +'</span></small>\n' +
' </div>\n' +
' <span class="text-muted"><i class="fa fa-bars" aria-hidden="true"></i></span>';
pageList.prepend(pageObjects);
console.log(pageObjects.length);
}

function getRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}


};


'Coding' 카테고리의 다른 글

for문 안에 function 순서 맞추기  (0) 2018.09.10
scss _presets.scss  (0) 2018.08.22
es6 ::: getter & setter  (0) 2018.06.19
ES6 ::: 배열  (0) 2018.06.18
선택 안됨 Jquery ::: 반복연습 2번째  (0) 2018.06.12

+ Recent posts