#999 24개의 스레드 ✕ 해제
이온디
이온디 3년 전
탭 위젯 스킨을 제작하는 방법입니다. 먼저 컨텐츠위젯을 준비해주시고, 탭 위젯 파일을 만들어보도록 합니다. ./widgets/content_extended/skins/ewce_imin/template/list.html ./widgets/content_extended/skins/ewce_imin/template/tab_left.html ./widgets/content_extended/skins/ewce_imin/template/tab_top.html 기존에 content.html 파일 한개만… 탭 위젯 스킨을 제작하는 방법입니다. 먼저 컨텐츠위젯을 준비해주시고, 탭 위젯 파일을 만들어보도록 합니다. ./widgets/content_extended/skins/ewce_imin/template/list.html ./widgets/content_extended/skins/ewce_imin/template/tab_left.html ./widgets/content_extended/skins/ewce_imin/template/tab_top.html 기존에 content.html 파일 한개만 있었는데 탭을 만들면서 위 파일을 만들어줬습니다. ./widgets/content_extended/skins/ewce_imin/content.html <!--@if($widget_info->tab_type == "tab_left")--> <include target="template/tab_left.html" /> <!--@elseif($widget_info->tab_type == "tab_top")--> <include target="template/tab_top.html" /> <!--@else--> <include target="template/list.html" /> <!--@end-->기존 리스트 부분을 이렇게 구분해줬습니다. (참고로, include target={$widget_info->tab_type} 이렇게는 안되더군요.) list.html은 기존과 동일합니다. tab_left.html 파일은 아래 코드입니다. <div class="tab-wrap left"> <div class="tab-header"> {@$i=0} <!--@foreach($widget_info->tab as $module_srl => $tab)--> <div class="tab-title <!--@if($i==0)-->on<!--@end-->">{$tab->title}</div> {@$i++} <!--@end--> </div> <div class="tab-content"> {@$i=0} <!--@foreach($widget_info->tab as $module_srl => $tab)--> {@$widget_info->content_items = $tab->content_items} <include target="list.html" /> {@$i++} <!--@end--> </div> </div> 2. js 코드입니다. var tab = $('.tab-wrap .tab-header').find('.tab-title'), tabbox = $('.tab-wrap .tab-content').find('.content-box'); tab.on('click', function(){ $(this).addClass('on').siblings().removeClass('on'); tabbox.eq($(this).index()).addClass('on').siblings().removeClass('on'); }); 3. css 코드입니다. .tab-wrap{ border: 1px solid #eee; &.left{ display: flex; .tab-header{ min-width: 6rem; background: #f0f0f0; font-size: 1.1rem; display: flex; align-items: center; justify-content: center; flex-direction: column; .tab-title{ display: flex; flex: 1; align-items: center; justify-content: center; font-size: 1.1rem; width: 100%; color: #999; cursor: pointer; &.on{ background:#fff; color: #F3551E; } } a{ flex: 1; display: flex; align-items: center; justify-content: center; width: 100%; border-right: 1px solid #ebebeb; box-sizing: border-box; color: #adadad; background: #f8f8f8; &.on{ background: #fff; border-bottom: 1px solid #eee; border-right: 0; color: #f25214; } } } .tab-content{ //padding: 3px 1rem; //width: -webkit-fill-available; width: calc(100% - 6rem); box-sizing: border-box; padding: 5px 0px 5px 10px; .cat{ display: none; } .title{ font-size: 1.3rem; } .content-box{ display: none; &.on{ display: block; } } } } } 자 이제 XE 관리자 페이지에서 위젯 생성을 누르신 후 아래 코드를 만들어보세요. 그리고 원하는 곳에 해당 코드를 붙여넣기 하시면 됩니다. <!-- 공지사항 위젯 --> <img class="zbxe_widget_output" widget="content_extended" skin="ewce_imin" colorset="white" widget_cache="0m" module_srls="217355,340535" list_count="2" content_type="document" use_limit="N" order_target="update_order" order_type="desc" list_type="normal" option_view="title" markup_type="table" title_target="title" nickname_target="nickname" show_browser_title="N" show_content_title="N" show_comment_count="Y" show_trackback_count="N" show_category="N" show_icon="N" show_point_level="N" show_always_new="N" show_nocomment_document="N" tab_type="tab_left" tab_order="module_order" tab_showtype="module" tab_move_type="mouseover" category_range="all" hyperlink="Y" hyperlink_src="article" view_permission="list" view_secret_document="all_user" comment_document_secret="Y" thumbnail_type="crop" />
이온디
이온디 4년 전
구현내용 : 신고하기를 새창이 아닌 모달레이어로 구현 작업방법 : 기존 신고하기 새창의 소스를 그대로 복사해서, 게시판 스킨 내부 글보기 페이지, 코멘트 페이지에 삽입함. url만 XE 코드에 맞게 삽입함. 수정한 코드 경로 modules/board/skins/assets/css/report.scss modules/board/skins/assets/js/board.js modules/board/skins/eden_feed/components/article/article.html modules… 구현내용 : 신고하기를 새창이 아닌 모달레이어로 구현 작업방법 : 기존 신고하기 새창의 소스를 그대로 복사해서, 게시판 스킨 내부 글보기 페이지, 코멘트 페이지에 삽입함. url만 XE 코드에 맞게 삽입함. 수정한 코드 경로 modules/board/skins/assets/css/report.scss modules/board/skins/assets/js/board.js modules/board/skins/eden_feed/components/article/article.html modules/board/skins/eden_feed/components/comment/comment.html modules/board/skins/eden_feed/_header.html board.js jQuery(function($) { const btnReportDocument = $(".btn-report-document"); const btnReportComment = $(".btn-report-comment"); const modalWinDocument = $(".modal-wrap-document"); const modalWinComment = $(".modal-wrap-comment"); const btnClose = $(".btn-close"); btnReportDocument.on('click', function(){ modalWinDocument.addClass('active'); }); btnReportComment.on('click', function(){ console.log("코멘트열기"); $(this).next(".modal-wrap-comment").addClass('active'); // modalWinComment.addClass('active'); }); btnClose.on('click', function(){ modalWinDocument.removeClass('active'); modalWinComment.removeClass('active'); }); // $(".modal-wrap.active").not(".modal.modal-view").on("click", function(){ // $(this).removeClass('active'); // }) $('html').on('click', function(e){ //모달창 개수 // var modal = $(e.target).parents('.mark').length; //켜짐여부 var hasClass = $(e.target).hasClass('active'); // console.log($(e.target)) // console.log(modal) // var modal = $(e.target).length; if(hasClass){ // console.log('외부이프문') if(!$(e.target).hasClass('.modal-view')){ // console.log('내부이프문') // console.log($(e.target).parent('.mark').hasClass('on')) $('.modal-wrap-document').removeClass('active'); $('.modal-wrap-comment').removeClass('active'); $('body').css('overflow',''); }else{ // console.log('내부이프문2') } // console.log('켜짐'); // console.log(e.target); }else { // console.log('맞음'); // console.log(e.target); } }); }); article.html <div class="modal-wrap-document"> <div class="modal modal-view"> <div class="modal-header"> <div class="title">신고하기</div> <div class="btn-close"><i class="ion ion-md-close"></i></div> </div> <div class="modal-body"> <load target="../../ruleset/insertDeclare.xml" /> <form action="./" method="post" id="for_document"> <input type="hidden" name="error_return_url" value="{getUrl('','document_srl',$document_srl,'status','error')}"> <input type="hidden" name="mid" value=""> <input type="hidden" name="ruleset" value="insertDeclare"> <input type="hidden" name="module" value="document"> <input type="hidden" name="act" value="procDocumentDeclare"> <input type="hidden" name="target_srl" value="{$document_srl}"> <input type="hidden" name="success_return_url" value="{getUrl('','document_srl', $document_srl,'status','success')}"> <input type="hidden" name="xe_validator_id" value="modules/document/tpl/1"> <div class="x_modal-body x_form-horizontal" style="max-height:none"> <blockquote> <section class="target_article"> <div class="item"> <div class="label">작성자</div> <div class="text">{$oDocument->getNickName()}</div> </div> <div class="item"> <div class="label">제목</div> <div class="text">{$oDocument->getTitle()}</div> </div> </section> </blockquote> <div class="x_control-group"> <label class="x_control-label" for="message_option">사유선택</label> <div class="x_controls"> <select name="message_option" id="message_option"> <option loop="$lang->improper_document_reasons => $key,$text" value="{$key}">{$text}</option> <textarea name="declare_message" id="declare_message"></textarea> <p>{$lang->about_improper_document_declare}</p></div> </div> </div> <div class="x_modal-footer"> <span class="x_btn-group x_pull-right"> <button type="submit" class="x_btn x_btn-primary">{$lang->cmd_submit}</button> </span> </div> </form> <script cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/document/tpl/1'"> alert("{$XE_VALIDATOR_MESSAGE}"); // window.close(); </script> <script cond="$XE_VALIDATOR_MESSAGE && $XE_VALIDATOR_ID == 'modules/comment/tpl/1'"> alert("{$XE_VALIDATOR_MESSAGE}"); // window.close(); </script> </div> </div> </div> comment.html <div class="btn-report-comment">신고</div> <div class="modal-wrap-comment"> <div class="modal modal-view"> <div class="modal-header"> <div class="title">신고하기</div> <div class="btn-close"><i class="ion ion-md-close"></i></div> </div> <div class="modal-body"> <load target="../../ruleset/insertDeclare.xml" /> <form action="./" method="post" id="for_comment"> <input type="hidden" name="error_return_url" value="{getUrl('','document_srl',$comment->get('document_srl'),'comment_srl',$comment->comment_srl,'status','error')}"> <input type="hidden" name="mid" value="index"> <input type="hidden" name="ruleset" value="insertDeclare"> <input type="hidden" name="module" value="comment"> <input type="hidden" name="act" value="procCommentDeclare"> <input type="hidden" name="target_srl" value="{$comment->comment_srl}"> <input type="hidden" name="success_return_url" value="{getUrl('','document_srl',$comment->get('document_srl'),'comment_srl',$comment->comment_srl,'status','success')}"> <input type="hidden" name="xe_validator_id" value="modules/comment/tpl/1"> <!-- <div class="x_modal-header">--> <!-- <h1>불량 댓글 신고 </h1>--> <!-- </div>--> <div class="x_modal-body x_form-horizontal" style="max-height:none"> <blockquote> <section class="target_article"> <div class="item"> <div class="label">댓글내용</div> <div class="text">{$comment->getContent(false)}</div> </div> </section> </blockquote> <div class="x_control-group"> <label class="x_control-label" for="message_option">신고 이유</label> <div class="x_controls"> <select name="message_option" id="message_option"> <option value="advertisement">본문 주제나 흐름에 맞지 않는 광고 글입니다.</option> <option value="theme">주제에 맞지 않는 글입니다.</option> <option value="bad_word">과도한 욕설을 담고 있습니다.</option> <option value="violence">폭력적인 내용을 담고 있습니다.</option> <option value="racism">인종차별적인 내용을 담고 있습니다.</option> <option value="pornography">음란물을 포함하고 있습니다.</option> <option value="privacy">민감한 개인정보가 노출 되어있습니다.</option> <option value="others">기타(직접작성)</option> </select> <textarea name="declare_message" id="declare_message"></textarea> <p>댓글을 신고하신 이유를 간단히 적어서 제출해주시면 관리자 검토 후 조치하겠습니다.</p><p> </p></div> </div> <div class="x_modal-footer"> <span class="x_btn-group x_pull-right"> <button type="submit" class="x_btn x_btn-primary">등록</button> </span> </div> </div> </form> </div> </div> </div> header.html <load target="../assets/css/report.min.css" /> report.scss $line-color:#eee; .btn-report-document,.btn-report-comment{ display:inline-block; margin-right: 10px; font-size: 13px !important; line-height: 1.2em !important; color: #999; cursor: pointer; } .modal-wrap-document, .modal-wrap-comment{ background: rgba(0,0,0,.5); //display: flex; align-items: center; justify-content: center; width: 100vw; height: 100vh; position: fixed; left: 0; right: 0; top: 0; z-index: 999; bottom: 0; display: none; &.active{ display: flex; } } // 신고하기 .modal.modal-view{ display:block !important; width: 21rem; height: 25rem; background:#fff; position: initial; border: 1px solid #444; box-shadow: 4px 4px 8px rgba(0,0,0,0.1); .modal-header{ border-bottom: 1px solid $line-color; .title{ } .btn-close{ cursor: pointer; i{ font-size: 24px; } } } .modal-body{ padding: 0; select, textarea{ margin-top: 2px; width: 100%; } .target_article{ display: flex; flex-direction: column; gap: .5rem; padding: .5rem; border-bottom: 1px solid $line-color; .item{ display: flex; .label{ color: #aaa; border-right: 1px solid #ddd; width: 6rem; } .text{ padding-left: 1rem; } } font-size: 13px; } .x_control-group{ padding: .5rem; .x_controls{ p{ font-size: 12px; color: #aaa; } } } .x_modal-footer{ padding: 0 .5rem; .x_btn-group{ .x_btn{ width: 100%; background: #ff5d6b; border: 0; height: 40px; color: #fff; border-radius: 3px; } } } } }
이온디
이온디 4년 전
오늘 문득, 게시판 카테고리를 수정하다보니 글자도 작고 어디로 이동시켜야 제대로 되는지 몇 번 헤맸습니다. 10년을 넘게 별 불편함을 모르고 있었나 봅니다. 여러분들은 이런 경험 없으신가요? url : https://eond.com/test2 id : test11@gmail.com pw : test11 테스트 방법 로그인 후, 게시판 설정 > 분류관리에서 테스트 가능합니다. ps. 작업한 소스입니다. 필요하신 분은 가져다 쓰세요. #menu{ .simpleTre… 오늘 문득, 게시판 카테고리를 수정하다보니 글자도 작고 어디로 이동시켜야 제대로 되는지 몇 번 헤맸습니다. 10년을 넘게 별 불편함을 모르고 있었나 봅니다. 여러분들은 이런 경험 없으신가요? url : https://eond.com/test2 id : test11@gmail.com pw : test11 테스트 방법 로그인 후, 게시판 설정 > 분류관리에서 테스트 가능합니다. ps. 작업한 소스입니다. 필요하신 분은 가져다 쓰세요. #menu{ .simpleTree{ li{ margin-top: .5rem; padding-top: .5rem; border-top: 1px dashed #000; display: flex; align-content: center; justify-content: flex-start; span{ //display: inline-block; clear: left; white-space: nowrap; padding: .5rem 1rem; min-width: 6rem; font-size: 14px; cursor: pointer !important; border-radius: 4px; border: 1px dotted #bbb; &:hover{ background: #eee; } display: flex; align-items: center; justify-content: center; } a{ padding: .8rem; border: 1px dotted #999; margin: 0 .2rem; border-radius: 4px; &:hover{ background: #eee; } display: flex; align-items: center; } &.line-over,&.line-over-last{ margin-top: 1rem; //padding: .5rem 0; background: #eee; height: .8rem; } } .doc{ } } }
이온디
이온디 8년 전
참조 : bodex 문서수정내역 삽입위치 : ./modules/board/skins/sketchbook5_eond/_read.html 코드 : <style> .docEditLog_wrap{margin-bottom:40px;padding:0 15px;} .docEditLog_wrap .title{margin: 0 0 1em 0 !important;line-height: 1;font-size: 1em;color: #555 !important;} .docEditLog_wrap tab… 참조 : bodex 문서수정내역 삽입위치 : ./modules/board/skins/sketchbook5_eond/_read.html 코드 : <style> .docEditLog_wrap{margin-bottom:40px;padding:0 15px;} .docEditLog_wrap .title{margin: 0 0 1em 0 !important;line-height: 1;font-size: 1em;color: #555 !important;} .docEditLog_wrap table{border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5;table-layout:fixed;width:100%;} .docEditLog_wrap table th{padding-top:8px;padding-bottom:8px;padding-left: 4px;color: #999;line-height: 18px;font-size: 0.95em;text-align:left;} .docEditLog_wrap table td{border-top:1px solid #ebebeb;padding-top:5px;padding-bottom:5px;} .docEditLog_wrap .no {width:40px;} .docEditLog_wrap .author {width:60px;} .docEditLog_wrap .date {width:80px;} .docEditLog_wrap .ip {width:100px;} .docEditLog_wrap .content {width:;} </style> <div class="docEditLog_wrap" cond="$logged_info->is_admin"> {@ $oDB = &DB::getInstance(); $query = $oDB->_query("SELECT * FROM xe_document_histories where document_srl = ".$document_srl); $result = $oDB->_fetch($query); $no=1; } <h4 class="title">History</h4> <table> <thead> <tr> <th class="no">#</th> <th class="author">글쓴이</th> <th class="date">변경날짜</th> <th class="ip">변경아이피</th> <th class="content">변경내용</th> </tr> </thead> <block loop="$result=>$getHistory" class="clearBar"> <tr> <td class="no">{$no++}</td> <td class="author">{$getHistory->nick_name}</td> <td class="date"><span title="{zdate($getHistory->regdate,'Y.m.d H:s:i')}">{zdate($getHistory->regdate,"Y.m.d")}</span></td> <td class="ip">{$getHistory->ipaddress}</td> <td class="content"> {@ $_tmp = htmlspecialchars(str_replace(array('&lt;', '&gt;', '&quot;', '&nbsp;'), array('<', '>', '"', ' '), cut_str(strip_tags($getHistory->content), 250, '...'))); $_tmp = trim($_tmp) ? $_tmp:'...&nbsp;'; } {$_tmp} </td> </tr> </block> </table> </div> XE 문서수정내역 애드온 만들기에서 필요한 방법 및 기능 1. 애드온 만드는 방법 2. 글보기에서 원하는 위치에 출력하는 방법 3. 관리자만 보기 혹은 원하는 그룹만 보기 설정하는 기능 4. 로그 삭제하기 기능 [2.0] 5. 펼쳐보기 기능 [2.0]
?
geusgod 9년 전
@charset "utf-8"; /* Element Reset */ body,table,input,textarea,select,button{font-family:Tahoma,Geneva,sans-serif;font-size:12px} img{border:0} /* Button */ .btn{position:relative;display:inline-block;vertical-align:middle} .btn *{display:inline-block;padding:0 8px;font-size:12p… @charset "utf-8"; /* Element Reset */ body,table,input,textarea,select,button{font-family:Tahoma,Geneva,sans-serif;font-size:12px} img{border:0} /* Button */ .btn{position:relative;display:inline-block;vertical-align:middle} .btn *{display:inline-block;padding:0 8px;font-size:12px;height:24px;line-height:22px;margin:0;font-weight:bold !important;color:#fff;text-decoration:none !important;border:1px solid;cursor:pointer;overflow:visible;border-radius:3px;box-shadow:inset 0 0 1px #fff;background-color:#666;text-shadow:0 -1px 0 #333;zoom:1} .btn *[type=submit][disabled=disabled], .btn *[type=button][disabled=disabled]{opacity:.5;*filter:alpha(opacity=50)} .btn a, .btn button[type=button]{border-color:#ccc;color:#333 !important;background:#eee -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#ddd));background:#eee -moz-linear-gradient(top,#fff,#ddd);background-color:#eee;text-shadow:1px 1px 0 #fff;filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#ffffff, endColorStr=#dddddd)} .btn input, .btn button[type=submit]{border-color:#666;background:#333 -webkit-gradient(linear,0% 0%,0% 100%,from(#777),to(#777),color-stop(0.5,#333),color-stop(0.5,#000)) !important;background:#333 -moz-linear-gradient(top,#777,#000) !important;background-color:#333 !important;color:#ffc !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#777777, endColorStr=#333333)} .btn a{height:22px} .btn.medium *{padding:0 12px;font-size:16px;height:30px;line-height:28px} .btn.medium a{height:28px} .btn.large *{padding:0 18px;font-size:22px;height:36px;line-height:34px} .btn.large a{height:34px} /* Button - Regucy */ span.button, a.button{position:relative;display:inline-block;vertical-align:top} span.button *, a.button *{display:inline-block;padding:0 8px;font-size:12px;height:24px;line-height:22px;margin:0;font-weight:bold !important;color:#fff;text-decoration:none !important;border:1px solid;cursor:pointer;overflow:visible;border-radius:3px;box-shadow:inset 0 0 1px #fff;background-color:#666;text-shadow:0 -1px 0 #333;zoom:1} span.button *[type=submit][disabled=disabled], span.button *[type=button][disabled=disabled]{opacity:.5;*filter:alpha(opacity=50)} a.button span, span.button button[type=button]{border-color:#ccc;color:#333 !important;background:#eee -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#ddd));background:#eee -moz-linear-gradient(top,#fff,#ddd);background-color:#eee;text-shadow:1px 1px 0 #fff;filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#ffffff, endColorStr=#dddddd)} span.button input, span.button button[type=submit]{border-color:#666;background:#333 -webkit-gradient(linear,0% 0%,0% 100%,from(#777),to(#777),color-stop(0.5,#333),color-stop(0.5,#000));background:#333 -moz-linear-gradient(top,#777,#000);background-color:#333;color:#ffc !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#777777, endColorStr=#333333)} a.button span{height:22px} /* Button Area */ .btnArea{margin:1em 0;text-align:right;zoom:1} .btnArea:after{content:"";display:block;clear:both} .btnArea .etc{float:left} /* Text Button */ input[type=submit].text, input[type=button].text, button[type=submit].text, button[type=button].text{border:0;overflow:visible;padding:0;margin:0 4px 0 0;color:#33a !important;background:none;text-decoration:underline;cursor:pointer} /* Popup Menu Area */ #popup_menu_area{position:absolute;background:#fff;border:1px solid #e9e9e9;border-radius:5px;padding:10px;line-height:1.3;box-shadow:0 0 6px #666;font-size:12px;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135, strength=5)} #popup_menu_area ul{list-style:none;margin:0;padding:0} #popup_menu_area li{margin:0;padding:0} #popup_menu_area a{text-decoration:none;color:#333} #popup_menu_area a:hover, #popup_menu_area a:avtive, #popup_menu_area a:focus{text-decoration:underline} /* Message */ .message{border:1px solid #ddd;background:#f8f8f8;margin:1em 0;padding:0 1em;border-radius:5px;line-height:1.4;font-size:12px} body>.message{margin:1em} .message p{margin:1em 0 !important} .message em{font-style:normal;color:#e00} .message.info, .message.error, .message.update{padding-left:55px} .message.info{border-color:#E0E8EC;background:#EDF9FF url(../../common/img/msg.Info.png) no-repeat 1em .5em} .message.error{border-color:#EFDCDC;background:#FFECEC url(../../common/img/msg.error.png) no-repeat 1em .5em} .message.update{border-color:#EAE9DC;background:#FFFDEF url(../../common/img/msg.update.png) no-repeat 1em .5em} /* Waiting for server response */ .wfsr{display:none;position:absolute;position:fixed;left:0;top:0;z-index:100; border:1px solid #EAE9DC;background:#FFFDEF url(../../common/img/msg.loading.gif) no-repeat 1em .5em;margin:1em;padding:1em 1em 1em 55px;border-radius:5px;line-height:1.4;font-size:12px;font-weight:bold} /* Waiting for server response - Modal Window */ .wfsr_fog{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:100} .wfsr_fog .bg{position:absolute;position:fixed;background:#000;_background:none;width:100%;height:100%;opacity:.5;z-index:2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);zoom:1} .wfsr_fog .ie6{position:absolute;left:0;top:0;width:100%;height:100%;border:0;opacity:0;filter:alpha(opacity=0);z-index:1} 아래는 몇군데 확인하고 넘어가야 부분들이다. /* Element Reset */ body,table,input,textarea,select,button{font-family:Tahoma,Geneva,sans-serif;font-size:12px} img{border:0} /* Text Button */ input[type=submit].text, input[type=button].text, button[type=submit].text, button[type=button].text{border:0;overflow:visible;padding:0;margin:0 4px 0 0;color:#33a !important;background:none;text-decoration:underline;cursor:pointer} /* Popup Menu Area */ #popup_menu_area{position:absolute;background:#fff;border:1px solid #e9e9e9;border-radius:5px;padding:10px;line-height:1.3;box-shadow:0 0 6px #666;font-size:12px;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135, strength=5)} #popup_menu_area ul{list-style:none;margin:0;padding:0} #popup_menu_area li{margin:0;padding:0} #popup_menu_area a{text-decoration:none;color:#333} #popup_menu_area a:hover, #popup_menu_area a:avtive, #popup_menu_area a:focus{text-decoration:underline} /* Message */ .message{border:1px solid #ddd;background:#f8f8f8;margin:1em 0;padding:0 1em;border-radius:5px;line-height:1.4;font-size:12px} body>.message{margin:1em} .message p{margin:1em 0 !important} .message em{font-style:normal;color:#e00} .message.info, .message.error, .message.update{padding-left:55px} .message.info{border-color:#E0E8EC;background:#EDF9FF url(../../common/img/msg.Info.png) no-repeat 1em .5em} .message.error{border-color:#EFDCDC;background:#FFECEC url(../../common/img/msg.error.png) no-repeat 1em .5em} .message.update{border-color:#EAE9DC;background:#FFFDEF url(../../common/img/msg.update.png) no-repeat 1em .5em} /* Waiting for server response */ .wfsr{display:none;position:absolute;position:fixed;left:0;top:0;z-index:100; border:1px solid #EAE9DC;background:#FFFDEF url(../../common/img/msg.loading.gif) no-repeat 1em .5em;margin:1em;padding:1em 1em 1em 55px;border-radius:5px;line-height:1.4;font-size:12px;font-weight:bold} /* Waiting for server response - Modal Window */ .wfsr_fog{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:100} .wfsr_fog .bg{position:absolute;position:fixed;background:#000;_background:none;width:100%;height:100%;opacity:.5;z-index:2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);zoom:1} .wfsr_fog .ie6{position:absolute;left:0;top:0;width:100%;height:100%;border:0;opacity:0;filter:alpha(opacity=0);z-index:1}
?
클론 9년 전
@charset "utf-8"; /* Element Reset */ body,table,input,textarea,select,button{font-family:Tahoma,Geneva,sans-serif;font-size:12px} img{border:0} /* Button */ .btn{position:relative;display:inline-block;vertical-align:middle} .btn *{display:inline-block;padding:0 8px;font-size:12p… @charset "utf-8"; /* Element Reset */ body,table,input,textarea,select,button{font-family:Tahoma,Geneva,sans-serif;font-size:12px} img{border:0} /* Button */ .btn{position:relative;display:inline-block;vertical-align:middle} .btn *{display:inline-block;padding:0 8px;font-size:12px;height:24px;line-height:22px;margin:0;font-weight:bold !important;color:#fff;text-decoration:none !important;border:1px solid;cursor:pointer;overflow:visible;border-radius:3px;box-shadow:inset 0 0 1px #fff;background-color:#666;text-shadow:0 -1px 0 #333;zoom:1} .btn *[type=submit][disabled=disabled], .btn *[type=button][disabled=disabled]{opacity:.5;*filter:alpha(opacity=50)} .btn a, .btn button[type=button]{border-color:#ccc;color:#333 !important;background:#eee -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#ddd));background:#eee -moz-linear-gradient(top,#fff,#ddd);background-color:#eee;text-shadow:1px 1px 0 #fff;filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#ffffff, endColorStr=#dddddd)} .btn input, .btn button[type=submit]{border-color:#666;background:#333 -webkit-gradient(linear,0% 0%,0% 100%,from(#777),to(#777),color-stop(0.5,#333),color-stop(0.5,#000)) !important;background:#333 -moz-linear-gradient(top,#777,#000) !important;background-color:#333 !important;color:#ffc !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#777777, endColorStr=#333333)} .btn a{height:22px} .btn.medium *{padding:0 12px;font-size:16px;height:30px;line-height:28px} .btn.medium a{height:28px} .btn.large *{padding:0 18px;font-size:22px;height:36px;line-height:34px} .btn.large a{height:34px} /* Button - Regucy */ span.button, a.button{position:relative;display:inline-block;vertical-align:top} span.button *, a.button *{display:inline-block;padding:0 8px;font-size:12px;height:24px;line-height:22px;margin:0;font-weight:bold !important;color:#fff;text-decoration:none !important;border:1px solid;cursor:pointer;overflow:visible;border-radius:3px;box-shadow:inset 0 0 1px #fff;background-color:#666;text-shadow:0 -1px 0 #333;zoom:1} span.button *[type=submit][disabled=disabled], span.button *[type=button][disabled=disabled]{opacity:.5;*filter:alpha(opacity=50)} a.button span, span.button button[type=button]{border-color:#ccc;color:#333 !important;background:#eee -webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#ddd));background:#eee -moz-linear-gradient(top,#fff,#ddd);background-color:#eee;text-shadow:1px 1px 0 #fff;filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#ffffff, endColorStr=#dddddd)} span.button input, span.button button[type=submit]{border-color:#666;background:#333 -webkit-gradient(linear,0% 0%,0% 100%,from(#777),to(#777),color-stop(0.5,#333),color-stop(0.5,#000));background:#333 -moz-linear-gradient(top,#777,#000);background-color:#333;color:#ffc !important;filter:progid:DXImageTransform.Microsoft.gradient(startColorStr=#777777, endColorStr=#333333)} a.button span{height:22px} /* Button Area */ .btnArea{margin:1em 0;text-align:right;zoom:1} .btnArea:after{content:"";display:block;clear:both} .btnArea .etc{float:left} /* Text Button */ input[type=submit].text, input[type=button].text, button[type=submit].text, button[type=button].text{border:0;overflow:visible;padding:0;margin:0 4px 0 0;color:#33a !important;background:none;text-decoration:underline;cursor:pointer} /* Popup Menu Area */ #popup_menu_area{position:absolute;background:#fff;border:1px solid #e9e9e9;border-radius:5px;padding:10px;line-height:1.3;box-shadow:0 0 6px #666;font-size:12px;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135, strength=5)} #popup_menu_area ul{list-style:none;margin:0;padding:0} #popup_menu_area li{margin:0;padding:0} #popup_menu_area a{text-decoration:none;color:#333} #popup_menu_area a:hover, #popup_menu_area a:avtive, #popup_menu_area a:focus{text-decoration:underline} /* Message */ .message{border:1px solid #ddd;background:#f8f8f8;margin:1em 0;padding:0 1em;border-radius:5px;line-height:1.4;font-size:12px} body>.message{margin:1em} .message p{margin:1em 0 !important} .message em{font-style:normal;color:#e00} .message.info, .message.error, .message.update{padding-left:55px} .message.info{border-color:#E0E8EC;background:#EDF9FF url(../../common/img/msg.Info.png) no-repeat 1em .5em} .message.error{border-color:#EFDCDC;background:#FFECEC url(../../common/img/msg.error.png) no-repeat 1em .5em} .message.update{border-color:#EAE9DC;background:#FFFDEF url(../../common/img/msg.update.png) no-repeat 1em .5em} /* Waiting for server response */ .wfsr{display:none;position:absolute;position:fixed;left:0;top:0;z-index:100; border:1px solid #EAE9DC;background:#FFFDEF url(../../common/img/msg.loading.gif) no-repeat 1em .5em;margin:1em;padding:1em 1em 1em 55px;border-radius:5px;line-height:1.4;font-size:12px;font-weight:bold} /* Waiting for server response - Modal Window */ .wfsr_fog{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:100} .wfsr_fog .bg{position:absolute;position:fixed;background:#000;_background:none;width:100%;height:100%;opacity:.5;z-index:2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);zoom:1} .wfsr_fog .ie6{position:absolute;left:0;top:0;width:100%;height:100%;border:0;opacity:0;filter:alpha(opacity=0);z-index:1} 아래는 몇군데 확인하고 넘어가야 부분들이다. /* Element Reset */ body,table,input,textarea,select,button{font-family:Tahoma,Geneva,sans-serif;font-size:12px} img{border:0} /* Text Button */ input[type=submit].text, input[type=button].text, button[type=submit].text, button[type=button].text{border:0;overflow:visible;padding:0;margin:0 4px 0 0;color:#33a !important;background:none;text-decoration:underline;cursor:pointer} /* Popup Menu Area */ #popup_menu_area{position:absolute;background:#fff;border:1px solid #e9e9e9;border-radius:5px;padding:10px;line-height:1.3;box-shadow:0 0 6px #666;font-size:12px;filter:progid:DXImageTransform.Microsoft.Shadow(color=#999999,direction=135, strength=5)} #popup_menu_area ul{list-style:none;margin:0;padding:0} #popup_menu_area li{margin:0;padding:0} #popup_menu_area a{text-decoration:none;color:#333} #popup_menu_area a:hover, #popup_menu_area a:avtive, #popup_menu_area a:focus{text-decoration:underline} /* Message */ .message{border:1px solid #ddd;background:#f8f8f8;margin:1em 0;padding:0 1em;border-radius:5px;line-height:1.4;font-size:12px} body>.message{margin:1em} .message p{margin:1em 0 !important} .message em{font-style:normal;color:#e00} .message.info, .message.error, .message.update{padding-left:55px} .message.info{border-color:#E0E8EC;background:#EDF9FF url(../../common/img/msg.Info.png) no-repeat 1em .5em} .message.error{border-color:#EFDCDC;background:#FFECEC url(../../common/img/msg.error.png) no-repeat 1em .5em} .message.update{border-color:#EAE9DC;background:#FFFDEF url(../../common/img/msg.update.png) no-repeat 1em .5em} /* Waiting for server response */ .wfsr{display:none;position:absolute;position:fixed;left:0;top:0;z-index:100; border:1px solid #EAE9DC;background:#FFFDEF url(../../common/img/msg.loading.gif) no-repeat 1em .5em;margin:1em;padding:1em 1em 1em 55px;border-radius:5px;line-height:1.4;font-size:12px;font-weight:bold} /* Waiting for server response - Modal Window */ .wfsr_fog{position:absolute;top:0;left:0;width:100%;_height:100%;min-height:100%;z-index:100} .wfsr_fog .bg{position:absolute;position:fixed;background:#000;_background:none;width:100%;height:100%;opacity:.5;z-index:2;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);zoom:1} .wfsr_fog .ie6{position:absolute;left:0;top:0;width:100%;height:100%;border:0;opacity:0;filter:alpha(opacity=0);z-index:1}
이온디
이온디 10년 전
구글 early access에서는 한글 폰트를 지원해주기 때문에 쉽게 웹사이트에 적용할 수 있죠. 이번에 교육 준비를 하던 중 구글 early access에서 새로운 한글 폰트가 있어서 공유합니다. Hanna (Korean) Link http://fonts.googleapis.com/earlyaccess/hanna.css Example font-family: 'Hanna', serif; 무엇을 창공에 아니한 우리… 구글 early access에서는 한글 폰트를 지원해주기 때문에 쉽게 웹사이트에 적용할 수 있죠. 이번에 교육 준비를 하던 중 구글 early access에서 새로운 한글 폰트가 있어서 공유합니다. Hanna (Korean) Link http://fonts.googleapis.com/earlyaccess/hanna.css Example font-family: 'Hanna', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() Jeju Gothic (Korean) Link http://fonts.googleapis.com/earlyaccess/jejugothic.css Example font-family: 'Jeju Gothic', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() Jeju Hallasan (Korean) Link http://fonts.googleapis.com/earlyaccess/jejuhallasan.css Example font-family: 'Jeju Hallasan', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() Jeju Myeongjo (Korean) Link http://fonts.googleapis.com/earlyaccess/jejumyeongjo.css Example font-family: 'Jeju Myeongjo', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() KoPub Batang (Korean) Link http://fonts.googleapis.com/earlyaccess/kopubbatang.css Example font-family: 'KoPub Batang', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() 아래는 이미 알고 있는 나눔 폰트죠. 다시 한번 공유합니다. Nanum Brush Script (Korean) Link http://fonts.googleapis.com/earlyaccess/nanumbrushscript.css Example font-family: 'Nanum Brush Script', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() Nanum Gothic (Korean) Link http://fonts.googleapis.com/earlyaccess/nanumgothic.css Example font-family: 'Nanum Gothic', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() Nanum Gothic Coding (Korean) Link http://fonts.googleapis.com/earlyaccess/nanumgothiccoding.css Example font-family: 'Nanum Gothic Coding', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() Nanum Myeongjo (Korean) Link http://fonts.googleapis.com/earlyaccess/nanummyeongjo.css Example font-family: 'Nanum Myeongjo', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() Nanum Pen Script (Korean) Link http://fonts.googleapis.com/earlyaccess/nanumpenscript.css Example font-family: 'Nanum Pen Script', serif; 무엇을 창공에 아니한 우리의 위하여서 사막이다. 되는 뜨거운지라, 심장의 것이다. 황금시대의 무엇을 우리의 아니한 따뜻한 황금시대다. 따뜻한 심장의 하여도 위하여 가진 원대하고, 설레는 아니다. 대중을 듣기만 작고 아니다. 보배를 무엇을 너의 오직 맺어, 그들의 더운지라 이상 보라. 온갖 그것은 공자는 긴지라 날카로우나 인간은 노년에게서 예가 봄바람이다. 대고, 평화스러운 그와 없으면 바이며, 과실이 피다. 것은 물방아 그들에게 이 노래하며 용기가 유소년에게서 이것이다. 소금이라 사랑의 방지하는 같이, 군영과 운다. 가슴이 인간이 고행을 그들은 원질이 못할 관현악이며, 봄바람이다. 설레는 생생하며, 일월과 이것이다. 1234567890!@#$%^&*() 테마 적용 방법 1. 테마의 functions.php에 아래의 코드를 넣어 css 파일을 불러옵니다. 아래 코드에서 링크에는 위에 있는 폰트의 url 주소를 붙이면 됩니다. function hwangc_enqueue_styles() { wp_enqueue_style( 'hwangc-jeju', '링크', array(), null ); } add_action( 'wp_enqueue_scripts', 'hwangc_enqueue_styles', PHP_INT_MAX); 1 2 3 4 function hwangc_enqueue_styles() { wp_enqueue_style( 'hwangc-jeju', '링크', array(), null ); } add_action( 'wp_enqueue_scripts', 'hwangc_enqueue_styles', PHP_INT_MAX); 2. 예를 들어 Jeju Hallasan을 불러왔다면 원하는 영역에 아래의 font-family를 지정합니다. 아래 예제에서는 body 전체에 적용한 예입니다. body { font-family: 'Jeju Hallasan', serif; } 1 2 3 body { font-family: 'Jeju Hallasan', serif; } 마치며 한글 폰트가 조금씩 늘어가는 것을 보니 기분이 좋네요. 구글 폰트에서 한글 폰트의 수는 영어에 비하면 턱 없이 부족하죠. 앞으로 더 많은 한글 폰트가 공유되어 인터넷에 자랑스런 한글이 가득하길 바래봅니다. 그럼 오늘도 즐거운 블로깅 하세요!
이온디
이온디 10년 전
한국의 전통 색상표 출처 : http://study4you.kr/xe/pds/752 무채색계(無彩色界) - 10색 흑백 1D1E23 93,89,83,52 백색 FFFFFF 0,0,0,0 회색 A4AAA7 38,27,31,… 한국의 전통 색상표 출처 : http://study4you.kr/xe/pds/752 무채색계(無彩色界) - 10색 흑백 1D1E23 93,89,83,52 백색 FFFFFF 0,0,0,0 회색 A4AAA7 38,27,31,0 구색 959EA2 45,32,32,0 치색 616264 72,64,62,4 연지회색 6F606E 55,58,40,20 설백색 DDE7E7 12,4,7,0 유배색 E7E6D2 9,5,18,0 지배색 E3DDCB 6,6,17,4 소색 D8C8B2 10,15,26,5 적색계(赤色界) - 21색 적색 B82647 21,98,68,8 홍색 F15B5B 0,80,60,0 적토색 9F494C 29,80,64,17 휴색 683235 40,80,66,44 갈색 966147 31,61,73,21 호박색 BD7F41 21,51,84,8 추향색 C38866 19,48,61,6 육색 D77964 11,62,59,2 주색 CA5E59 15,75,62,4 주홍색 C23352 18,94,60,5 담주색 EA8474 4,59,50,0 진홍색 BF2F7B 20,94,17,4 선홍색 CE5A9E 16,79,2,0 연지색 BE577B 19,77,28,7 훈색 D97793 9,64,20,2 진분홍색 DB4E9C 9,84,0,0 분홍색 E2A6B4 7,39,14,1 연분홍색 E0709B 6,69,11,1 장단색 E16350 6,75,70,1 석간주색 8A4C44 30,71,65,30 흑홍색 8E6F80 40,54,31,15 청록색계(靑綠色界) - 32색 청색 0B6DB7 89,56,0,0 벽색 00B5E3 73,5,4,0 천청색 5AC6D0 59,0,20,0 담청색 00A6A9 96,4,40,0 취람색 5DC19B 62,0,51,0 양람색 6C71B5 64,58,0,0 벽청색 448CCB 72,36,0,0 청현색 006494 99,59,22,3 감색 026892 93,57,26,2 남색 6A5BA8 68,73,0,0 연람색 7963AB 60,69,0,0 벽람색 6979BB 64,52,0,0 숙람색 45436C 86,84,40,9 군청색 4F599F 80,73,6,0 녹색 417141 82,44,95,9 명록색 16AA52 81,5,94,0 유록색 6AB048 64,8,97,0 유청색 569A49 72,20,96,1 연두색 C0D84D 29,0,87,0 춘유록색 CBDD61 24,0,78,0 청록색 009770 97,15,74,0 진초록색 0A8D5E 87,26,82,1 초록색 1C9249 85,20,98,2 흑록색 2E674E 89,52,83,9 비색 72C6A5 55,0,45,0 옥색 9ED6C0 38,0,30,0 삼청색 5C6EB4 71,59,0,0 뇌록색 397664 74,27,59,6 양록색 31B675 74,0,74,0 하염색 245441 83,43,75,39 흑청색 1583AF 84,39,17,0 청벽색 18B4E9 69,8,0,0 황색계(黃色界) - 16색 황색 F9D537 3,13,89,0 유황색 EBBC6B 6,25,67,1 명황색 FEE134 2,7,89,0 담황색 F5F0C5 4,2,27,0 송화색 F8E77F 4,4,62,0 자황색 F7B938 2,29,89,0 행황색 F1A55A 3,40,73,0 두록색 E5B98F 8,27,45,1 적황색 ED9149 4,51,80,0 토황색 C8852C 18,50,97,5 지황색 D6B038 14,26,91,3 토색 9A6B31 30,54,91,20 치자색 F6CF7A 3,18,61,0 홍황색 DDA28F 9,39,38,2 자황색 BB9E8B 22,33,40,7 금색 코드값이 없습니다. 자색계(紫色界) - 11색 자색 6D1B43 41,95,45,40 자주색 89236A 40,96,18,20 보라색 9C4998 42,85,1,1 홍람색 733E7F 58,85,10,15 포도색 5D3462 70,90,35,20 청자색 403F95 90,90,1,1 벽자색 84A7D3 47,25,1,1 회보라색 B3A7CD 28,32,1,1 담자색 BEA3C9 23,36,1,1 다자색 47302E 75,86,85,35 적자색 BA4160 15,86,42,13
이온디
이온디 10년 전
천연소가죽(물소,버팔로, 내츄럴가죽)과 독고가죽(속피가죽) 구분요령 ⊙ 소파에 사용되는 가죽 1.물소가죽(버팔로, 내츄럴가죽)은 부위에 따라 다르게 나타납니다. -목,배부분은 주름이 크고 많으므로 소파, 가방, 핸드백등의 옆, 밑,뒷부분등에 사용합니다 -등,허리,엉덩이 부분은 가죽이 매끈하여 앞쪽, 윗부분, 주로 사람이 많이 사용하는 부분에 사용합니다. ※ 가죽소파의 경우 부위별로 무늬가 다른 것을 발견할 수 있습니다. 이것은 가죽의 하자가 아니라 오… 천연소가죽(물소,버팔로, 내츄럴가죽)과 독고가죽(속피가죽) 구분요령 ⊙ 소파에 사용되는 가죽 1.물소가죽(버팔로, 내츄럴가죽)은 부위에 따라 다르게 나타납니다. -목,배부분은 주름이 크고 많으므로 소파, 가방, 핸드백등의 옆, 밑,뒷부분등에 사용합니다 -등,허리,엉덩이 부분은 가죽이 매끈하여 앞쪽, 윗부분, 주로 사람이 많이 사용하는 부분에 사용합니다. ※ 가죽소파의 경우 부위별로 무늬가 다른 것을 발견할 수 있습니다. 이것은 가죽의 하자가 아니라 오히려 고급 천연가죽(물소,버팔로, 내츄럴가죽)임을 유념하시길... . 전체면이 고른 것은 독고가죽(속피가죽의 은면코팅)입니다. 2.독고가죽이란? 1)소가죽에서 은면층(가죽겉판)을 한 겹을 벗겨낸다음 그 다음 가죽을 가공 염색처리를 하여 가죽처럼 만든 것을 말합니다. 2)보통가죽가격보다 1/2가격이므로 판촉물 가죽에 많이 사용하며, 소파에는 저렴한 가격대에 사용합니다. 3)두께가 일정하고 은면코팅이 두껍지 않으며, 늘리거나 구긴 후 복원력이 좋으면 좋은 가죽임. 실용성있는 가죽을 원하시면 양피보다 우피가 내구성이 좋습니다. 4)은면이 매끈하며 깔끔하고 시각적인 아름다움이 있는 것도 좋은 가죽이라 할 수 있습니다. ※ 소파에서 사용되는 대부분의 가죽은 우피(소가죽)입니다. 소비자가 가구점에서 가죽소파를 구입하려할 경우, 물소가죽, 버팔로가죽, 내츄럴가죽 또한 천연소가죽, 면피가죽,속피가죽,독고가죽. 엠보가죽 등 여러 가지로 가죽에 대한 설명을 듣게 되는데 이해하는데 난감할 경우가 많습니다. 1)가구점에서 물소가죽, 버팔로가죽, 내츄럴가죽을 혼용하여 사용하며, 두께는 약 3mm내외, 평당 약 2,500원-3,000원 2) 독고가죽은 가구점에서 속피가죽으로 불리우고 있습니다.(가구점에서 물소 또는 버팔로가죽이라하지않고 소가죽 또는 천연가죽이라 하면 대부분 속피가죽을 말합니다.) 또한 엠보가죽은 속피가죽을 은면코팅하면서 울퉁불퉁하게 무늬를 나타나게한 가죽을 말하며 은면이 깔끔한 가죽에 비해 약간 비싼편입니다. 두께는 약1.5mm내외이며 평당 단가는 약1.500원 3)최근들어 면피 가죽을 사용하는 소파가 많아졌습니다. 면피가죽은 속피가죽에 비해 부드럽습니다. 가격도 조금 비싸구요 일반적으로 가방,핸드백 구두 지갑 소파등에서 90%이상이 소가죽을 사용하고 있다 . .외국소한마리는 50-60평 .한국소한마리 40-44평 .카프(calf)는 6개월미만의 송아지 가죽을 말한다.(한마리8-11평) .버팔로가죽은17-21평 .크기는 보통 1평(스퀘어 피 : 30.38 X 30.39 =929 cm2) [출처] ◈ 천연소가죽(물소,버팔로, 내츄럴가죽)과 독고가죽(속피가죽) 구분요령|작성자 아르누보
이온디
이온디 10년 전
※ 비혼(非婚) 여성들의 귀농, 귀촌 이야기를 담은 기획 “이 언니의 귀촌” 기사가 연재됩니다. 이 시리즈는 한국언론진흥재단 언론진흥기금의 지원을 통해 제작됩니다. [편집자 주] ‘여자들을 위한 민박이 있다면 좋겠다’ 가평으로 이주하면서 주 40시간 전일제 노동 시장을 떠나기로 이미 마음먹은 터, 다양한 방식의 먹고 살 길을 개척해야 한다. 게스트하우스에 대한 생각은 몇 년 전부터 막연하게, 혹은 구체적으로 가지고 있었던 것 같다. 혼자 여행을… ※ 비혼(非婚) 여성들의 귀농, 귀촌 이야기를 담은 기획 “이 언니의 귀촌” 기사가 연재됩니다. 이 시리즈는 한국언론진흥재단 언론진흥기금의 지원을 통해 제작됩니다. [편집자 주] ‘여자들을 위한 민박이 있다면 좋겠다’ 가평으로 이주하면서 주 40시간 전일제 노동 시장을 떠나기로 이미 마음먹은 터, 다양한 방식의 먹고 살 길을 개척해야 한다. 게스트하우스에 대한 생각은 몇 년 전부터 막연하게, 혹은 구체적으로 가지고 있었던 것 같다. 혼자 여행을 다니는 일이 많아지면서 ‘혼자 여행하는 여자들에게 편안하고 안전한 숙소가 참 별로 없구나’ 그런 생각이 자연스럽게 들었다. ▲ 바람에 나부끼는 빨래. 햇볕과 바람 내음이 기대된다. ©펭 서울에서 여생을 다 보낼 마음도 없었던 터라 ‘언젠가’ 햇볕이 잘 드는 앞마당과 뒷마당이 있는 시골집살이를 꿈꾸며 막연하게 ‘여자들을 위한 민박’을 상상하기도 했었다. 쉽게 말해, 누구나 한번쯤은 해봄직한 생각, “어디 조용한 곳에 가서 게스트하우스나 하면서 살아볼까?” 그런 정도였던 거다. 게다가 구체적인 생각이란 훨씬 더 간단했다. 햇볕이 꽉 찬 마당 가득히 천을 빨아 널고 바람에 넘실대는 것을 보며 나는 절대 대청마루에서 책은 읽지 않고 꼭! 낮잠이나 자야겠다는 생각. 한숨 자고 일어나서 천을 걷고 개켜 넣기 전에 꼭! 햇볕과 바람 내음을 맡아야지 하는 생각 정도였으니 말이다. 그렇게 막연하면서도, 엉뚱하게 구체적이었던 생각을 불현듯 실행에 옮기게 된 건 ‘둘이 살기에 너무 너르고, 난방비 걱정이 태산인, 조금쯤 적적할 법도 한 집’을 얻게 되면서부터다. 게스트하우스 = 난방비 벌이 첨에 지금 사는 집을 소개받았을 때 첫인상은 별로 살고 싶지 않은 집이었다. 일단 둘이 쓰기에는 너무 넓었다. 청소는 어떻게 할 것이며, 난방비는 또 어떻게 감당해야 하는가. 또, 산을 깎아 낸 단면이 고스란히 드러나는 곳에 비슷하게 들어앉은 집들이 있는 주변 환경 때문에 ‘투자’인지 ‘투기’인지 뭔지 모를 달갑지 않은 냄새가 풍기는 멀끔한 ‘전원주택’이었다. 나름 환경과 자연을 아끼며 살고 싶었던 지라, 자연을 훼손해 가며 지은 집에 산다는 것을 스스로 받아들이기 제법 어려웠다. 그러다 문득 딴 생각이 들었다. “어차피 이미 지어진 집이다. 누가 어떻게 쓸지가 더 중요한 것 아닌가.” 가진 자들이 가끔 쓰려고 크게 지어놓은 별장이 될 바에야 누구라도 들어가서 살면서 좋은 공간을 남들과 나눌 수 있다면, 그것이 공간을 낭비하지 않고 쓸모 있게 사용하는 것이 아니겠는가. 둘보다는 더 많은 사람들이 이 너른 공간을 공유하며 햇볕과 바람, 새소리와 풀벌레 소리를 즐길 수 있다고. 이렇게 애써 장황한 정당성을 찾고 나니 비로소 흐뭇해졌다. ▲ 손님이 남긴 흔적. "더울때는 바닥에 납작 누워 낮잠 자고. 늘어지게 자고 일어나서 햇볕에 잘 마른 시트를 접자. 햇볕 냄새는 덤으로." © 펭 가족과 연인들의 ‘천국’인지 ‘천지’인지, 삼척동자도 어른들 손에 이끌려 한 번쯤 다녀갔을 법한 이름난 휴양지 가평. ‘촌’에 걸 맞는 모든 조건을 갖추고도 가평은 ‘촌’으로 이주를 상상하면 떠오르는 타 지명들과 다른 느낌이다. 가족 단위가 휴양을 위해, 혹은 남녀 연인들이 둘만의 공간을 찾아 떠나올 법한 장소들이 즐비한 곳, 아니면 대학생 엠티 장소, 그것이 대체로 가평에 대한 짙은 인상이다. 그런 이미지 탓에, 홀로 여행하는 여성이나 혼자 조용히 쉬고 싶은 여자들이 절대 혼자 갈 법한 곳이라고 여겨지지 않는다. 그래서 우리는 굳이 여성전용 게스트하우스를 시작했다. 가족과 남녀 연인들의 휴양지라는 오명(?)을 쓰고 있는 가평에 혼자, 혹은 둘이 온 언니들이 갈 곳이 마땅치 않을 터이므로. 또 ‘가족과 남녀 연인’이라는 뻔한 공식을 깨기 위해. 게스트하우스라고 하지만 손님을 받는 날보다는 안받는 날이 더 많고 주인장의 사정으로 쉬는 날도 부지기수다. 게스트하우스 주인장이라고 하여 우리가 굉장히 사람을 좋아하고 사교적이라고 생각하면 큰 오산이다. 사람을 기피하고 칩거 생활을 좋아하는 정도는 아니지만, 낯을 좀 가리고 나름 까다로운 인간인 편이다. 우리는 노동보다는 쉼과 놀이를 중심으로 살고 싶었다. 난방비를 충당할 정도의 적당한 수의 손님이 목표였고, 과도한 노동은 절대 삼가고 싶었다. 그런데, 언니들에게 쾌적한 공간을 제공해 주고 싶은 욕심에 청소와 빨래, 정리 등 게스트하우스 관리를 위한 노동은 언제나 지나쳤다. 그래서 지속적으로 ‘적당함’을 찾기 위해 즉, 손님들에게 쾌적하면서도 우리가 과도한 노동으로 지치지 않을 수 있는 적당한 기준을 찾기 위해 온갖 궁리를 했다. 다른 종류의 단시간 노동도 겸하고 있고, 우리도 충분히 쉬고 놀아야 한다. 매달 손님을 받는 날을 최소로 정하고 그 날에만 손님을 받으려고 노력한다. 물론 가끔 예외는 있다. 한번은 여자 둘인데 묵을 수 있냐고 전화가 걸려왔다. 하필 그날은 쉬는 날이었고 그래서 안 된다고 하고 끊었는데, 다시 전화가 왔다. “저희가 중고등학생이라 여기 아니면 갈 데가 없어요.” 이런 경우에는 딱 자르기가 어렵다. 햇볕 중독의 나날 게스트하우스에 대한 구체적인 상상이 ‘햇볕에 천 말리고, 낮잠 자고, 말린 천에서 나는 햇볕과 바람 내음을 맡는 것’이었던 만큼, 게스트하우스 관리 노동에서 제일 신경을 쓰고 열심히 즐겁게 하는 일은 빨래와 청소 그리고 햇볕 소독이다. 종종 ‘햇볕에 천 말리는 즐거움 때문에 민박을 하고 있는 게 아닌가, 그렇다면 햇볕&자연바람 건조 서비스를 하는 세탁업이 더 낫지 않았을까’ 하는 조금 과장된 생각도 든다. ▲ 비단 나만 햇볕 중독은 아닌갑다. 빨래널기에 빠진 일군의 손님. © 펭 햇볕이 아깝다는 생각을 해본 적이 있는가? 늘 햇볕이 넘치는 데도 볕만 들면 뭐든 내다 말리고 싶어진다. 빨래는 당연하고 이불도 수시로 말리고, 행주와 걸레도 소독하고, 수저도 말리고, 도마와 칼도 내다 말리고, 가끔은 무거운 침대 매트리스도 내다 말린다. 볕만 보면 ‘오늘은 뭘 말리지?’ 거의 무조건반사다. 햇볕은 중독성이 있는 만큼 치명적인데, 자주 내다 말리는 천을 삭혀버리기도 하고 물건을 탈색시키기도 하지만 ‘볕바라기’를 멈추기 어렵다. 심지어 나 자신을 빨래 줄에 대롱 대롱 말리고 싶어지기도 한다. 물론, 햇볕만 즐기는 것은 아니다. 손님들과 나누는 즐거움도 있다. 아무리 가평이 가족과 남녀 연인들 천지라 해도, 혼자거나 둘이 여행하는 언니들이 어디에나 있듯이, 이곳이라고 없겠는가. 전세계 자유영혼들이 출몰하는 자라섬 재즈 페스티벌이 십 년 넘게 자리를 잡고 있는 만큼 매력 가득한 언니들도 꽤 가평을 찾는다. 손님들을 만나고 그들이 사는 세상, 나에게는 조금 낯선 세계와 그들의 일에 대한 이야기를 듣는 것은 꽤 즐거움이다. 꼼지락 꼼지락 ‘손놀이’ 공작 이것저것 꼼지락 거리를 함께 도모하는 것 역시 기쁨이다. 매년 봄이 되면 손님들과 함께 봄나물을 채집해 먹는다. 가평살이 첫해, 주변 여기저기에 불쑥불쑥 올라오는 새싹들을 보며 연신 먹을 수 있는 것인지 묻는 내게 양 언니는 이렇게 말했다. “사실상 거의 모든 풀들을 먹을 수 있고, 심지어 독초도 아주 어린 새싹이면 독이 생기기 전이라 먹을 수 있다”고. 사실인지 확인해 보지 않았지만 어쨌든 먹을 게 많다는 얘기 아닌가. 나물이 지천이니 사람들을 불러 모아 나물로 밥상을 차려먹자. 자연 채집에서 섭취에 이르는 전 과정을 내 손으로 직접 해보는 재미를 챙겨보자는 취지로. 그렇게 일명 ‘봄소밥-봄나물과 함께 하는 소박한 밥상’을 시작했다. 물론, 우리가 뜯어먹을 수 있는 나물은 굉장히 빈곤했다. 나물도감을 들고 산으로 들로 나가 사진과 일일이 비교해봐도 당최 알 수가 없다. 역시 이런 건 책으로 배울 수 없는 산 지식인 모양이다. 첫해 밥상에는 쑥, 돌나물, 망초나물, 고들빼기, 그리고 야생 미나리. 지나가던 동네 반장님이 우리의 수확량을 안쓰러워하시며 한 대야 뜯어주신 미나리가 아니었다면 허기를 달래기도 어려웠을 뻔했다. 해가 거듭되어 이제는 좀 나아졌다. 봄나물 뜯으러 가면 아는 척도 좀 한다. 가끔은 취나물, 머위나물, 가시오가피 새싹도 뜯어먹을 줄 알고, 이 녀석들을 다 뜯어먹지는 말아야 다음해 그 자리에 또 자란다는 것도 안다. 쉬는 날이 많지만 추석, 설날 등 명절에는 꼭 손님을 받는다. 명절이라고 모두가 ‘고향집’에 가거나 ‘고향집’에 가는 것을 즐거워하는 건 아니다. 집에 가기 싫거나 혼자 있기 적적해 하는 언니들을 위해 명절은 꼭 ‘대피소’가 필요하다. 이렇게 모인 언니들과 밤을 깎아 송편을 빚어먹거나 만두를 빚어 만둣국을 끓여먹는다. 자기가 먹을 개수만큼만 빚으면 된다고 하지만 모처럼 해보는 손놀이와 수다에 언니들은 그칠 줄 모르고 어느새 반죽은 다 떨어지고 만다. ▲ 한여름 어느날, 바닥에 옹기종기 모여앉아 면생리대 만들기에 몰입 중. © 펭 그리고 여기저기 돌아다니기보다 쉬러 온 언니들과는 꼼지락꼼지락 면생리대를 손바느질로 만들기도 한다. 면생리대를 이미 사용하는 언니들도 있고 처음 접해보는 언니들도 있다. 특히 기억에 남는 두 사람이 있다. 이틀 꼬박 면생리대 만들기에 심취했던 언니와 똑딱이 단추를 보내 온 언니. 이미 면생리대를 사용해 온 첫 번째 언니는 두레 생협에서 산 면생리대가 다 떨어졌다며 머무는 이틀 동안 면 생리대를 무려 다섯 개나 만들었다. 다른 한 명은 면 생리대를 처음 접해 본 생리통이 무척 심한 언니였다. 집에 돌아간 후에 자기 몸에 맞게 스스로 면생리대 패턴을 개발해서 사용하고 있단다. 완전 ‘면생리대 전도사’가 돼버렸다. 그리고 우리에게 똑딱이 단추를 한 묶음 보내왔다. “우리와 함께 면생리대 만들 때 똑딱이 단추가 모자랐던 게 생각나서 자기 것 살 때 좀 더 샀다”면서. 나도 가끔 머리 속이 복잡할 때는 면생리대를 만든다. 바느질은 정신을 정화시켜주는데 효험이 있다. 일단 바늘에 찔려 피 보지 않으려면 딴 생각은 금물이다. 반복적으로 한 땀 한 땀 나아가다 보면 좀더 일정한 간격의 바늘 땀에 욕심이 나고 몰입하게 마련이다. 그리고 여러 명이 둘러앉아 바느질을 하다 보면 자연스레 이어지는 공동의 적에 대한 뒷담화. 자매애도 나누고 정신건강 회복에도 도움이 된다. 비혼 촌(村)여자의 이웃들 ▲ 동네 양언니가 남긴 끄적거림. © 펭 비혼 여자로 이곳에 살면서 이웃과의 관계에서 그다지 불편한 점은 없었다. ‘촌’으로 이주할 때 가장 골칫거리가 되는 문제 중에 하나는 ‘사생활 침해’다. ‘거리 두기’가 익숙하지 않고 ‘남의 일을 내 일처럼’ 신경 써주는 농촌 ‘미덕’에 맞게 ‘관심과 애정’을 가지고 불쑥 거리를 좁혀 ‘참견’해 들어오는 통에 놀라는 경우가 많다. 다행히 나의 첫 이웃들은 아직 농촌의 ‘미덕’을 쌓지 못한, 다소 ‘도시 때’가 많이 남아있는 새내기 ‘촌’ 이주자들이었다. 그래서 그런지 딱히 사생활을 침해 받는다는 느낌을 받은 적은 없다. 오히려, 여러 세대가 빽빽이 들어차 살던 다세대 주택에 살 때는 전혀 느껴보지 못했던 이웃을 아는 즐거움이 있었다. 명절이거나 집안 행사가 있을 때마다 음식을 나눠주고, 잡초만 무성한 우리 텃밭을 진심으로 걱정하면서도 “뭐 그렇게 키울 수도 있지, 자꾸 하다 보면 알게 된다”며 우리를 좌절시키거나 가르치려 하지 않았던 아랫집 중년 부부. 항상 과하게 주문한 홈쇼핑 상품들을 나눠주던 건넛집 언니. 이사 온 첫해. 그 해는 유난히 눈이 많이 왔다. 일주일에 두 번 정도는 눈을 치웠던 것 같다. 겨울이면 으레 영하 15도 이하로 내려가는 기온 때문에 눈을 즉시 치우지 않으며 큰 낭패가 된다. 건넛집 언니는 눈치우기에 항상 앞장이었다. 아침마다 차로 아이를 유치원에 보내야 하기 때문이다. 지나치게 큰 창 덕택에 집안에서도 눈 치우는 언니 모습이 보인다. 그러면 나도 눈삽을 들고 나선다. 곧 아랫집 아주머니도 나오신다. 100미터가 넘는 내리막 길의 눈 치우는 일이 쉽지는 않았지만, 셋이서 서로 도와가며 눈을 치우다 보면 추위는커녕 몸과 마음이 따뜻해진다. 가끔은 남정네들이 다 일찍 일하러 나가버리는 바람에 매번 ‘힘 없는 여인들’끼리 눈을 치워야 한다고 볼멘소리를 누군가 하기도 했지만, 나는 이웃‘언니’들과 눈 치우는 일이 즐거웠다. 이웃끼리 공동의 편의를 위해 함께하는 소소한 즐거움. 물론, 결혼에 대해 묻거나 여자끼리 사는 것에 대한 호기심 섞인 내색이 전혀 없지는 않았다. 적어도 결혼을 지상 최대 과제로 우리에게 짐 지우려 하지 않았을 뿐. 다소 어려 보이는 덕에, 결혼할 나이로 안 보였던 탓(?)도 있다. 나는 그렇게 믿고 있다. 아니면 이미 늦었다고 생각했거나. 한번은 아랫집 아주머니가 “결혼은 안 하느냐”고 물어온 적이 있었다. 그리고는 아들 이야기를 꺼내셨다. “우리 아들도 마흔이 넘어 결혼해서 얼마 전에야 아기가 태어났다”하시며 “요즘은 결혼도 늦게 하고, ‘능력’만 있으면 혼자 사는 것도 나쁘진 않다”고. 건넛집 언니는 종종 “친구끼리 그렇게 사는 게 부럽다. 자기도 결혼 안하고 그렇게 살걸 그랬다”고 하다가도, 어떤 때는 “그래도 남자가 필요할 때가 있다”는 식의 얘기를 건네기도 했다. 결혼을 한 사람도 결혼 생활에 대한 의견이 뒤죽박죽이다. 누구나 그렇듯이. 비혼 여자로 촌에서 살아가는 우리는 약간은 ‘생소한’ 모습으로, 이웃들과 마찬가지로 뒤죽박죽인 삶을 살아가고 있다. 양 언니의 “사는 모양새가 남과 같지 않고 생소한 것이 신선하다”는 말을 애정 어린 응원이라 믿고, “놀 궁리만 하는 게으른 년”이라는 ‘비난’을 그 언니의 부러움이라 해석하며. 도시사람도 아니고 촌사람도 아닌 생소한 모양새로 살아가는 지금, 딱 좋다. 가끔 잊지 않고 들러주는 게스트하우스 단골친구들도 있다. ‘고립감’보다는 반촌의 ‘이중생활’이 주는 만족감이 더 크다. 그래서 인근에 집이 나올 때마다 지인들을 열심히 꼬셔보았다. 가평 와서 살자고. 혼자가 아니니 재미날 거라고. 아직까지 아무도 오지 않았다. 그러나 포기하지 않는다.
이온디
이온디 10년 전
jquery.html5form.zip http://codepen.io/eond/pen/WQNoPE Setup //jQuery library (Works with jQuery 1.4 and higher) <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> //jQuery.html5form plugin <script src="http://html5… jquery.html5form.zip http://codepen.io/eond/pen/WQNoPE Setup //jQuery library (Works with jQuery 1.4 and higher) <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> //jQuery.html5form plugin <script src="http://html5form.googlecode.com/svn/trunk/jquery.html5form-1.5-min.js"></script> <script> $(document).ready(function(){ $('#myform').html5form(); }); </script> html5form v1.5 12-04-2011 - Added Support input type="image" & input type="button" (Thanks to @zguillez) How does it work? Just create your form according the HTML5 syntax and the script will execute itself. It does not require extra classes. The plugin gets all the information from the HTML source. Runs automatically when detects Internet Explorer, Opera or Mozilla Firefox. If you want to get full browser and customization support read the Plugin Features section below. HTML5 Features. Attribute placeholder <input type="text" placeholder="Full Name"/> The placeholder attribute provides a hint that describes the expected value of an input field. The hint is displayed in the input field when it is empty, and disappears when the field gets focus. Email type attribute <input type="email" name="email" id="email"/> The email type is used for input fields that should contain an e-mail address. The value of the email field is automatically validated when the form is submitted. Textarea maxlength attribute <textarea maxlength="60" name="comment" id="comment"/> Defines the maximum number of characters allowed in the textarea. Required attribute <input type="text" name="lastname" required /> The required attribute specifies that an input field must be filled out before submitting. Url type attribute <input type="url" name="website" placeholder="http://"/> The url type is used for input fields that should contain a URL address. The value of the url field is automatically validated when the form is submitted. Autocomplete attribute <input type="text" name="lastname" autocomplete="off"/> The autocomplete attribute specifies that the form or input field should have an autocomplete function. When the user starts to type in an autocomplete field, the browser should display options to fill in the field. You can turn it off now. Plugin Features. <script> $('#myform').html5form({ async : false, // cancels the default submit method. method : 'GET', // changes the request method. action : 'respuesta.php', // changes the action method. responseDiv : '#respuesta' // a content div to get the callback function response. }) </script> Customize handling behavior. The form sends through an asynchronous Ajax request by default. The plugin automatically gets method and action attributes declared on the form. To change any of this behavior just follow these rules. Multiple forms. If you have more than one form, you can set different options for each one, just call the .html5form() method by the '#id'. In case of 'form' label, the plugin will handle each form independently but the options will be equal for all, the best way to do it is to call each form separately. <script> $('#myform_one').html5form({ method: 'POST', }); $('#myform_two').html5form({ method: 'GET' }); </script> Text Colors. Allows you to customize the default color of input text and placeholders. <script> $('#myform').html5form({ colorOn: '#999', colorOff: '#000' }) </script> <script> //default English messages method $('#myform').html5form({ messages : 'de', // Options 'en', 'es', 'it', 'de', 'fr', 'nl', 'be', 'br' responseDiv : '#response' }) //default Italian messages method $('#myform').html5form({ messages: 'it', responseDiv : '#response' }) //custom message method, this one takes precedence over default messages $('#myform').html5form({ emptyMessage : 'This is a required field', emailMessage : 'This email address is not correct, please try again', responseDiv : '#response' }) </script> Error Messages. The plugin can display a descriptive error in case of empty fields or invalid email address. This is set to false by default. The plugin returns default warnings in English, Spanish, Italian, German, French, Dutch & Portuguese if property messages is set with the chosen lenguage. Another method for doing so is to assign customized values for each response in emailMessage and emptyMessage properties. This funcionality has 3 conditions: The request must be asynchronous. Each input / textarea field must have a title. The responseDiv must be declared. <script> $('#myform').html5form({ labels: 'hide' }); </script> Hiding labels. The placeholder attribute of HTML5 is certainly very intuitive and easy to implement. But our site must be ready to recieve users without enabled JavaScript in their browsers. We recommend keeping label tags to describe fields and we include a hiding method too. Full browser support. As we mentioned, WebKit browsers (Safari & Chrome) can handle webForms 2.0 forms without any help, they dont activate the plugin. However, we can force it to work with all browsers to get additional customization. <script> $('#myform').html5form({ allBrowsers: true }); </script> html5form v1.5 12-04-2011 - Added Support input type="image" & input type="button" (Thanks to @zguillez) Cross Browser Testing: Internet Explorer: IE6+ Mozilla Firefox: 3.6+ Google Chrome: 10+ Apple Safari: 4+ Opera: 10+ Developer Version 1.5
이온디
이온디 10년 전
HTML <a href="#"><img src="img/sub/profile_picture_s.png"></a> <a href="#">바람돌이</a> CSS a:hover {border-bottom: 1px solid #999999;} 이런 식의 코드가 있을 때 이렇게 a태그 한게 img도 있고 텍스트도 있을 경우에 hover스타일을 텍스트에는 밑줄을 주고 이미지는 none하고 싶은데 각각 하고 싶으면 이미지랑 텍스트 선택하는 방법이 있나요? ㅜㅜ 위와 같… HTML <a href="#"><img src="img/sub/profile_picture_s.png"></a> <a href="#">바람돌이</a> CSS a:hover {border-bottom: 1px solid #999999;} 이런 식의 코드가 있을 때 이렇게 a태그 한게 img도 있고 텍스트도 있을 경우에 hover스타일을 텍스트에는 밑줄을 주고 이미지는 none하고 싶은데 각각 하고 싶으면 이미지랑 텍스트 선택하는 방법이 있나요? ㅜㅜ 위와 같이 a 태그 안에 img 태그와 텍스트가 있는 경우에 마우스를 올렸을 때 각각 img는 밑줄이 없고, 텍스트에는 밑줄을 주고 싶을 경우 a 태그 아래에 이미지와 텍스트를 구분하여 효과를 주는 제이쿼리입니다. 물론, 제이쿼리를 안 쓰고 a 태그 안에 있는 텍스트는 span 태그로 감싼 뒤 css에서 span 태그에 hover 효과를 주는 게 가장 깔끔합니다만;; HTML <a href="#"><img src="http://placehold.it/50x50"></a> <a href="#">바람돌이</a> <a href="#" id="aaa">Test</a> <div><span>123</span>여기</div> CSS a, a:hover {text-decoration:none} .underline {border-bottom: 1px solid #999999 !important;} JS $(function(){ var link = $("a"); if(link){ link.mouseover(function(){ $(this).addClass('underline'); }); link.mouseleave(function(){ $(this).removeClass('underline'); }); } var img = $("a").children('img'); if(img){ img.parent().mouseover(function(){ $(this).removeClass('underline'); }); } }); 단순 a 태그를 가진 것을 link 라는 변수에 담고, 마우스를 올렸을 때 underline 속성을 주고, 마우스를 떼면 속성을 제거해줍니다. a 태그 아래에 img 태그가 있을 경우 그 a 태그는 underline 속성은 제거하는 코드입니다. 마크업을 하다보면 이 외의 변수도 있을 수 있으므로 HTML 코딩할 땐 구조적으로 잘 생각해서 코딩해야 합니다.
이온디
이온디 10년 전
HTML에 JavaScript 삽입 <script language="javascript"> JavaScript Statements </script> HTML에 JavaScript 코드 파일 삽입 <script language="javascipt" src="src.js"> </script> 변수의 대소문자 구분 변수에 포함된 데이터의 형을 지정하지 않고, JavaScript 인터프리터가 변수에 포함된 데이터 형을 추적하고 변환. JavaScript 데이터 형… HTML에 JavaScript 삽입 <script language="javascript"> JavaScript Statements </script> HTML에 JavaScript 코드 파일 삽입 <script language="javascipt" src="src.js"> </script> 변수의 대소문자 구분 변수에 포함된 데이터의 형을 지정하지 않고, JavaScript 인터프리터가 변수에 포함된 데이터 형을 추적하고 변환. JavaScript 데이터 형 숫 자 형 : 정수와 부동 소수 BOOLEAN : true, false STRING : 작은 따옴표나 큰 따옴표에 들어가 있는 값으로, 특수문자 포맷 사용시에는 '\'와 함께 사용. null : 아무런 값도 없는 것으로, 변수를 초기화 시키거나 어떤 값이나 이벤트를 지울 때 사용됨 undefined : 변수만 만들고, 값을 할당하지 않은 상태 유형간의 변환 스트링 피연산자가 비스트링 연산자와 사용된 경우 다른 연산자를 모두 스트링으로 변환 BOOLEAN값은 1과 0으로 변환되어 수치 연산을 지원 null값은 스트링 연산에 대해서는 "null", 논리 연산에서는 false, 그리고 수치 연산에서는 0으로 각각 변환 변환 함수 eval() : 스트링 표현식을 수치값으로 변환하고, 파라미터가 수치형태가 아닌 스트링 값이면 에러 발생 parseInt() : 스트링에 포함된 첫번째 정수를 리턴하고, 스트링이 정수로 시작되지 않으면 0을 리턴 parseFloat() : 스트링에 포함된 첫번째 부동 소수를 리턴하거나 스트링이 적절한 부동 소수로 시작되지 않으면 0을 리턴 배열 : 값의 시퀀스를 정렬할 수 있는 객체로, JavaScript의 특수형으로 배열 사용 전엔 반드시 선언해야 한다. 배열 선언 예 arrayName = new Array(arrayLength) arrayName = new Array() arrayName = new Array(value0,value1, ..., valuen) JavaScript만의 특수 연산자 comma(,) 연산자 : 두 표현식을 계산하고, 두 번째 표현식의 값 리턴 delete 연산자 : 객체의 프로퍼티나 배열 인덱스의 요소 삭제하고, 항상 undefined 값 리턴 new 연산자 : 객체 형의 인스턴스를 만들기 위해 사용 typeof 연산자 : 연산자의 형을 식별하는 스트링 값을 리턴 void 연산자 : 값을 리턴하지 않는다 지역 변수와 전역 변수 : 함수 안에서만 사용되는 것을 지역 변수라 하고, 프로그램 내에서 사용되는 변수를 전역 변수라 하는 데, 지역 변수 사용시 반드시 var 키워드와 함께 선언해야 함 이벤트 처리!! 이벤트 정의와 사용 이벤트 : 사용자가 웹페이지나 기타 다른 브라우저에 수행한 작업으로 인한 결과 이벤트 처리 : 이벤트로 인해 수행되는 프로세스 이벤트 핸들러 : 프로세스를 수행하는 코드 사용 예 : 사용자가 링크 위로 마우스를 갖다 대면 다이얼로그 박스를 표시한다거나, 폼에 입력한 데이터를 검증한다거나, 버튼을 클릭할 때 애니메이션을 나타내거나, Java 애플릿과 브라우저 플러그인이 상호작용을 하도록 한다. HTML 태그 JavaScript 이벤트 설명 다양 mouseMove 마우스 이동 <A>..</A> Click 마우스로 링크를 클릭 dbClick 마우스를 링크위에서 더블클릭 mouseDown 마우스 버튼을 누름 mouseUp 마우스 버튼을 놓음 mouseOver 마우스를 링크위로 이동 mouseOut 링크 위에 있던 마우스를 링크 밖으로 이동 keyDown 사용자가 키를 누름 keyUp 사용자가 키를 놓음 keyPress 사용자가 키를 눌렀다가 놓음 <IMG> abort 사용자 액션으로 인해 이미지 로딩 작업을 중단함 error 이미지 로딩하는 동안 에러 발생 load 이미지가 로드되고 화면에 나타남 keyDown 사용자가 키를 누름 keyUp 사용자가 키를 놓음 keyPress 사용자가 키를 눌렀다가 놓음 <AREA> mouseOver 마우스가 클라이언트측 이미지맵의 한 영역으로 이동함 mouseOut 마우스가 이미지맵 영역 밖으로 이동 dbClick 사용자가 이미지맵의 한 영역을 더블클릭함 <BODY>..</BODY> Click 사용자가 문서의 본문을 클릭 dbClick 문서의 본문을 더블 클릭함 keyDown 키를 누름 keyUp 키를 놓음 keyPress 키를 눌렀다가 놓음 mouseDown 마우스 버튼을 누름 mouseUp 마우스 버튼을 놓음 <BODY>..</BODY> <FRAMESET>..</FRAMESET> <FRAME>..</FRAME> blur 윈도우에서 현재 입력 포커스가 사라짐 error 윈도우가 로드되는 동안 에러 발생 focus 입력 포커스가 현재 윈도우로 이동 load 윈도우 로딩이 완료됨 unload 윈도우를 종료함 move 윈도우가 이동됨 resize 윈도우의 크기가 바뀜 dragDrop 윈도우에 객체를 드롭 <FORM>..</FORM> submit 사용자가 폼을 제출 reset 사용자가 폼을 재설정 <INPUT TYPE="text"> blur 현재 입력 포커스가 텍스트 필드에서 사라짐 focus 현재 입력 포커스가 텍스트 필드로 이동 change 텍스트 필드가 변경되어 현재 입력 포커스가 사라짐 select 텍스트 필드에 있는 텍스트가 선택됨 <INPUT TYPE="password"> blur 패스워드 필드에서 입력 포커스가 사라짐 focus 패스워드 필드에 입력 포커스 생김 <TEXTAREA>..</TEXTAREA> blur 텍스트 영역이 현재 입력 포커스가 사람짐 focus 텍스트 영역에 입력 포커스 생김 change 텍스트 영역이 변경되어 입력 포커스가 사라짐 select 텍스트 영역에서 텍스트가 선택됨 keyDown 키를 누름 keyUp 키를 놓음 keyPress 키를 눌렀다 놓음 <INPUT TYPE="button"> Click 버튼이 클릭됨 blur 입력할 수 없도록 버튼이 흐려짐 focus 입력할 수 있도록 포커스 생김 mouseDown 버튼 위에서 왼쪽 마우스 버튼 누름 mouseUp 버튼 위에서 왼쪽 마우스 버튼 놓음 <INPUT TYPE="submit"> Click 제출 버튼이 클릭됨 blur 제출 버튼에서 입력 포커스가 사라짐 focus 제출 버튼에 입력 포커스 생김 <INPUT TYPE="reset"> Click 리셋 버튼이 클릭됨 blur 리셋 버튼에서 포커스가 사라짐 focus 리셋 버튼에서 포터스가 놓임 <INPUT TYPE="radio"> Click 라디오 버튼이 클릭 blur 라디오 버튼에서 입력 포커스가 사라짐 focus 라디오 버튼에 입력 포커스 생김 <INPUT TYPE="checkbox"> Click 체크 박스가 클릭 blur 체크 박스에서 입력 포커스가 사라짐 focus 체크 박스에 입력 포커스 놓임 <INPUT TYPE="file"> blur 파일 업로드 폼 요소에서 입력 포커스 사라짐 change 사용자가 업로드될 파일을 선택 focus 파일 업로드 폼 요소에 입력 포커스 놓임 <SELECT>..</SELECT> blur 선택 요소가 현재 입력 포커스 잃음 change 선택 요소가 변경되어 입력 포커스가 사라짐 focus 선택 요소에 현재 입력 포커스가 놓임 이벤트 처리 속성 이벤트핸들링속성 실행되는 상황 onAbort 이미지를 로딩하는 작업이 사용자의 한 행동으로 인해 취소되었음 onBlur 문서나 윈도우, 프레임세트, 폼 요소에서 현재 입력 포커스가 사라짐 onChange 텍스트 필드나 텍스트 영역, 파일 업로드 필드, 선택 항목이 변경되어 현재 입력 포커스가 사라짐 onClick 링크나 클라이언트측 이미지맵 영역, 폼 요소가 클릭됨 onDbClick 링크나 클라이언트측 이미지맵 영역, 문서가 더블 클릭됨 onDragDrop 드래그된 객체가 윈도우나 프레임에 드롭됨 onError 이미지나 윈도우, 프레임을 로딩하는 동안 에러가 발생함 onFocus 문서나 윈도우, 프레임 세트, 폼 요소에 입력 포커스 놓임 onKeyDown 키를 누름 onKeyPress 키를 눌렀다 놓음 onKeyUp 키를 놓음 onLoad 이미지나 문서, 프레임이 로드됨 onMouseDown 마우스 버튼 누름 onMouseMove 마우스를 이동함 onMouseOut 링크나 클라이언트측 이미지맵에서 마우스를 옮김 onMouseOver 마우스를 링크나 클라이언트측 이미지맵으로 옮김 onMouseUp 마우스 버튼을 놓음 onMove 사용자가 윈도우나 프레임을 이동함 onReset 폼의 리셋 버튼을 클릭하여 폼을 리셋시킴 onResize 사용자가 윈도우나 프레임의 크기를 조절 onSelect 텍스트는 텍스트 필드나 영역에서 선택됨 onSubmit 폼이 제출됨 onUnload 사용자가 문서나 프레임 세트를 종료함 객체 정의하기 객체 유형 정의 프로퍼티 : 객체에 들어 있는 데이터 값에 액세스할 때 사용. 메소드 : 객체에 어떤 작업을 할 때 사용하는 함수. 객체 유형 만들기 사용자가 직접 객체 유형을 정의하고 특정 객체 인스턴스를 만들 수 있 는데 이렇게 만들려면 객체 유형의 특정 인스턴스를 만들 때 사용되는 함수를 정의하기만 하면 된다. 본래 이러한 생성자 함수는 다음과 같은 일을 한다. 객체 유형의 프로퍼티에 값을 할당한다. 객체 유형의 메소드로 사용할 수 있는 다른 함수를 지정한다. 객체 사용 예 table 객체의 정의 (table.js) function table_getValue(row,col){ return this.data[row* this.columns+col ]; } function table_setValue(row,col,value){ this.data[row* this.columns+col ]=value; } function table_set(contents){ var n=contents.length; for(var j=0;jthis.data[j]=contents[j]; } function table_isHeader(row,col){ return this.header[row* this.columns+col ]; } function table_makeHeader(row,col){ this.header[row* this.columns+col ]=true; } function table_makeNormal(row,col){ this.header[row* this.columns+col ]=false; } function table_makeHeaderRow(row){ for(var j=0;j< this.columns+j) this.header[row* this.columns+col ]=true; } function table_makeHeaderColumn(col){ for(var i=0;i< this.rows;++i) this.header[i* this.columns+col ]=true; } function table_write(doc){ doc.write("<TABLE BORDER="+ this.border+">"); for(var i=0;i< this.rows;++i) { doc.write("<TR>"); for(var j=0;j< this.columns;++j) { if( this.header[i* this.columns+j ]) { doc.write("<TH>"); doc.write( this.data[i* this.columns+j ]); doc.write("</TH>"); } else { doc.write("<TD>"); doc.write( this.data[i* this.columns+j ]); doc.write("</TD>"); } } doc.writeln("</TR>"); } doc.writeln("</TABLE>"); } funtion table(rows,columns) { this.rows=rows this.columns=columns this.border=0 this.data=new Array(rows*columns) this.header=new Array(rows*columns) this.getValue=table_getValue this.setValue=table_setValue this.set=table_set this.isHeader=table_isHeader this.makeHeader=table_makeHeader this.makeNormal=table_makeNormal this.makeHeaderRow=table_makeHeaderRow this.makeHeaderColumn=table_makeHeaderColumn this.write=table_write } table 객체 사용하기 <HTML> <HEAD> <TITLE>Defining Object Types</TITLE <SCRIPT LANGUAGE="JavaScript" SRC="table.js"><!- //-></SCRIPT> </HEAD> <BODY> <H1>Defining Object Types</H1> <SCRIPT LANGUAGE="JavaScript"><!- t=new table(3,4) contents=new Array("This","is","a","test","of","the","table","object.","Let's","see","it","work") t.set(contents) t.border=4 t.makeHeaderColumn(0) t.write(document) //-></SCRIPT> </BODY> </HTML> 객체 유형에 프로퍼티와 메소드 추가 : prototype 프로퍼티를 통해서 인스턴스화할 수 있는 미리 정의된 객체 유형에 프로퍼티와 메소드 추가 사용 예 <HTML> <HEAD> <TITLE>Updating Object Types </TITLE> <SCRIPT LANGUAGE="JavaScript" SRC="table.js"><!- //-></SCRIPT> </HEAD> <BODY> <H1>Updating Object Types</H1> <SCRIPT LANGUAGE="JavaScript"><!- function table_colorWrite(doc){ ........ 함수 정의 ........ ........ } t=new table(3,4) table.prototype.bgColor="Cyan" table.prototype.colorWrite=table_colorWrite ............. ............. t.colorWrite(document) //-></SCRIPT> </BODY> </HTML> 프로퍼티와 메소드 삭제 delete objectName.propertyName delete objectName.methodName 브라우저 객체 객 체 용 도 window 객체 브라우저 윈도우나 윈도우 안에 있는 프레임에 액세스할 때 사용한다. 프로퍼티와 메소드를 참조할 때, window 객체가 존재하는 경우에는 "window."접두사를 붙일 필요가 없다 document 객체 현재 윈도우에 로드되어 있는 문서에 액세스할 때 사용한다. document 객체는 컨텐트를 제공하는 HTML 문서, 즉 HEAD와 BODY 태그가 있는 문서를 의미한다. location 객체 URL을 나타낼 때 사용한다. 이 객체는 URL객체를 만들거나 URL의 일부분에 액세스하거나 기존의 URL을 수정할 때 사용할 수 있다. history 객체 한 윈도우 안에서 액세스된 URL의 히스토리를 유지할 때 사용 frame 객체, frames 배열 HTML 프레임에 액세스할 때 사용 frames 배열은 윈도우안에 있는 모든 프레임에 액세스할 때 사용 link 객체, links 배열 하이퍼텍스트 링크의 텍스트 기반이나 이미지 기반 소스 앵커(anchor)에 액세스할 때 사용 links배열은 문서 안에 있는 모든 link 객체에 액세스할 때 사용한다. I.E.는 link 객체의 anchor객체를 결합한다. anchor 객체, anchors 배열 하이퍼텍스트 링크의 타켓에 액세스할 때 사용 anchors 배열은 문서 안에 있는 모든 anchor 객체에 액세스할 때 사용 image객체, images 배열 HTML 문서에 삽입되어 있는 이미지에 액세스할 때 사용 images 배열은 문서 안에 있는 모든 image 객체에 액세스할 때 사용 area 객체 클라이언트측 이미지맵 안에 있는 영역에 액세스할 때 사용 applet 객체, applets 배열 Java 애플릿에 액세스할 때 사용 애플릿 배열은 문서 안에 있는 모든 애플릿에 액세스할 때 사용 event 객체, Event 객체 이벤트 발생에 대한 정보에 액세스할 때 사용 event 객체는 특정 이벤트에 대한 정보 제공 Event 객체는 이벤트를 식별하는 데 사용하는 상수 제공 form 객체, forms 배열 HTML 폼에 액세스시 사용 forms 배열은 문서 안에 있는 모든 폼에 액세스시 사용 element 객체 폼 안에 들어있는 모든 폼 요소에 액세스시 사용 text 객체 폼의 텍스트 필드에 액세스시 사용 textarea 객체 폼의 텍스트 영역 필드에 액세스시 사용 radio 객체 폼의 라디오 버튼 세트에 액세스하거나 세트 안에 있는 각각의 버튼에 액세스할 때 사용 checkbox 객체 폼의 체크 박스에 액세스할 때 사용 button 객체 Submit나 Reset 버튼이 아닌 폼 버튼에 액세스시 사용 reset 객체 폼의 Reset 버튼에 액세스시 사용 selet 객체 폼의 선택 리스트에 액세스시 사용 option 객체 option 객체는 선택 리스트의 요소에 액세스시 사용 password 객체 폼의 패스워드 필드에 액세스시 사용 hidden 객체 폼의 숨겨진 필드에 액세스시 사용 FileUpload 객체 폼의 파일 업로드 요소에 액세스시 사용 navigator 객체 스크립트를 실행하고 있는 브라우저에 대한 정보에 액세스시 사용 screen 객체 사용자의 화면의 색상 깊이와 크기에 대한 정보에 액세스시 사용 embed 객체, embeds 배열 삽입된 객체에 액세스시 사용 embeds 배열은 문서 안에 삽입된 모든 객체에 대한 액세스 제공 mimeType 객체, mimeTypes 배열 브라우저가 제공하는 특징 MIME 유형에 대한 정보에 액세스시 사용 mimeTypes 배열은 제공하는 모든 mimeType 객체의 배열 I.E.는 빈 배열을 리턴하면서 mimeTypes에 대해서 임시적으로 지원 plugin 객체, plugins 배열 특정 브라우저 플러그인에 대한 정보에 액세스시 사용 plugins 배열은 브라우저가 지원하는 모든 플러그인의 배열 I.E.는 빈 배열을 리턴하면서 plugins에 대해서 임시적으로 지원 window 객체 모든 브라우저 스크립트의 기본적인 것으로, 브라우저가 자동으로 정의하는 최상위 레벨의 객체이다. 현재 열려 있는 각 윈도우에 대해 별도의 window 객체가 정의된다. window 객체의 프로퍼티 프로퍼티 설 명 closed 윈도우가 닫혀 있는지 식별 defaultStatus 브라우저 윈도우의 하단의 상태바에 나타나는 디폴트 상대 메시지를 지정 document 윈도우에 표시되어 있는 현재 문서를 지정하는 객체 frames 윈도우 객체에 들어 있는 모든 프레임 객체로 구성된 배열 history 마지막으로 윈도우로 로드된 URL의 리스트를 포함하는 윈도우의 히스토리 객체 length window에 들어 있는 프레임의 수 식별 location window 객체와 관련된 URL을 지정하는 객체 name 윈도우의 이름 지정 offscreenBuffering 윈도우 정보의 오프스크린 버퍼링이 사용될 것인지를 지정하는 부울값 오프스크린 버퍼링은 윈도우를 나타내기 전에 윈도우의 모든 요소를 로드할 때 사용 opener 윈도우를 만들거나 열 수 있도록 해주는 window 객체 지정 parent 특정 윈도우를 포함하는 윈도우를 지정하는 시너님 self 참조될 현재 윈도우를 지정하는 시너님 status 브라우저 윈도의 하단의 상태 표시줄에 나타날 임시 메시지를 지정 top 중첩된 일련의 윈도우에서 맨 위에 있는 브라우저 윈도우를 의미하는 시너님 window 참조될 현재 윈도우를 식별하는 시너님 window 객체의 메소드 메 소 드 설 명 alert(text) 경고 다이얼로그 박스를 표시 blur() 포커스를 윈도우에서 옮긴다 setInterval(expression,milliseconds) 지정된 타임아웃 인터벌이 지난 이후에 표현식을 반복해서 평가하거나 함수를 불러온다. clearInterval(interval) 이전에 설정된 인터벌 타이머를 클리어 setTimeout(expression,milliseconds) 타임아웃 기간이 지난 이후에 표현식을 평가하거나 함수를 호출한다. clearTimeout(timer) 이전에 설정된 타임아웃을 클리어 close() 지정된 윈도우를 닫는다. confirm(text) 확인 다이얼로그 박스를 나타낸다. focus() 윈도우로 포커스를 가져간다. open(url,name,[options]) 새로운 윈도우를 열고 새로운 window 객체를 만듬 prompt(text,defaultInput) 프롬프트 다이얼로그 박스를 나타낸다. scroll(x,y) 윈도우를 특정 위치까지 스크롤한다. open() 메소드의 옵션 옵 션 값 설 명 toolbar yes no 윈도우에 툴바 제공 location yes no 윈도우에 위치 필드 제공 directories yes no 디렉토리 버튼 제공 status yes no 상태 표시줄 제공 menubar yes no 메뉴바 제공 scrollbars yes no 스크롤 바 제공 resizable yes no 윈도우 크기 조절 가능 width 정수 윈도우의 폭(픽셀) height 정수 윈도우의 높이(픽셀) frame 객체 프레임은 윈도우를 독립된 표시 영역들로 분할한 후, 이 영역들에 표시되는 정보들을 강력하게 컨트롤 할 수 있게 해준다. 프레임 객체의 프로퍼티와 메소드는 window 객체와 같지만, close() 메소드는 지원하지 않는다. document 객체 JavaScript 에서 아주 중요한 객체로, 이 객체를 사용하면 로드될 문서를 업데이트하고 로드된 문서 안에 있는 HTML 요소에 액세스할 수 있다. 프로퍼티 설 명 alinkColor <BODY> 태그의 alink 속성의 값 지정 anchor 문서에 들어 있는 배열을 참조하는 객체 anchors 문서에 들어 있는 모든 앵커의 배열 applet 문서에 들어 있는 애플릿을 참조하는 객체 applets 문서에 들어 있는 모든 애플릿의 배열 area 문서 안의 이미지맵 영역을 참조하는 객체 bgColor <BODY> 태그의 bgColor 속성의 값 식별 cookie 쿠키의 값 식별 domain 문서가 로드되는 서버의 도메인 이름 식별 embeds 문서안의 모든 플러그인의 배열 fgColor <BODY> 태그의 text 속성값 지정 form 문서 안의 폼을 참조하는 객체 Forms[] 문서 안의 모든 폼의 배열 image 문서 안의 이미지를 참조하는 객체 Images[] 문서 안의 모든 이미지의 배열 lastModified 문서가 마지막으로 수정된 날짜 link 문서 안의 링크를 참조하는 객체 links 문서 안의 모든 링크의 배열 linkColor <BODY> 태그의 link 속성의 값 식별 plugin 문서 안의 플러그인을 참조하는 객체 plugins[] 브라우저가 지원하는 플러그인을 나타내는 객체의 배열 referrer 문서에 대한 링크를 제공하는 문서의 URL title 문서의 타이틀 URL 문서의 URL vlinkColor <BODY> 태그의 vlink 속성의 값 식별 메 소 드 설 명 close() 문서의 객체를 만드는 데 사용된 스트림 open([mimeType][,"replace"]) 선택적인 MIME 유형으로 문서 객체를 만들 때 사용되는 흐름을 개시한다. "replace" 파라미터는 text/html MIME 유형과 함께 사용되어 히스토리 리스트에 있는 현재 문서를 대체 write(expr1[,expr2...,exprN]) 문서에 표현식의 값을 기록 write(expr1[,expr2...,exprN]) 개행 문자가 다음에 따라오는 문서에 표현식의 값 기록 navigator 객체 navigator 객체는 window 객체와 마찬가지로 브라우저 객체 모델에서 최상위 레벨의 객체이며, 스크립트를 실행할 때 사용되는 브라우저의 종류와 버전에 대한 정보 제공한다. 프로퍼티 브라우저 지원 설 명 appCodeName N2, I.E3 브라우저 색상 이름 AppMinorVersion I.E4 브라우저 버전 번호 appName N2, I.E3 브라우저 이름 appVersion N2, I.E3 브라우저의 버전 browserLanguage I.E4 브라우저에 설정되어 있는 언어 connectionSpeed I.E4 브라우저가 네트워크에 연결되는 속도 cookieEnabled I.E4 브라우저가 쿠키를 허용하도록 설정되어 있는지의 여부 cpuClass I.E4 브라우저 실행시 사용되는 마이크로프로세서의 유형 onLine I.E4 브라우저가 현재 온라인 연결을 가지고 있는지 여부 Language N4, I.E4 브라우저에 설정되어 있는 언어 mimeTypes N3, I.E4 현재 브라우저가 지원하는 모든 MIME 유형의 배열 platform N4, I.E4 브라우저가 실행되는 운영체제 플랫폼 plugins N3, I.E4 현재 브라우저에 설치된 모든 플러그인의 배열 systemLanguage I.E4 운영체제의 디폴트 언어 userAgent N2, I.E3 브라우저에서 서버로 전송된 HTTP 프로토콜의 사용자 에이전트 헤더 userLanguage I.E4 사용자가 사용하는 언어 userProfile I.E4 사용자 프로파일 정보에 대한 액세스를 제공하는 객체 navigator 객체의 메소드 메 소 드 설 명 javaEnabled() 사용자가 브라우저의 Java 기능을 켜두었는지의 여부를 나타내는 부울값 리턴 taintEnabled() 사용자가 data tainting(보안 메커니즘)을 활성화했는지 여부를 나타내는 부울값 리턴 preference 서명이 되지 않은 스크립트가 보안 관련 프로퍼티를 얻고 설정할 때 사용 event 객체 event 객체의 프로퍼티 프로퍼티 브라우저 설 명 data N DragDrop 이벤트로 인해 드롭된 객체의 URL이 들어있는 스트링 배열 height, width N 윈도우나 프레인의 길이와 너비(픽셀표시) pageX, pageY N 픽셀로 나타낸 커서의 수평/수직 위치(페이지에서의 상대적위치) screenX, screenY N, I.E 픽셀로 나타낸 커서의 수평/수직 위치(화면에서의 상대적 위치) layerX, layerY N 픽셀로 나타낸 커서의 수평/수직 위치, 이벤트가 발생한 레이어에 대한 상대적 위치. Resize 이벤트와 함께 사용하면 layerX와 layerY가 이벤트가 타겟으로 하는 객체의 길이와 너비 지정 clientX와 clientY I.E 픽셀로 나타낸 커서의 수평/수직 위치, 이벤트가 발생한 웹페이지에서의 상대적 위치 offsetX, offsetY I.E 픽셀로 나타낸 커서의 수평/수직 위치, 이벤트가 발생한 컨테이너에 대한 상대적 위치 X, Y I.E 픽셀로 나타낸 커서의 수평/수직 위치, 이벤트가 발생한 문서에 대한 상대적 위치 target N 이벤트가 전송된 원래 객체 srcElement I.E 이벤트가 전송된 원래 객체 type N, I.E 발생한 이벤트 유형 which N 눌려진 마우스 버튼(왼:1, 가:2, 오:3)이나 눌려진 키의 ASCII값 keyCode I.E 키 누름과 연관된 Unicode 키 코드를 식별 button I.E 이벤트가 발생했을 때 눌려진 마우스 버튼 식별(0:눌려진버튼없음, 1:왼, 2:오, 4:가) modifiers N 마우스나 키 이벤트와 연관된 수정자 키(ALT_MASK,CONTROL_MASK,SHIFT_MASK,META_MASK)를 식별 altkey,ctrlkey,shiftkey I.E true나 false로 설정하여 이벤트가 발생했을 때 Alt키와 Control키, Shift 키 중에 어떤 것이 눌려졌는지 알려준다. cancelBubble I.E true나 false로 설정하여 이벤트 버블링을 취소하거나 활성화한다. fromElement, toElement I.E 이동 중인 HTML 요소 지정 reason I.E 데이터 소스 객체에 대한 데이터 전송 상태를 나타내는데 사용 returnValue I.E true나 false로 설정하여 이벤트 핸들러의 리턴값을 나타낸다. 이벤트 핸들러에서 true나 false를 리턴하는 것과 같다. srcFilter I.E onfilterchange 이벤트를 시작하는 filter객체 지정 screen 객체 screen 객체의 프로퍼티 height : 사용자의 화면의 현재 높이(픽셀) width : 사용자의 화면의 현재 너비(픽셀) colorDepth : 사용자의 화면/비디오 카드에서 현재 지원하는 색상당 바이트 수 form 객체 document 객체의 프로퍼티로 액세스되고, form 객체는 문서 안의 폼에 액세스할 수 있도록 해주고, 폼 관련 이벤트에 응답을 할 수 있도록 해주기 때문에 중요하다. form 객체의 프로퍼티 프로퍼티 설 명 action <FORM> 태그의 HTML action 속성에 대한 액세스 제공 button GUI 컨트롤 버튼을 나타내는 객체 checkbox 체크 박스 필드를 나타내는 객체 elements 폼 안에 포함되어 있는 모든 필드와 GUI 컨트롤을 포함하는 배열 encoding <FORM> 태그의 HTML enctype 속성에 대한 액세스 제공 FileUpload 파일 업로드 폼 필드를 나타내는 객체 hidden 숨겨진 폼 필드를 나타내는 객체 length elements 배열의 길이에 대한 액세스 제공 method <FORM> 태그의 HTML method 속성에 대한 액세스 제공 name 폼의 이름 식별 password 패스워드 필드를 나타내는 객체 radio 라디오 버튼 필드를 나타내는 객체 reset reset 버튼을 나타내는 객체 select 선택 항목 리스트를 나타내는 객체 submit submit 버튼을 나타내는 객체 target <FORM> 태그의 HTML target 속성에 대한 액세스 제공 text 텍스트 필드를 나타내는 객체 textarea 텍스트 영역 필드를 나타내는 객체 form 객체의 메소드 메 소 드 설 명 handleEvent() 지정된 이벤트에 대한 폼의 이벤트 핸들러를 호출할 때 사용 submit() 폼을 제출시 사용 reset 폼의 엔트리를 디폴트 값으로 재설정시 사용 form 요소 객체의 프로퍼티 객 체 프로퍼티 설 명 button name 버튼의 name 속성에 대한 액세스 제공 type 객체의 유형 지정 value 객체의 값 지정 checkbox checked 체크박스가 현재 체크되어 있는지를 식별 defaultChecked 체크박스가 디폴트로 체크되어 있는지 식별 name 체크박스의 HTML name 속성에 대한 액세스 제공 type 객체의 유형 식별 value 객체의 값 식별 FileUpload name 객체의 name 속성에 대한 액세스 제공 type 객체의 type 속성에 대한 액세스 제공 value 객체의 값 식별 hidden name 객체의 name 속성에 대한 액세스 제공 type 객체의 유형 식별 value 객체의 값 식별 password defaultChecked 객체의 디폴트 값 식별 name 객체의 name 속성에 대한 액세스 제공 type 객체의 유형 식별 value 객체의 값 식별 radio checked 라디오 버튼이 체크되어 있는지 식별 defaultChecked 라디오 버튼이 디폴트로 체크되어 있는지 식별 name 객체의 name 속성에 대한 액세스 제공 type 객체의 유형 식별 value 객체의 값 식별 reset name 객체의 name 속성에 대한 액세스 제공 type 객체의 유형 식별 value 객체의 값 식별 select length 선택 리스트의 길이 식별 name 객체의 name 속성에 대한 액세스 제공 option 선택 리스트가 제공하는 옵션 식별하는 배열 selectedIndex 선택 리스트 안에서 처음 선택된 옵션 식별 type 객체의 유형 식별 submit name 객체의 name 속서에 대한 액세스 제공 type 객체의 유형 식별 value 객체의 값 식별 text defaultValue 텍스트 필드에 나타나는 디폴트 텍스트를 식별 name 객체의 name 속성에 대한 액세스 제공 type 객체의 유형 식별 value 객체의 값 식별 textarea defaultValue 텍스트 영역 필드에 나타나게 되는 디폴트 텍스트 식별 name 객체의 name 속성에 대한 액세스 제공 type 객체의 유형 식별 value 객체의 값 식별 form 요소 객체의 메소드 객 체 메 소 드 설 명 button Click() 클릭된 버튼 시뮬레이트 blur() 포커스 잃음 focus() 포커스 맞춤 checkbox Click() 클릭된 체크 박스 시뮬레이트 blur() 포커스 잃음 focus() 포커스 맞춤 FileUpload blur() 포커스 잃음 focus() 포커스 맞춤 select() 입력 영역을 선택 hidden 없음 password blur() 포커스 잃음 focus() 포커스 맞춤 select() 패스워드 필드에 나타나는 텍스트를 하이라이트 radio Click() 라디오 버튼 클릭 시뮬레이트 blur() 포커스 잃음 focus() 포커스 맞춤 reset Click() 리셋 버튼 클릭 시뮬레이트 blur() 포커스 잃음 focus() 포커스 맞춤 select blur() 포커스 잃음 focus() 포커스 맞춤 submit Click() 제출 버튼 클릭 시뮬레이트 blur() 포커스 잃음 focus() 포커스 맞춤 text blur() 포커스 잃음 focus() 포커스 맞춤 select() 텍스트 필드에 있는 텍스트 하이라이트 textarea blur() 포커스 잃음 focus() 포커스 맞춤 select() 텍스트 영역에 있는 텍스트 하이라이트 location 객체 윈도우에 로드되어 있는 현재 문서의 URL에 액세스하거나 새로운 문서를 로드할 때 사용 location 객체의 프로퍼티 프로퍼티 설 명 hash URL의 앵커 부분(존재하는 경우) host URL의 hostname:port 부분 hostname URL의 host부분 href 전체 URL pathname URL의 경로명 부분 port URL의 포트 부분 protocol URL의 프로토콜 부분 search URL의 쿼리 스트링 부분 location 객체의 메소드 reload() : 윈도우의 현재 문서를 브라우저의 Reload 버튼에서 사용하는 정책에 따라 다시 로드 Every time : 문서는 매번 서버에서 다시 로드 Once per session : 서버의 문서의 날짜가 캐시에 저장되어 있는 문서보다 더 최신 날짜라는 것을 나타내면 문서는 세션당 한 번씩 서버에서 다시 로드된다. 문서가 캐시에 없는 경우에는 서버에서 로드 Never : 문서는 가능하면 캐시에서 다시 로드, 그렇지 않으면 서버에서 로드 replace() : URL을 파라미터로 취하여, 현재 문서 히스토리 목록에 있는 현재 문서위로 그 URL의 문서를 로드, 그러면 브라우저의 Back버튼을 클릭하여 이전 문서로 돌아갈 수 없음 link 객체 link 객체는 document 객체의 프로퍼티로, 문서에 들어있는 텍스트나 이미지 링크를 캡슐화 links 배열은 문서에 들어있는 모든 링크의 배열 link 객체의 메소드 handleEvent() : event 객체를 인자로 취하며 그 이벤트에 대해 적당한 이벤트 핸들러 호출 link 객체의 프로퍼티 프로퍼티 설 명 hash URL의 앵커 부분(존재하는 경우) host URL의 hostname:port 부분 hostname URL의 host부분 href 전체 URL pathname URL의 경로명 부분 port URL의 포트 부분 protocol URL의 프로토콜 부분 search URL의 쿼리 스트링 부분 target 링크의 HTML, target 속성 anchor 객체 HTML 문서 안에서 이름이 지정된 오프셋으로 사용되는 앵커 의미 anchors 배열에는 문서의 모든 앵커가 들어있음 프로퍼티나 메소드 또는 이벤트를 전혀 가지고 있지 않음 HTML 문서와 관련하여 정의된 이름이 지정된 오프셋을 추적할 때 사용 anchor 객체는 HREF 속성을 포함하는 경우에 link 객체가 된다. history 객체 history 객체의 프로퍼티 current : 윈도우에 나타나는 현재 문서의 URL length : History 리스트의 길이 next : History 리스트에서의 다음 URL previous : History 리스트에서의 이전 URL history 객체의 메소드 back() : History 리스트에 이전 문서를 로드. 브라우저의 Back 버튼을 클릭하는 것과 같은 효과 forward() : History 리스트에 다음 문서를 로드. 브라우저의 Forward 버튼을 클릭하는 것과 같은 효과 go() : History 리스트에 있는 특정 문서로 감 go(n) : n>0인 경우, 이 메소드는 History 리스트에서 n개의 엔트리가 앞에 있는 문서를 로드, n=0인 경우에는 현재 문서가 다시 로드되고, n<0인 경우엔 History 리스트에서 n개의 엔트리 뒤에 있는 문서를 로드 go(string) : go()는 이 스트링을 서브스트링으로 갖고 있는 URL의 History 리스트에서 가장 가까운 문서를 로드 image 객체 document 객체의 프로퍼티 문서와 함께 로드된 이미지에 대한 액세스 제공 images 배열은 문서 안에 지정되어 있는 각각의 <IMG>태그에 대한 엔트리가 들어있음 image 객체 유형을 사용하면 키워드와 생성자로 새로운 image 객체를 명시적으로 만들 수 있다. Image() 생성자는 웹페이지의 일부로서 처음에 나타나지 않는 이미지를 만들고 미리 로드할 때 사용한다. 이러한 image 객체는 브라우저의 캐시에 저장되면 이미 나타난 이미지를 대체할 때 사용 * Image() 생성자를 사용하여 캐시된 이미지 만드는 예 cachedImage=new Image() cachedImage.src="myImage.gif" = > 첫번째 문장은 새로운 image 객체를 만들고 그것을 cachedImage 변수에 대입하고, 두번째 문장은 image 객체의 src프로퍼티를 myImage.gif 이미지 파일로 설정한다. 이 경우 myImage.gif는 브라우저 캐시로 로드된다. 그러면 로드된 이미지는 cachedImage 변수를 사용하여 참조 가능하다. image 객체의 프로퍼티 프로퍼티 설 명 border <:IMG> 태그의 BORDER 속성의 값 complete 이미지가 완전히 로드되었는지 식별 height <:IMG> 태그의 HEIGHT 속성의 값 hspace <IMG> 태그의 HSPACE 속성의 값 lowsrc <IMG> 태그의 LOWSRC 속성의 값 name <IMG> 태그의 NAME 속성의 값 prototype image 객체에 사용자 지정 프로퍼티를 추가할 때 사용 src <IMG> 태그의 SRC 속성의 값 vspace <IMG> 태그의 VSPACE 속성의 값 width <IMG> 태그의 WIDTH 속성의 값 area 객체 이미지맵은 여러 가지 다른 영역으로 나누어져 있는 이미지로서 각각의 영역은 자체 URL과 관련되어 있다. 그리고 이러한 영역과 관련된 사용자 처리 방식으로 area 객체를 제공 area 객체의 프로퍼티 프로퍼티 설 명 hash area 객체의 HREF 속성의 파일 오프셋 부분 host area 객체의 HREF 속성의 호스트 이름 부분 hostname area 객체의 HREF 속성의 host:port 부분 href area 객체의 완전한 HREF 속성 pathname area 객체의 HREF 속성의 경로명 부분 port area 객체의 HREF 속성의 포트 부분 protocol area 객체의 HREF 속성의 프로토콜 부분 search area 객체의 HREF 속성의 쿼리 스트링 부분 target area 객체의 TARGET 속성 Array 객체 Array 객체를 사용하면 배열을 객체처럼 액세스 가능 Array 객체의 프로퍼티 length : 배열의 길이 식별 prototype : 모든 객체 유형이 지원하는 프로퍼티로 객체 유형에 대해 추가적인 프로퍼티 및 메소드 정의 가능 Array 객체의 메소드 toString() : 배열의 스트링 버전 리턴, 배열 요소는 컴마로 구분 join(separator) : 배열의 스트링 버전 리턴, 배열 요소는 seperator 스트링으로 구분, 분리자가 없으면 컴마로 구분 reverse() : 배열의 요소를 역순으로 바꿈 sort(comparisionFunction) : 비교 연산에 따라 배열의 요소 정렬. 비교 함수가 지정되면, 배열 요소는 사전순서로 정렬. 비교 연산이 지정되면 두개의 파라미터 p1,p2를 취하고, p1이 p2보다 작은 경우에는 음의 정수를 리턴하고, 같으면 0을 리턴하고, p1이 p2보다 크면 양의 정수 리턴 Boolean 객체 Boolean 객체를 사용하면 부울값은 객체로서 액세스 가능 Boolean 객체는 생성자에 대한 인자로서 값을 식별하여 만들어짐 myBoolean=new Boolean(false) yourBoolean=new Boolean(true) Boolean 객체의 프로퍼티 prototype : 모든 객체 유형이 지원하는 프로퍼티로 객체 유형에 대해 추가적인 프로퍼티 및 메소드 정의 가능 Boolean 객체의 메소드 toString() : 부울값에 해당하는 스트링 리턴 valueOf() : 객체의 값에 따라 true나 false로 리턴 Date 객체의 메소드 메 소 드 설 명 getDate() getUTCDate() setDate() setUTCDate() Date 객체의 날짜를 설정하거나 리턴 getDay() getUTCDay() Date 객체의 한 주의 날짜를 설정하거나 리턴 getHours() getUTCHours() setHours() setUTCHours() Date 객체의 시간를 설정하거나 리턴 getMilliseconds() getUTCMilliseconds() setMilliseconds() setUTCMilliseconds() Date 객체의 밀리초 값을 설정하거나 리턴 getMinutes() getUTCMinutes() setMinutes() setUTCMinutes() Date 객체의 분을 설정하거나 리턴 getMonth() getUTCMonth() setMonth() setUTCMonth() Date 객체의 달을 설정하거나 리턴 getSeconds() getUTCSeconds() setSeconds() setUTCSeconds() Date 객체의 초를 설정하거나 리턴 getTime() getUTCTime() Date 객체의 시간을 설정하거나 리턴 getTimeZoneOffset() Date 객체의 시간대 오프셋(분)을 리턴 getYear() getFullYear() getUTCFullYear() setYear() setFullYear() setUTCFullYear() Date 객체의 연도를 리턴하거나 설정한다. 완전한 연도를 나타내는 방법으로 4자리 연도 값을 사용한다. toGMTString() 날짜를 Internet GMT(Greenwich Mean Time) 포맷의 스트링으로 변환 toLocaleString() 날짜를 로케일(locale)포맷의 스트링으로 변환. 로케일 포맷이란 사용자가 위치해 있는 지형적 위치에서 일반적으로 사용하는 포맷 의미 toString() Date 객체의 스트링 값을 리턴 valueOf() 1970년 1월 1일 자정 이후의 밀리초 값 리턴 toUTCString() UTC에서 시간을 나타내는 스트링 값을 리턴 Date 생성자 생 성 자 설 명 Date() 현재 날짜와 시간으로 Date 인스턴스 만듬 Date(dateString) dateString 파라미터에 지정되어 있는 날짜로, Date 인스턴스를 만든다. dateString의 포맷은 "월,일,연도,시:분:초" Date(milliseconds) 1970년 1월 1일 자정 이후 지정된 밀리초 값으로 Date 인스턴스를 만든다. Date(year,month, day,hours,minutes, seconds,milliseconds) 년,월,일,시,분,초,밀리초 정수에 따라 지정된 날짜로 Date 인스턴스를 만든다. 연도와 월 파라미터는 제공되어야 하고 다른 나머지 파라미터가 포함되면 앞에 오는 모든 파라미터가 제공되어야 Function 객체 함수를 객체처럼 액세스 가능하고, 이 객체는 스크립트를 실행하는 동안에 함수를 동적으로 만들고 호출할 때 사용 Function 객체는 함수의 파라미터와 본문을 Function() 생성자에 제공하면 된다. variable=new Function("p1","p2", ... ,"pn","body") Function 객체 프로퍼티 length : 함수에 대해 정의된 파라미터의 숫자 식별 prototype : 모든 객체 유형이 지원하는 프로퍼티로 객체 유형에 대해 추가적인 프로퍼티 및 메소드 정의 가능 arguments : 호출시 함수에 전달되는 인자를 가리키는 배열 caller : 특정 함수를 호출한 함수를 가리킴 Function 객체의 메소드 toString() : 함수의 스트링 형태 리턴 valueOf() : 함수 자체 리턴 Global 객체 new Global() 을 통해서 명시적으로 만들거나, 참조할 수 없다. 대신 해당 프로퍼티와 메소드가 전역 변수와 함수로 직접 참조됨 Global 객체의 프로퍼티 Nan : 숫자가 아니라는 의미 Infinity : 양수 무한대 값 의미 Global 객체의 메소드 escape(string) : string을 새로운 스트링으로 변환 eval(x) : 표현식 x의 값을 계산하고 리턴 inFinite(number) : number가 유한하면 true를 리턴하고, 무한하면 false를 리턴 inNaN(number) : number가 숫자가 아니면 true를 리턴하고, 숫자이면 false를 리턴 parseFloat(string) : string을 부동 소수 값으로 파싱 parseInt(string,radix) : string을 밑이 radix인 정수로 파싱 unescape(string) : escape()에 들어 있는 스트링을 원래의 값으로 되돌린다. Math 객체 수학적 상수와 함수의 표준 라이브러리 제공 Math의 특수 인스턴스는 Math가 내장 객체이고 객체 유형이 아니기 때문에 만들어지지 않는다. Math 프로퍼티 프로퍼티 설 명 E Euler의 상수. 이것은 계산을 하는 어디에서나 발견할 수 있으며 자연대수의 기초 LN2 2의 자연대수. 이것은 자연대수와 밑이 2인 대수 사이의 전환에 사용되는 간단한 상수 LN10 10의 자연대수. LN2와 마찬가지로 대수 변환에 사용 LOG2E 밑이 2인 E의 대수. 이것은 밑이 10인 대수를 밑이 E인 대수로 변환시 사용 PI 원의 원주 대 지름의 비율 SQRT1_2 1/2의 제곱근은 많은 삼각법 계산에서 사용 SQRT2 2의 제곱근은 대수식에서 흔히 사용 Math 메소드 메 소 드 설 명 abs(x) x의 절대값 리턴 acos(x) x의 아크 코사인값 라디안으로 리턴 asin(x) x의 아크 사인값 라디안으로 리턴 atan(x) x의 아크 탄젠트 값을 라디안으로 리턴 atan2(x,y) (x,y)에 해당하는 극좌표의 각도를 리턴 ceil(x) x보다 크거나 작은 최소 정수값 리턴 cos(x) x의 코사인 값 리턴 exp(x) eX를 리턴 floor(x) x보다 작거나 같은 최대 정수값 리턴 log(x) x의 자연대수 리턴 max(x,y) x, y 중 큰 값 리턴 min(x,y) x, y 중 작은 값 리턴 pow(x,y) xy를 리턴 random() 0과 1사이의 임의의 숫자 리턴 round(x) x의 가장 가까운 정수로 반올림되는 값 리턴 sin(x) x의 사인값 리턴 sqrt(x) x의 제곱근 리턴 tan(x) x의 탄젠트 값 리턴 Number 객체 Number 객체 유형을 사용하면 숫자를 객체로 다룰 수 있다. Number 객체의 프로퍼티 MAX_VALUE : 숫자는 가능한 최대 수치값 MIN_VALUE : 숫자는 가능한 최소 수치값 NaN : 숫자가 아니다 NEGATIVE_INFINITY : 숫자가 음수 무한대 값 POSITIVE_INFINITY : 숫자가 양수 무한대 값 prototype : 모든 객체 유형이 지원 Number 객체의 메소드 toString(radix) : 밑이 radix인 숫자를 나타내는 스트링 리턴 valueOf() : Number 객체의 수치값 리턴 Object 객체 Object 객체는 다른 모든 객체들이 파생되어 나가는 기반 객체로 이것의 프로퍼티와 메소드는 다른 객체 유형들에서 사용 가능 Object 객체의 프로퍼티 prototype : 모든 객체 유형이 지원 constructor : 객체 생성자의 이름 식별 Object 객체의 메소드 toString() : 객체를 스트링 표현으로 바꾸는 역할 valueOf() : 객체와 관련된 경우의 원시값(숫자,스트링,부울값)을 리턴하고, 그렇지 않은 경우에는 객체 자체를 리턴 String 객체 스트링을 객체로 액세스 가능 String 객체의 프로퍼티 length : 문자에서 스트링의 길이 알아내는 역할 prototype : 모든 객체 유형이 지원 String 메소드 메 소 드 설 명 charAt(index) 메소드가 적용되는 스트링의 지정된 인덱스에 있는 문자로 구성된 스트링을 리턴 charCodeAt(index) 지정된 인덱스의 문자의 Unicode 인코딩 리턴 fromCharCode(codes) 문자 코드의 컴마로 구분된 시퀀스에서 스트링 만듬 indexOf(pattern) 스트링안에 들어있는 pattern 파라미터가 지정한 첫 번째 스트링의 인덱스 리턴, 패턴이 스트링 안에 들어있지 않으면 -1 리턴 indexOf(pattern,startIndex) startIndex가 지정한 위치에서 검색을 시작하는 것을 제외하면 indexOf(pattern) 메소드와 같다. lastIndexOf(pattern) 스트링에 들어 있는 pattern 파라미터가 지정한 마지막 스트링의 인덱스 리턴, 패턴이 스트링 안에 들어있지 않으면 -1 리턴 lastIndexOf(pattern,startIndex) startIndex가 지정한 위치에서 검색을 시작하는 것을 제외하면 lastIndexOf(pattern)과 같다. splitSeparator() 하나의 스트링을 분리자를 기반으로 하여 서브스트링의 배열로 분리 substring(startIndex) startIndex에서 시작하는 스트링의 서브스트링을 리턴 substring(startIndex,endIndex) startIndex에서 시작하고, endIndex에서 끝나는 스트링의 서브스트링을 리턴 toLowerCase() 소문자로 변환된 스트링의 복사본 리턴 toString() 객체의 스트링 값을 리턴 toUpperCase() 대문자로 변환된 스트링의 복사본 리턴 [출처] 자바스크립트의 모든것 |작성자 JYP
이온디
이온디 12년 전
대한민국 사회에서 예전 싸이월드의 미니홈피와 같이 하나의 소통 도구로 익숙해진 트위터 위젯은 블로그에서처럼 XE 레이아웃에서도 빛을 발합니다. 익숙한 UI와 간결하고 짧은 메세지는 방문자와 소통할 때 그 전달력에 있어서 아주 유용한 도구입니다. 웹에이전시의 작업 현황을 알리거나 개발의 진척을 알릴 때 혹은 자사의 상품이 출시되었을 경우 등등 가장 효과적인 공지판이 될 수 있습니다. 그런데 레이아웃에 트위터의 위젯을 넣으려면 설정 가능한 항목이 별로 없습니다. 그게 트위터의 매력… 대한민국 사회에서 예전 싸이월드의 미니홈피와 같이 하나의 소통 도구로 익숙해진 트위터 위젯은 블로그에서처럼 XE 레이아웃에서도 빛을 발합니다. 익숙한 UI와 간결하고 짧은 메세지는 방문자와 소통할 때 그 전달력에 있어서 아주 유용한 도구입니다. 웹에이전시의 작업 현황을 알리거나 개발의 진척을 알릴 때 혹은 자사의 상품이 출시되었을 경우 등등 가장 효과적인 공지판이 될 수 있습니다. 그런데 레이아웃에 트위터의 위젯을 넣으려면 설정 가능한 항목이 별로 없습니다. 그게 트위터의 매력이지만 디자인을 고려하면 좀 아쉬운 점이 있습니다. 다행히 자세히 보면 트위터 개인화 설정 위에 '커스텀 옵션' 링크가 있습니다. https://dev.twitter.com/docs/embedded-timelines#customization 간단하게 예제를 통해 살펴보도록 하겠습니다. <a class="twitter-timeline" data-theme="dark" data-link-color="#cc0000" width="300" height="500" href="https://twitter.com/twitterapi" data-widget-id="YOUR-WIDGET-ID-HERE" data-chrome="nofooter noborders transparent" lang="EN" data-tweet-limit="3">Tweets by @twitterapi</a> 대표적으로 설정할 수 있는 항목은 다음과 같습니다. (여기서 다 다룬 것은 아니니 좀 더 자세한 설명은 커스텀 옵션 페이지를 참조하세요.) 1. 테마 data-theme 2. 링크 색상 data-link-color 3. 넓이 width 4. 높이 height 5. 푸터 data-chorome="nofooter" 하단에 메세지 보내는 창입니다. 6. 보더 data-chorome="noborders" 트위터와 트위터 메세지 사이의 가로줄입니다. 7. 투명 data-chorome="transparent" 배경색상을 투명하게 설정합니다. 8. 언어 lang 9. 표시하는 트위터 갯수 data-tweet-limit 이렇게 설정이 가능하지만 여기서도 우리는 만족하지 못할 수도 있습니다. -_-; 그래서 XE Lab에 소개된 글을 가져와 붙입니다. http://www.xelab.net/index.php?mid=forum&category=2400&act=dispForumContent&document_srl=1963&cpage=1 간단하게 트윗 내용만 가져와서 뿌려줄 때 유용합니다. 상하단의 트위터 링크나 이미지는 디자이너 맘대로구요. CSS 설정도 가능합니다. tweeter.js 파일로 올려두겠습니다. twitter.js var t_username = 'kantsoft'; // username 대신 여러분의 아이디를 넣으세요 이 부분만 수정해서 사용하시면 됩니다. 그리고 위 파일을 레이아웃 파일에서 불러와줍니다. 이런 식으로요. <load target="./js/twitter.js" /> 그리고 출력을 원하는 장소에 아래 코드를 집어넣습니다. <div id="twitter_update_list" class="conts"></div> 이제 나머지 스타일시트를 작성해줍니다. 예제는 원 링크의 예제 그대로 가져다 붙입니다. #twitter_update_list {overflow:hidden;} #twitter_update_list li {border-bottom:1px solid #eaeaea; list-style:none; font-family:verdana;color:#999;padding:0;margin:5px 0;line-height:15px;position:relative;left:-1px;} #twitter_update_list li:first-child {margin:0 0 5px 0;} #twitter_update_list li a {color:#2893BB;text-decoration:none;} #twitter_update_list .twt_slash{ font-size:85%; color:#777;} #twitter_update_list .twt_time{ font-size:85%; color:#666;} #twitter_update_list .twt_time:hover{color:#2F7FBD;} #twitter_update_list .twt_reply{ font-size:85%; color:#666;} #twitter_update_list .twt_reply:hover{color:#2F7FBD;}
이온디
이온디 13년 전
1. Choose Components Icons 제외 Thumbnails 제외 3. Customize variables Links @linkColor #891B08 or #C83025 일반링크 691D1E (어두운빨강) 마우스오버 C83025 (밝은빨강) Scaffolding @bodyBackground #202020 @textColor #999999 Navbar @navibarHeight 35px 기본 폰트 크기 12pt … 1. Choose Components Icons 제외 Thumbnails 제외 3. Customize variables Links @linkColor #891B08 or #C83025 일반링크 691D1E (어두운빨강) 마우스오버 C83025 (밝은빨강) Scaffolding @bodyBackground #202020 @textColor #999999 Navbar @navibarHeight 35px 기본 폰트 크기 12pt 브랜드 색상 #F5F5F5 드랍다운 배경색상 121212 드랍다운 글자색상 595959 드랍다운마우스오버글자색상 A99B92 드랍다운마우스오버 491F05
이온디
이온디 13년 전
간단히 말하면 웹기반의 ui프레임웍입니다. 기존 웹기반의 프레임웍과 다른 점은 HTML5에 특화된 프레임웍이라는 점입니다. 그래서 구시대적인 table을 사용하지않았습니다. 센챠나 제이쿼리모바일보다는 좀더 낮은단계의 프레임웍입니다. 좀더 기초적인 부분의 유아이 엔진을 원하신다면 부트스트랩을 권합니다. (참고로 백본은 세트로 써야합니다.) http://twitter.github.com/bootstrap/index.html 부트스트랩이란? 출처 : h… 간단히 말하면 웹기반의 ui프레임웍입니다. 기존 웹기반의 프레임웍과 다른 점은 HTML5에 특화된 프레임웍이라는 점입니다. 그래서 구시대적인 table을 사용하지않았습니다. 센챠나 제이쿼리모바일보다는 좀더 낮은단계의 프레임웍입니다. 좀더 기초적인 부분의 유아이 엔진을 원하신다면 부트스트랩을 권합니다. (참고로 백본은 세트로 써야합니다.) http://twitter.github.com/bootstrap/index.html 부트스트랩이란? 출처 : http://martian36.tistory.com/1142 트위터 부트스트랩은 웹디자인을 쉽게하기 위해서 CSS의 클래스 선택자에 정의된 스타일시트와 자바스크립트 플러그인의 라이브러리입니다. html로 웹페이지의 뼈대를 만들고 스타일시트에서 레이아웃을 만들기 위한 CSS의 속성과 값을 입력하는 대신 미리 정의된 클래스 선택자를 html 코드에 삽입만 하면 레이아웃과 각종 요소가 만들어집니다. 부트스트랩의 스타일시트는 7000여 라인으로 만들어져 있어서 웹페이지를 만들기 위한 거의 모든 요소에 대해서 정의를 해놓았기 때문에 손쉽게 웹사이트를 만들 수 있는 플랫폼으로 큰 인기를 얻고 있습니다. 웹사이트를 너무 쉽게 만들 수 있다는 점에서 진정한 웹디자인이 아니라는 우려의 목소리도 나올 정도입니다. 스타일시트의 재활용 스타일시트로 웹디자인을 하다보면 수많은 선택자에 CSS 속성과 값이 선언돼있습니다. 스타일시트를 다뤄본 분이라면 아이디 선택자 보다는 클래스 선택자를 사용하는 것이 훨씬 편리하다는 것을 알게 됩니다. 왜냐하면 한번 선언해 놓으면 여러 곳에서 재사용이 가능하기 때문이죠. 하나의 클래스 선택자를 만들고 이 선택자에 대해서 버튼을 만들어 놓으면 버튼이 필요한 곳에 이 선택자를 사용하면 됩니다. 색상 변경이 필요할 경우 다른 선택자를 이용해 배경 색상만 변경해주면 되겠죠. 다음과 같이 저장 버튼을 위한 클래스 선택자를 만들고 버튼을 위한 속성과 값을 선언했습니다. <button class="save">저장하기</button> .save { background: #ddd; padding: 5px 10px; border-radius: 5px; border: 1px solid #999; color: #333; text-shadow:1px 1px 1px #fff; } 그러면 위에서 선언된 대로 웹페이지에는 버튼이 만들어질 것입니다. 그런데 위의 .save라는 선택자는 특수한 경우에 사용되는 단어가 됩니다. 즉 저장할 버튼에만 사용될 것을 예상할 수 있습니다. 그러면 이 선택자의 이름을 일반적인 용어를 사용해서 .button이라고 만들어주면 다른 웹페이지에서 버튼을 만들고자 할 때 이 선택자를 넣어주면 될 것이고 단지 저장하기 버튼에만 사용하는 것이 아니라 어떤 곳에서도 재활용이 가능해질 것입니다. <button class="button">저장하기</button> .button { background: #ddd; padding: 5px 10px; border-radius: 5px; border: 1px solid #999; color: #333; text-shadow:1px 1px 1px #fff; } 그런데 버튼의 색상을 변경해서 적용하고자 할 경우 다음과 같이 할 것입니다. <button class="button-blue">저장하기</button> .button-blue { background: #08c; padding: 5px 10px; border-radius: 5px; border: 1px solid #999; color: #fff; text-shadow:1px 1px 1px #333; } 그런데 위의 버튼을 보면 공통적으로 적용되는 곳이 있습니다. .blue-button에는 .button이라는 선택자에 이미 있는 속성이 있으니 다음과 같이 수정하고 두개의 선택자를 사용하면 같은 버튼이 나타나면서 코드의 양은 줄어들게 됩니다. <button class="button button-blue">저장하기</button> .button-blue { background: #08c; border: 1px solid #999; color: #fff; text-shadow:1px 1px 1px #333; } 녹색 버튼을 만들고자 하면 이미 만들어놓은 두개의 선택자에 새로운 선택자를 추가하고 배경 색상만 변경해서 적용하면 될 것입니다. <button class="button button-blue button-green">저장하기</button> .button-green { background: #51a351; } 간단한 예를 들었지만 이것이 복잡한 형태의 그래디언트 효과나 박스 그림자 효과 등 여러가지가 추가된다면 이러한 방식의 스타일시트 재활용이 아주 편리해질 것입니다. 트위터 부트스트랩의 스타일시트는 이러한 이미 선언해 놓은 속성과 값을 재활용하기 쉽게 만들어놓은 스타일시트 라이브러리입니다. 위와 같은 버튼 뿐만 아니라 form에 사용되는 각종 태그, 아이콘, 드랍다운 메뉴 등 웹페이지에 사용되는 모든 요소에 대해서 스타일시트를 미리 만들어 놓고 html 페이지의 태그에 선택자만 삽입하면 모든 디자인이 자동으로 만들어지도록 해놓은 것입니다. 부트스트랩은 이처럼 간단하게 선택자만 삽입해도 웹페이지가 멋지게 만들어지지만 기능을 확장시키기 위해서 자바스크립트를 사용하고 있습니다. 그 기능이란 팝업창, 드랍다운 메뉴, 툴팁, 이미지 슬라이더, 등 가장 많이 사용하는 자바스크립트가 포함돼있으며 버전이 높아지면서 기능이 추가되고 있습니다. 부트스트랩이 나타난 배경 웹개발 시 하나의 프로젝트는 한사람에 의해 만들어지는 것이 아니라 개발자의 취향에 따라 도구도 다르고 자신만의 라이브러리를 사용하기도 해서 서로 다른 인터페이스를 사용한 여러 사람들의 공동작업으로 이루어집니다. 그러면 디자인도 달라지고 관리하기도 힘들죠. 트위터의 개발자인 마크 오토(Mark Otto)와 제이콥 쏜튼(Jacob Thornton)은 이러한 다른 인터페이스에서 오는 관리상의 어려운 점을 개선하기 위해서 정형화된 인터페이스를 가진 툴을 만들었습니다. 정식으로 만들어진 것이 아니라 처음에는 주말과 가외 시간을 이용해서 1년동안 작업을 해서 다른 개발자들에게 선보였는데 반응이 좋아 많은 개발자들이 사용하기 시작했고 단순한 툴이 아닌 플랫폼으로 발전했습니다. http://twitter.github.com/bootstrap/index.html 2011년 8월에 트위터는 부트스트랩을 오픈소스로 공개했습니다. 그 반응은 폭발적이어서 오픈소스 웹하드 서비스인 깃허브(Github)에서 최고의 인기를 얻고 있으며 부트스트랩과 관련된 프로젝트는 현재 수백개에 이르고 있습니다. http://www.bootstraphero.com/the-big-badass-list-of-twitter-bootstrap-resources 위 링크로 가면 아래의 화면이 나오는데 현재 268개의 프로젝트가 부트스트랩과 관련돼 있습니다. 위 사이트에 있는 것만이 아니라 다른 프로젝트도 많이 있으며 새롭게 발견되는 대로 추가되고 있습니다. 왜 이런 프로젝트들이 부트스트랩과 관련을 맺으려고 할까요? 그만큼 부트스트랩이 획기적인 플랫폼이라는 것을 증명하는 것입니다.
이온디 14년 전
각 대학의 중간고사가 시작됨에 따라 토익, 자격증, 공모전 등 과외활동을 하며 취업준비를 하던 학생들도 전공공부에 매달리게 되었다. 그러나 보통 1~2주 정도사이에 시험준비에만 힘을 쏟다 보면, 그동안 해 오던 토익 등 과외 학습의 흐름이 끊어져 다시 집중하는데 시간과 노력이 필요한 경우가 많다. 특히 토익의 경우 많은 경험자들이 매일 꾸준히 공부하라고 권하고 있는데, 이렇게 한달 중 약 절반 가량을 쉬게 되면 그 만큼 학습기간이 길어질 수 밖에 없다. 그렇다고 학점 관리를 소흘히 할 수… 각 대학의 중간고사가 시작됨에 따라 토익, 자격증, 공모전 등 과외활동을 하며 취업준비를 하던 학생들도 전공공부에 매달리게 되었다. 그러나 보통 1~2주 정도사이에 시험준비에만 힘을 쏟다 보면, 그동안 해 오던 토익 등 과외 학습의 흐름이 끊어져 다시 집중하는데 시간과 노력이 필요한 경우가 많다. 특히 토익의 경우 많은 경험자들이 매일 꾸준히 공부하라고 권하고 있는데, 이렇게 한달 중 약 절반 가량을 쉬게 되면 그 만큼 학습기간이 길어질 수 밖에 없다. 그렇다고 학점 관리를 소흘히 할 수도 없는 일. 그래서 공부의 계획성과 시간분배가 중요하다. 시험 공부를 우선으로 하되 반드시 매일 일정 시간은 토익공부에 투자할 수 있도록 한다. 특히 흐름을 잃기 쉬운 리스닝과 꾸준한 공부가 필요한 독해는 되도록 빠뜨리지 않는 것이 좋다. 효과적인 시간 활용에는 토익 인터넷 강의도 유리한데 스케줄에 맞춰 원하는 시간과 장소에서 수강할 수 있기 때문이다. 따로 토익 공부를 할 시간이 없다면 강의를 수강하는 것만으로도 토익에 대한 감은 유지할 수 있다. 하지만 이렇게 토익 공부를 꾸준히 하는 것의 중요성은 알면서도 제대로 지키지 못해 장기간 공부를 하는 학습자들도 많은데 의지가 약하다면 동기부여 장치를 마련해 두는 것을 추천한다. 토익인강 EBSlang ‘토익목표달성’은 성실한 수강생에게 수강료를 현금으로 돌려주는 환급제도를 운영중이다. ‘스파르타식 토익인강’을 표방하고 있는 이 강의는 출석, 과제, 테스트 응시를 빠짐없이 하기만 하면 성적과 관계없이 수강료의 50%를 돌려준다. 이러한 동기부여에도 불구, 혼자 공부하기가 힘든 학생들을 위해 특별히 수강생 전용 카페도 운영한다. 학생간 정보공유는 물론 강사들이 직접 참여하여 학생들의 공부를 돕고 있다. 과정은 750점 달성코스와 900점 달성코스가 있으며, 신규 기수는 오는 18일까지 모집 중이다. 보다 자세한 사항 확인 및 수강신청은 EBSlang 홈페이지(www.ebslang.co.kr) 에서 할 수 있다.
이온디 16년 전
이탈리아의 코메디언이자 작가인 지아니 판토니는 게으름을 찬양하는 모임을 열며 "게으름은 악이 아니라 지적인 능력"이라고 했다. 세상은 비록 그의 말에 후한 인심을 내어주지 않았지만, 게으름과 여유에서 무한한 상상력을 얻을 수 있다는 것은 느긋한 자들을 위한 변명만은 아닐 것이다. 6월의 찰랑이는 햇살을 이불삼아 게으른 오수(午睡)를 만끽하는 찰나의 시간은 그 어떠한 유혹보다 매력적이다. 그리고 여기, 당신의 낮잠을 더욱 달게 해줄 음악이 있다. 바로 스페인의 레이블, 시에스타의 레코딩들이다. … 이탈리아의 코메디언이자 작가인 지아니 판토니는 게으름을 찬양하는 모임을 열며 "게으름은 악이 아니라 지적인 능력"이라고 했다. 세상은 비록 그의 말에 후한 인심을 내어주지 않았지만, 게으름과 여유에서 무한한 상상력을 얻을 수 있다는 것은 느긋한 자들을 위한 변명만은 아닐 것이다. 6월의 찰랑이는 햇살을 이불삼아 게으른 오수(午睡)를 만끽하는 찰나의 시간은 그 어떠한 유혹보다 매력적이다. 그리고 여기, 당신의 낮잠을 더욱 달게 해줄 음악이 있다. 바로 스페인의 레이블, 시에스타의 레코딩들이다. 널리 알려진 대로 '낮잠'을 뜻하는 스페인어 '시에스타(Siesta)'는 음악과 만나 찰진 궁합을 들려준다. 마테오 귀스카프레(Mateo Guiscafré)와 마뉴엘 토레사노(Manuel Torresano)에 의해 92년 설립된 시에스타는 보사노바, 인디 팝, 이지리스닝 계열의 음악을 위주로 하는 소규모 인디 레이블이다. 낭만적인 나른함을 사랑하는 이들은 루즈한 듯 보이지만 정처 없는 루저들은 아니다. 예로부터 알짜배기 예술가들은 한량이라 불리는 사람들이 주를 이뤘으며, 그들은 종종 자신들의 예술성을 바탕으로 담대하고 도도한 자신감을 표현해왔다. 시에스타 역시 마찬가지다. 그들은 사무엘 베케트의 "게으름에 대한 열정보다 더 강렬한 열정은 없다"는 말을 인용하여 영혼과 미학, 공감대를 이루는 정체성을 목적으로 이 달콤한 레이블을 만들었으며, 한술 더 떠 이렇게 만들어진 시에스타는 후대들을 위한 임무라고 선언했다. 라 부에나 비다(La Buena Vida) 시에스타에는 모국인 스페인 외에도 미국과 영국을 비롯하여 프랑스, 스웨덴, 그리스 등 다 국적의 아티스트들이 둥지를 틀고 있다. 뮤지션들의 다양한 배경과 각자가 추구하는 음악적 성향은 시에스타라는 이름으로 분명한 공통점을 갖게 되는데, 그것은 인생에 대한 낙관적 자세다. 시에스타가 추구하는 에티튜드는 그들의 대표적 뮤지션, 라 부에나 비다(La Buena Vida)의 팀 네임에서도 알 수 있다. '멋진 삶'이라는 뜻을 가진 라 부에나 비다의 음악은 스페인이라면 일반적으로 연상되는 라틴계의 강렬함보다 지중해의 여유로운 정서에 더욱 맞물려있다. 여섯 명의 멤버로 구성된 이 혼성밴드는 내년이면 스무 돌을 맞는 만큼 폭넓은 음악적 변천사를 겪어왔다. 90년대의 이들은 말랑거리는 기타 팝에 오케스트레이션을 첨가하여 빈티지한 감성을 보듬어내더니, 요즘은 일렉트로닉 사운드를 향한 지대한 관심을 진행 중이다. 루이스 필립(Louis Philippe) 라 부에나 비다의 조력자이자 시에스타의 프로듀서로도 잘 알려진 루이스 필립(Louis Philippe)도 시에스타의 간판 뮤지션이다. 60년대 중반의 여성 싱어송라이터, 재키 드 새넌(Jackie de Shannon)에 바치는 트리뷰트 앨범 [Jackie Girl]으로 솔로 활동을 시작한 그는 코넬리우스와 같은 시부야계의 뮤지션들에게 절대적인 지지를 받고 있는 것으로도 유명하다. 또한 가벼운 컨템포러리 팝으로 국내에서도 많은 사랑을 받고 있는 버몽(Beaumont)역시 시에스타라면 빼놓을 수 없는 팀이다. 벨 엔 세바스찬 풍의 새침한 멜로디를 자랑하는 버몽은 키스 거들러(Keith Girdler)와 폴 스튜어트(Paul Stewart)로 이루어졌으며, 트위팝 계열의 대표적인 밴드였던 블루보이(Blueboy)와 아라베스크(Arabesque)를 거쳐 현재의 버몽으로 정착했다. 그러나 뭐니뭐니해도 시에스타를 가장 확실하게 설명해 줄 뮤지션으로는 리타 칼립소(Rita Calypso)가 제격이다. 본국에서는 그다지 큰 유명세를 누리지 못했지만, 이 여가수의 음색은 우리나라 사람들에게 이미 친숙하다. 버트 바카라(Burt Bacharach)의 'Paper Mache'를 리메이크하여 이영애가 출연한 CF에 삽입했기 때문인데, 이 후 리타 칼립소의 음악들은 스페니쉬 뮤지션으로는 보기 드물게 라이센스되어 큰 인기를 얻었다. 장식이 제거된, 그래서 오히려 감칠맛 도는 리타 칼립소의 목소리는 보사노바의 거장 라몬 레알(Ramon Leal)의 어레인지를 거쳐 시에스타 식 포크를 재구성한다. [Travel Trilogy]중 1부와 2부 시디아트웍 시에스타는 자신들의 다양한 음악을 가볍게 접할 수 있도록 컴필레이션 작업을 꾸준히 진행해왔다. 게다가 그것은 샘플러 수준의 얄팍한 상술이 아니라 하나의 주제를 표현하는 아트워크 쪽에 더욱 가깝다. 요즘 같은 시대에 미덕이라 칭송받아 마땅한 이들 컴필레이션의 대표작으로는 여행 3부작으로 잘 알려진 [Travel Trilogy]시리즈와 2002년 발매된 크리스마스 앨범[Fantasía de Navidad], 그리고 축구를 테마로 한 [Derby]가 있다. 축구를 좋아하는 시에스타의 컴필레이션 [Derby], 하지만 축구와 관련된 노래는 별로 없다. 특히 시에스타의 소재지인 마드리드의 빅 라이벌, 레알 마드리드와 아틀레티코 마드리드에 대한 애정을 담아낸 [Derby]앨범은, 취향에 따라 커버 이미지를 교체할 수 있도록 디자인되어 있어 눈길을 끈다. 이와 같이 시에스타는 독특한 커버워크로 레이블의 자부심을 마음껏 드러내는데, 파스텔 톤의 아기자기한 일러스트가 새겨진 디지팩은 이미 시에스타의 트레이드마크로 자리 잡았다. 이들은 흔하게 볼 수 있는 플라스틱 케이스와 성의 없이 찍어낸 부클릿으로 자신들의 음악에 담긴 정체성이 훼손되는 것을 원치 않는다. 이것은 앨범커버 위에 사뿐히 올라앉은 시에스타 특유의 발매넘버링이 어느새 200을 넘긴 지금까지, 한번도 비켜가지 않은 일종의 신념이다. 이처럼 낭창한 감수성과 긴 시간에도 빛바래지 않는 그들의 취향은 타이트하게 조율된 당신의 일상을 헤어놓고 매혹적인 휴식의 시간을 갖게 해준다. 우연히 들른 레코드 가게에서 '시에스타'라는 레이블 네임이 찍혀있는 시디를 발견했다면, 당신은 이미 즐거운 게으름의 준비를 마친 것이다. ⓒ boraby & Harper's Bazzar Korea 2006. 요즘 신규사이트 런칭때문에 정신이 없으삼. 출석미달 방지 겸 저의 휀들의 목마른 기다림에 한줄기 단비도 뿌릴겸 이번 달 바자에 들어간 시에스타 관련 기사를 올립니다. 요새는 얼른 프로젝트 잘 끝내고 팔자좋게 늘어져서 낮잠이나 푹 잤으면 싶다는 소망 밖에는.
이온디 17년 전
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <meta http-equiv=cache-control content=no-cache> <meta http-equiv=pragma content=no-cache> <!-- title --> <title>반응 좋은 메뉴 스크립트</title> <script type="text/javascript" l… <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR"> <meta http-equiv=cache-control content=no-cache> <meta http-equiv=pragma content=no-cache> <!-- title --> <title>반응 좋은 메뉴 스크립트</title> <script type="text/javascript" language="javascript"> //<![CDATA[ var subMPrefix = 'sub'; var openLayer = null; function mouseOut(e, mainObj, subObjNo){ subObj = document.getElementById(subMPrefix + subObjNo); if (!e) var e = window.event; var coord = getObjCoordinates(mainObj); var mouse = getMouseXY(e); if(mouse.x < coord.x || mouse.x > coord.x + coord.w || mouse.y < coord.y|| mouse.y > coord.y + coord.h) { hideLayer(subObj); } } function getObjCoordinates(obj) { var result = new Object(); result.x = getOffsetLeft(obj); result.y = getOffsetTop(obj); result.w = obj.offsetWidth; result.h = obj.offsetHeight; return result; } function getMouseXY(e) { if (!e) var e = window.event; var result = new Object(); result.x = document.all ? event.clientX + (document.body.scrollLeft == 0 ? document.documentElement.scrollLeft : document.body.scrollLeft) : e.pageX; result.y = document.all ? event.clientY + (document.body.scrollTop == 0? document.documentElement.scrollTop : document.body.scrollTop) : e.pageY; return result; } function checkMouse(e) { if (openLayer != null) { if (!e) var e = window.event; var tg = (window.event) ? e.srcElement : e.target; var obj = openLayer.parentNode; while (tg && tg != obj && tg.nodeName != 'BODY') { tg= tg.parentNode; } if (tg == obj) { return; } else { hideLayer(openLayer); openLayer = null; } } } function getOffsetLeft (el) { var ol = el.offsetLeft; while ((el = el.offsetParent) != null) { ol += el.offsetLeft; } return ol; } function getOffsetTop (el) { var ot = el.offsetTop; while((el = el.offsetParent) != null) { ot += el.offsetTop; } return ot; } function showLayer(objNo) { obj = document.getElementById(subMPrefix + objNo); obj.style.display = 'block'; openLayer = obj; } function hideLayer(obj) { obj.style.display = 'none'; } // function addEvent( obj, type, fn ) { if (obj.addEventListener) { obj.addEventListener( type, fn, false ); EventCache.add(obj, type, fn); } else if (obj.attachEvent) { obj["e"+type+fn] = fn; obj[type+fn] = function() { obj["e"+type+fn]( window.event ); } obj.attachEvent( "on"+type, obj[type+fn] ); EventCache.add(obj, type, fn); } else { obj["on"+type] = obj["e"+type+fn]; } } var EventCache = function(){ var listEvents = []; return { listEvents : listEvents, add : function(node, sEventName, fHandler){ listEvents.push(arguments); }, flush : function(){ var i, item; for(i = listEvents.length - 1; i >= 0; i = i - 1){ item = listEvents[i]; if(item[0].removeEventListener){ item[0].removeEventListener(item[1], item[2], item[3]); }; if(item[1].substring(0, 2) != "on"){ item[1] = "on" + item[1]; }; if(item[0].detachEvent){ item[0].detachEvent(item[1], item[2]); }; item[0][item[1]] = null; }; } }; }(); addEvent(window,'unload',EventCache.flush); // addEvent(document,'mousemove',checkMouse); //]]> </script> <!-- document-specific inline style --> <style type="text/css"> /*<![CDATA[*/ body { font-size: 9pt; margin:0; padding:50px 0 0;} #mWrap { position:absolute; } .mainM { float: left; background: #eee; border:1px solid #333; width: 150px; padding: 6px 4px 0; margin: 0 2px; } .subM { margin: 8px 0; display:none; } .subM div { background: #ddd; margin: 6px 0 6px 20px; padding: 6px; border:1px solid #333;} .subM div div div{ background: #999; margin: 6px 0 6px 20px; padding: 6px; border:1px solid #333; } .mainM1 { background: #eee; border:1px solid #333; width: 150px; padding: 6px 4px 0; margin: 0 2px; border-bottom: 0px;} .lastM { border-bottom: 1px solid #333;} .subM1 { margin: 8px 0; display:none; } .subM1 div { background: #ddd; margin: 6px 0 6px 20px; padding: 6px; border:1px solid #333;} .subM1 div div div{ background: #999; margin: 6px 0 6px 20px; padding: 6px; border:1px solid #333; } div.clear { clear: both; height:0px; font-size:0px; } /*]]>*/ </style> </head> <body> <table align="center" width="90%" height="90%" cellspacing="0" border="1" cellpadding="0"> <tr> <td height="30" valign="top"> <div id="mWrap"> <div class="mainM" onmouseover="showLayer(1)" onmouseout="mouseOut(event, this, 1)">메인메뉴1 <div class="subM" id="sub1"> <div><a href="#">서브메뉴1</a></div> <div><a href="#">서브메뉴1</a></div> <div><a href="#">서브메뉴1</a></div> </div> </div> <div class="mainM" onmouseover="showLayer(2)" onmouseout="mouseOut(event, this, 2)">메인메뉴2 <div class="subM" id="sub2"> <div><a href="#">서브메뉴2</a></div> <div><a href="#">서브메뉴2</a></div> <div><a href="#">서브메뉴2</a></div> </div> </div> <div class="mainM" onmouseover="showLayer(3)" onmouseout="mouseOut(event, this, 3)">메인메뉴3 <div class="subM" id="sub3"> <div><a href="#">서브메뉴3</a></div> <div><a href="#">서브메뉴3</a></div> <div><a href="#">서브메뉴3</a></div> </div> </div> <div class="mainM" onmouseover="showLayer(4)" onmouseout="mouseOut(event, this, 4)">메인메뉴4 <div class="subM" id="sub4"> <div><a href="#">서브메뉴4</a></div> <div><a href="#">서브메뉴4</a></div> <div><a href="#">서브메뉴4</a></div> </div> </div> <div class="clear"></div> </div> </td> </tr> <tr> <td height="100%"> <div id="mWrap"> <div class="mainM1" onmouseover="showLayer(11)" onmouseout="mouseOut(event, this, 11)">메인메뉴1 <div class="subM1" id="sub11"> <div><a href="#">서브메뉴11</a></div> <div><a href="#">서브메뉴11</a></div> <div><a href="#">서브메뉴11</a></div> </div> </div> <div class="mainM1" onmouseover="showLayer(21)" onmouseout="mouseOut(event, this, 21)">메인메뉴2 <div class="subM1" id="sub21"> <div><a href="#">서브메뉴21</a></div> <div><a href="#">서브메뉴21</a></div> <div><a href="#">서브메뉴21</a></div> </div> </div> <div class="mainM1" onmouseover="showLayer(31)" onmouseout="mouseOut(event, this, 31)">메인메뉴3 <div class="subM1" id="sub31"> <div><a href="#">서브메뉴31</a></div> <div><a href="#">서브메뉴31</a></div> <div><a href="#">서브메뉴31</a></div> </div> </div> <div class="mainM1 lastM" onmouseover="showLayer(41)" onmouseout="mouseOut(event, this, 41)">메인메뉴4 <div class="subM1" id="sub41"> <div><a href="#">서브메뉴41</a></div> <div><a href="#">서브메뉴41</a></div> <div><a href="#">서브메뉴41</a></div> </div> </div> <div class="clear"></div> </div> </td> </tr> </table> </body> </html>
이온디 17년 전
<body onLoad="init();" ondblClick="textMenu();"> <style> A:link{text-decoration:none} A:visited{text-decoration:none} #clickBar { cursor: hand; position: absolute; top: 0; left: 0; width: 12; height: 55; z-index: 2; background-color: white; color: #666666; font-fami… <body onLoad="init();" ondblClick="textMenu();"> <style> A:link{text-decoration:none} A:visited{text-decoration:none} #clickBar { cursor: hand; position: absolute; top: 0; left: 0; width: 12; height: 55; z-index: 2; background-color: white; color: #666666; font-family: 돋움체; font-size: 9pt; text-align: center; border: 1 #666666 solid; visibility: visible; } #menuDiv { position: absolute; z-index: 1; top: 0; left: 0; height: 55; border: 1 gray solid; font-size: 9pt; font-family: 돋움체; visibility: hidden; } //--> </style> <script language="JavaScript"> <!-- function init() { popText = menuDiv.style; tab = clickBar.style; menuVisibility = 0; } function textMenu() { if (menuVisibility) { tab.visibility = "hidden"; tab.left = 0; tab.visibility = "visible"; popText.visibility = "hidden"; menuVisibility = 0; return; } if (!menuVisibility) { tab.visibility = "hidden"; tab.left = 25; tab.visibility = "visible"; popText.visibility = "visible"; menuVisibility = 1; } } //--> </script> <div align="justify" id="clickBar" onClick="textMenu();"> 간<br> 편<br> 메<br> 뉴 </div> <div id="menuDiv"> <a href="#top"><font color="#999999">위로</font></a><font color="#999999"><br> </font><a href="http://www.yahoo.co.kr"><font color="#999999">야후</font></a><font color="#999999"><br> </font><a href="http://www.NZEO.com"><font color="#999999">NZEO</font></a><font color="#999999"><br> </font><a href="http://pain.new21.org"><font color="#999999">소설</font></a> </div> <br><br><br><bR><bR><bR><bR><bR><br><br><br><br><bR><bR><bR><bR><bR><br><br><br><br><bR><bR><bR><bR><bR><br><br><br><br><bR><bR><bR><bR><bR><br><br><br><br><bR><bR><bR><bR><bR><br><br><br><br><bR><bR><bR><bR><bR><br> <b>아무데서나 Double Click 해보세요.. </b>