본문 바로가기
프로그래밍/jQuery

jQuery API 정복 - 속성을 제어, css()

by zoo10 2011. 11. 22.

.css()

원문 링크 http://api.jquery.com/css/

함수들

css( propertyName )
  • .css( propertyName )
css( propertyName , value )
  • .css( propertyName, value )
  • .css( propertyName, function(index, value) )
  • .css( map )

.css( propertyName )Returns : String

개요 : 일치하는 요소들 중에 첫번째 요소의 속성값을 반환합니다.

  • .css( propertyName )
  • propertyName CSS 속성값

.css() 함수는 첫번째 element의 속성값을 알아내는 아주 좋은 함수입니다. 특히 여러 속성들을 다르게 취급하는 브라우저들을 대상으로 할때 아주 유용합니다. ( Internet Explorer의 currentStyleruntimeStyle 속성들을 비교하기 위한 표준 기반(standard-based)의 브라우져의 getComputedStyle() 함수입니다.) 예를 들어, Internet Explorer의 DOM 표현에서 float 속성은 styleFloat로 다루는 반면, W3C 표준을 따르는 브라우져에서는 cssFloat로 사용할 수 있습니다. .css() 함수는 이런 경우에 동일한 결과를 나타내도록 구성되어 있는 것입니다. 예를 들어, float 속성값을 가져오려면 아래와 같이 스크립트를 작성하면 됩니다.

  1. $('div.left').css('float');
  2. $('div.left').css('cssFloat');
  3. $('div.left').css('styleFloat');

또한, jQuery는 두 단어 이상으로 표현되는 CSS나 DOM 도 다룰 수 있습니다. jQuery는 .css('background-color').css('backgroundColor')를 사용하여 동일한 결과를 만들어 낼 수 있습니다. 다른 브라우져에서도 #FFF, #ffffff, and rgb(255,255,255) 와 같이 문자 표현이 동일하지 않지만 논리적으로는 같은 CSS 컬러값을 반환하게 됩니다.

줄임말로 표현된 CSS 속성표현은 지원하지 않습니다.(e.g. margin, background, border) 즉, margin 에 대한 정보를 얻기를 원한다면 다음과 같이 사용해야 합니다. $(elem).css('marginTop')$(elem).css('marginRight') 와 같은 코드가 필요합니다..

예 제  
박스를 클릭하면 색깔값을 반환합니다.

<!DOCTYPE html>
<html>
<head>
  <style>
div { width:60px; height:60px; margin:5px; float:left; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  
<span id="result">&nbsp;</span>
<div style="background-color:blue;"></div>
<div style="background-color:rgb(15,99,30);"></div>

<div style="background-color:#123456;"></div>
<div style="background-color:#f11;"></div>
<script>
$("div").click(function () {
  var color = $(this).css("background-color");
  $("#result").html("That div is <span style='color:" +
                     color + ";'>" + color + "</span>.");
});

</script>

</body>
</html>

미리보기

색깔 rgb 값 반환됩니다.

 

.css( propertyName, value )Returns : jQuery

개요 : 일치하는 요소들에 하나 이상의 CSS 속성을 추가시킬 수 있습니다.

  • .css( propertyName, value )
  • propertyName CSS 속성명
  • value CSS 속성값
  • .css( propertyName, function(index, value) )
  • propertyName CSS 속성명
  • function(index, value) index에 해당하는 위치에 추가할 속성값
  • ..css( map )
  • map 속성명과 속성값으로 구성된 세트(map)

.prop() 함수나 .css() 함수를 사용하면 빠르고 쉽게 새로운 속성을 추가할 수 있습니다. 이 함수들은 속성명과 속성값을 별개의 인자로 다룰 수 있습니다. 또한 key와 value를 한쌍으로 single map을 사용할 수도 있습니다.(이 부분은 우리나라 말로 번역하기가 어렵네요.)

jQuery는 두 단어 이상으로 표현되는 CSS나 DOM 도 다룰 수 있습니다.(위에 쓴말을 왜 똑같이 쓰는지.. ㅡㅡ;) 예를 들면, jQuery는 .css({'background-color': '#ffe', 'border-left': '5px solid #ccc'}).css({backgroundColor: '#ffe', borderLeft: '5px solid #ccc'}) 두 스크립트의 결과를 보여줍니다.

.css() 함수를 set 하는 용도(딱히 한글용어가 쿨럭;;)로 사용될 때, jQuery는 style 속성을 편집하게 됩니다. $('#mydiv').css('color', 'green') 스크립트는 document.getElementById('mydiv').style.color = 'green'와 같습니다. (이 뒤에 2문장이 더 있는데 의미 파악이 정확하지가 않아 삭제합니다.)

jQuery 1.6에 와서, .css() 함수는 .animate()함수에서 사용되는 relative 속성값을 사용할 수 있게 되었습니다. Relative 속성값은 += 또는 -= 같은 사용법으로 현재 값을 증가시키거나 감소시킬수 있습니다. 만약 어떤 요소의 padding-left 가 10px 이었다면, .css( "padding-left", "+=15" ) 의 스크립트를 적용하면 padding-left 값은 25px가 되게 됩니다.

jQuery 1.4부터는 .css() 인자로 속성값을 반환하는 함수할 수 있게 되었습니다.

아래 예는 일치하는 요소의 width 값을 증가시키는 스크립트입니다.

$('div.example').css('width', function(index) {
  return index * 50;
});

Note: 만약 인자로 사용된 함수에서 반환한 값이 없거나 (ie. function(index, style){})) undefined 를 반환한다면, 현재 상태를 변화시키지는 않습니다. 이것은 선택적으로 특정 기준을 적용하고 싶을때 유용한 방법이 됩니다.

예 제  
mouseover 이벤트 시 p 태그 안의 폰트색을 변화시킵니다.

<!DOCTYPE html>
<html>
<head>
  <style>
  p { color:blue; width:200px; font-size:14px; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  
  <p>Just roll the mouse over me.</p>

  <p>Or me to see a color change.</p>
  
<script>
  $("p").mouseover(function () {
    $(this).css("color","red");
  });
</script>

</body>
</html>

미리보기

 

예 제  
id=#box 의 width를 200 pixel 만큼 증가시킵니다.

<!DOCTYPE html>
<html>
<head>
  <style>
  #box { background: black; color: snow; width:100px; padding:10px; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  
  <div id="box">Click me to grow</div>
  
<script>
  $("#box").one( "click", function () {
    $( this ).css( "width","+=200" );
  });
</script>

</body>
</html>

미리보기

 

예 제  
p 태그 안의 텍스트를 클릭하면 강조합니다.

<!DOCTYPE html>
<html>
<head>
  <style>
  p { color:blue; font-weight:bold; cursor:pointer; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  
<p>
  Once upon a time there was a man
  who lived in a pizza parlor. This
  man just loved pizza and ate it all 
  the time.  He went on to be the
  happiest man in the world.  The end.
</p>
<script>
  var words = $("p:first").text().split(" ");
  var text = words.join("</span> <span>");
  $("p:first").html("<span>" + text + "</span>");
  $("span").click(function () {
    $(this).css("background-color","yellow");
  });

</script>

</body>
</html>

미리보기

텍스트를 클릭해 보세요. 노란색 배경이 생깁니다.

 

예 제  
마우스를 올리면 새로운 스타일을 적용합니다.

<!DOCTYPE html>
<html>
<head>
  <style>
  p { color:green; }
</style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  
  <p>Move the mouse over a paragraph.</p>
  <p>Like this one or the one above.</p>

<script>
  $("p").hover(function () {
    $(this).css({'background-color' : 'yellow', 'font-weight' : 'bolder'});
  }, function () {
    var cssObj = {
      'background-color' : '#ddd',
      'font-weight' : '',
      'color' : 'rgb(0,40,244)'
    }
    $(this).css(cssObj);
  });
</script>

</body>
</html>

미리보기

텍스트에 마우스를 올려보세요. 노란색 배경이 생기고 텍스트가 굵어집니다.

 

예 제  
클릭할때 마다 빨간 배경색이 확장됩니다.

<!DOCTYPE html>
<html>
<head>
  <style>
  div { width: 20px; height: 15px; background-color: #f33; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  
  <div>click</div>
  <div>click</div>

<script>
  $("div").click(function() {
    $(this).css({
      width: function(index, value) {
        return parseFloat(value) * 1.2;
      }, 
      height: function(index, value) {
        return parseFloat(value) * 1.2;
      }

    });
  });
</script>

</body>
</html>

미리보기

텍스트에 마우스를 올려보세요. 노란색 배경이 생기고 텍스트가 굵어집니다.

 

대체적으로 내용이 많아서 해석이 바보같네요. 킁... 중요한 함수인데 설명이 좀 그렇습니다. 예제를 보시면 그리 어렵지 않으실 것 같네요.

그럼 즐프하세요.

※ 본 예제는 http://www.jquery.com 에 있는 내용임을 밝힙니다.