Dev Blog

스크립트 & 소스코드 공유

실무에서 유용하게 쓰는 스크립트와 코드 조각을 블로그 게시판으로 저장하고 공유합니다.

108건의 글

CSS 선택자(Selector) 참조 매뉴얼

CSS 선택자를 정리한 참조 매뉴얼이다. 클래스·ID·요소 선택자, 속성 선택자([target], [attr^=], [attr$=], [attr*=] 등), 가상 클래스(:hover, :focus, :first-child, :before, :after 등)와 CSS 버전별 지원 범위, 그리고 조합 선택자(후손·자식·인접 형제)를 예시와 함께 표로 정리했다.

选择器 例子 例子描述 CSS
.class .intro 选择 class="intro" 的所有元素。 1
#id #firstname 选择 id="firstname" 的所有元素。 1
* * 选择所有元素。 2
element p 选择所有 <p> 元素。 1
element,element div,p 选择所有 <div> 元素和所有 <p> 元素。 1
element element div p 选择 <div> 元素内部的所有 <p> 元素。 1
element>element div>p 选择父元素为 <div> 元素的所有 <p> 元素。 2
element+element div+p 选择紧接在 <div> 元素之后的所有 <p> 元素。 2
[attribute] [target] 选择带有 target 属性所有元素。 2
[attribute=value] [target=_blank] 选择 target="_blank" 的所有元素。 2
[attribute~=value] [title~=flower] 选择 title 属性包含单词 "flower" 的所有元素。 2
[attribute|=value] [lang|=en] 选择 lang 属性值以 "en" 开头的所有元素。 2
:link a:link 选择所有未被访问的链接。 1
:visited a:visited 选择所有已被访问的链接。 1
:active a:active 选择活动链接。 1
:hover a:hover 选择鼠标指针位于其上的链接。 1
:focus input:focus 选择获得焦点的 input 元素。 2
:first-letter p:first-letter 选择每个 <p> 元素的首字母。 1
:first-line p:first-line 选择每个 <p> 元素的首行。 1
:first-child p:first-child 选择属于父元素的第一个子元素的每个 <p> 元素。 2
:before p:before 在每个 <p> 元素的内容之前插入内容。 2
:after p:after 在每个 <p> 元素的内容之后插入内容。 2
:lang(language) p:lang(it) 选择带有以 "it" 开头的 lang 属性值的每个 <p> 元素。 2
element1~element2 p~ul 选择前面有 <p> 元素的每个 <ul> 元素。 3
[attribute^=value] a[src^="https"] 选择其 src 属性值以 "https" 开头的每个 <a> 元素。 3
[attribute$=value] a[src$=".pdf"] 选择其 src 属性以 ".pdf" 结尾的所有 <a> 元素。 3
[*attribute*=value*] a[src*="abc"] 选择其 src 属性中包含 "abc" 子串的每个 <a> 元素。 3
:first-of-type p:first-of-type 选择属于其父元素的首个 <p> 元素的每个 <p> 元素。 3
:last-of-type p:last-of-type 选择属于其父元素的最后 <p> 元素的每个 <p> 元素。 3
:only-of-type p:only-of-type 选择属于其父元素唯一的 <p> 元素的每个 <p> 元素。 3
:only-child p:only-child 选择属于其父元素的唯一子元素的每个 <p> 元素。 3
:nth-child(n) p:nth-child(2) 选择属于其父元素的第二个子元素的每个 <p> 元素。 3
:nth-last-child(n) p:nth-last-child(2) 同上,从最后一个子元素开始计数。 3
:nth-of-type(n) p:nth-of-type(2) 选择属于其父元素第二个 <p> 元素的每个 <p> 元素。 3
:nth-last-of-type(n) p:nth-last-of-type(2) 同上,但是从最后一个子元素开始计数。 3
:last-child p:last-child 选择属于其父元素最后一个子元素每个 <p> 元素。 3
:root :root 选择文档的根元素。 3
:empty p:empty 选择没有子元素的每个 <p> 元素(包括文本节点)。 3
:target #news:target 选择当前活动的 #news 元素。 3
:enabled input:enabled 选择每个启用的 <input> 元素。 3
:disabled input:disabled 选择每个禁用的 <input> 元素 3
:checked input:checked 选择每个被选中的 <input> 元素。 3
:not(selector) :not(p) 选择非 <p> 元素的每个元素。 3
::selection ::selection 选择被用户选取的元素部分。 3

jQuery로 Ajax 폼 전송하기 (submit 이벤트 가로채기)

jQuery의 submit 이벤트를 가로채 페이지 새로고침 없이 Ajax로 폼을 전송하는 방법이다. event.preventDefault()로 기본 전송을 막고, 서버에 Ajax 사용을 알리는 hidden 필드를 설정한 뒤 폼의 action URL과 serialize() 데이터를 준비한다. 이후 $.get으로 데이터를 보내고 응답받은 HTML 조각을 body에 추가하는 전체 코드를 담고 있다.

//form요소를 찾아서 그의  submit 이벤트를 가로챈다.
  $('form').submit(function (event) {
    //ajax를 사용하여 폼을 전송시키고자 한다(페이지의 새로고침을 막는다)
    event.preventDefault();
    //필요하다면, 유효성 검사 코드를 이부분에 추가하도록 한다.
    // .....
    //이는 ajax 가 사용되었음을 서버측에 알리는 용도이다.
    $('input[name='usingAJAX']', this).val('true');
    //폼에대한 참조를 저장한다.
    var $this = $(this);
    //폼요소의 url을 가로챈다.
    var url = $this.attr('action');
    //전송시킬 폼 데이터를 준비한다.
    var dataToSend = $this.serialize();
    // 서버측처리이후에 실행되어야 할 콜백함수
    var collback = function (dataReseived) {
      //폼을 숨긴다(폼에대한 참조를 $this에 저장해 놓았기에 가능)
      $this.hide();
      //서버로부터 다음과 같은  HTML 조각을 반환 맏을 것이기에 DOM에 이 HTML 조각이 추가된다.
      //&lt;div id='result'&gt;Your favorite food is pizza!
      // Thanks for telling us!&lt;/div&gt;
      $('body').append(dataReseived);
    };
    //수신되는 데이터의 형식(이번예제에서는 html 코드가 수신될 것이라 기대한다)
    var tyhpeOfDataToReceive = 'html';
    //폼을 전송한 후 데이터의 수신을 기다린다.
    $.get(url, dataToSend, collback, tyhpeOfDataToReceive);
  });//.submit() 을 닫는다.

까페24 호스팅에서 PHP 에러 메시지 출력하기

까페24 호스팅에서 PHP 작업 시 에러 메시지가 화면에 표시되지 않아 디버깅이 어려운 문제의 해결책을 정리했다. .htaccess에 php_value error_reporting 22527과 php_flag display_errors on을 추가하고, 코드 상단에 ini_set("display_errors", 1)와 error_reporting(E_ALL ^ E_NOTICE)를 넣거나 set_error_handler 클래스를 활용하는 방법을 설명한다.

[문제점]

최근 까페24호스팅에서 php작업시

화면에 에러메세지가 나오지 않아 디버깅시에 매우 곤란함

[해결책]

.htaccess 내용에 아래추가.

=====================================

php_value error_reporting 22527

php_flag display_errors on

=====================================

  1. 인클루드 시키는 라이브러리 젤첨에

ini_set("display_errors", 1);

error_reporting(E_ALL ^ E_NOTICE);

추가

  1. 넷상에 공개된 set_error_handler 클래스 이용

다중 브라우저 호환 CSS 이미지 좌우 반전(미러) 효과

한 장의 이미지로 좌우가 대칭인 미러 이미지를 만드는 CSS 기법을 소개한다. 기존에 IE에서만 동작하던 필터 방식 대신, 파이어폭스·크롬 등 다중 브라우저에서 지원되는 transform: scaleX(-1) 스타일을 이용하며, 이미지에 적용하는 CSS 정의와 HTML에서 사용하는 예제 코드를 함께 보여준다.

今天接到一个需求,通过一张图片得到其镜像对称的图片。本来说是后台处理的,但这样除了技术上难实现之外,还带来了资源消耗的问题,相当于每张图都要存储一个副本了。

只记得以前用过css的滤镜可以实现这个,但只在IE下有效。后来找到一个兼容多浏览器的样式,大爱。

css样式定义:

.flip-horizontal {
-moz-transform: scaleX(-1);
-webkit-transform: scaleX(-1);
-o-transform: scaleX(-1);
transform: scaleX(-1);
filter: fliph; /*IE*/ }
.flip-vertical {
-moz-transform: scaleY(-1);
-webkit-transform: scaleY(-1);
-o-transform: scaleY(-1);
transform: scaleY(-1);
filter: flipv; /*IE*/ }

HTML引用示例:

<img src="/data/editor/2004/logo-zhidao_Znb6RGemhY4.gif" class="flip-horizontal" />
<img src="/data/editor/2004/logo-zhidao_Znb6RGemhY4.gif" class="flip-vertical" />

jQuery BlackAndWhite 플러그인으로 이미지 흑백 효과 적용하기

jQuery.BlackAndWhite 플러그인을 이용해 이미지에 흑백 효과를 적용하는 방법을 4단계로 설명한다. jQuery와 플러그인 스크립트를 로드하고, 흑백 처리할 이미지의 래퍼에 bwWrapper 클래스를 지정한 뒤 CSS로 래퍼 스타일을 설정하고, window load 시점에 플러그인을 초기화한다. hoverEffect, intensity, responsive, speed 등 주요 옵션도 소개한다.

1 add jQuery and plug in to the page

<script src="js/jquery.min.js"></script>
<script src="js/jQuery.BlackAndWhite.js"></script>

2 add this class to the wrapper of the image that you want make in Black and White

<div class="bwWrapper">
<img src="path/to/your/image" width="image width" height="image height">
</div>

3 set the wrapper in this way from the css:

.bwWrapper {
position:relative;
display:block;
}

4 initialize the plug in on window load (no $(document).ready()) :

$(window).load(function(){
$('.bwWrapper').BlackAndWhite({
hoverEffect : true, // default true
// set the path to BnWWorker.js for a superfast implementation
webworkerPath : false,
// for the images with a fluid width and height
responsive:true,
// this option works only on the modern browsers ( on IE lower than 9 it remains always 1)
intensity:1,
speed: { //this property could also be just speed: value for both fadeIn and fadeOut
fadeIn: 200, // 200ms for fadeIn animations
fadeOut: 800 // 800ms for fadeOut animations
}
});
});


Let's create something great together.

프로젝트 문의 및 견적 요청은 언제든 환영합니다.