jQuery 「CSS操作」独自のCSSプロパティを作成する

.cssHooksはjQueryで利用できるCSSプロパティを独自に作成可能です。「get:function」には値を取得する際に実行したい処理を記述し、「set:function」には値を設定するときに実行したい処理を記述します。.cssHooksはベンダープレフィックスに依存しないCSSプロパティを作成するのに役立ちます。

書式

$.cssHooks[" CSSプロパティ名 "] = {
  get: function(elem, computed, extra){
    値を取得するときに実行したい処理
  },
  set: function(elem, value){
    値を設定するときに実行したい処理
  }
}
$.cssHooks["widthHeight"] = {
  get: function(elem, computed, extra){
    return $(elem).css("width");
  },
  set: function(elem, value){
    $(elem).css({ width: value, height: value });
  }
}

サンプル

widthとheightのサイズを一括で取得・設定するCSSプロパティ。elemはセレクタの要素が設定されます。サンプルでは「get:function」でセレクタのwidth及びheightを配列に格納しているので、widthHeightを実行したときにセレクタのwidthおよびheightを取得してきます。「set:function」はセレクタのwidth及びheightを一括で変更できるよう、.css()メソッドを用いて記述します。valueには設定される値が入るため、サンプルの場合だと250pxの値がvalueに渡され縦横の辺がそれぞれ150pxのdiv要素に変化します。また、サイズを変更したdiv要素のwidth及びheightを.css()メソッドと作成したwidthHeightプロパティを用いて変数whに代入しテキストの表示に利用します。

<html>
      <head>
        <meta charset="UTF-8">
        <title>テストページ</title>
        <script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
        <style>
          div{
            background: red;
            width: 100px;
            height: 100px;
            margin: 10px;
          }
          span {
            margin: 10px;
          }
        </style>
  </head>
  <body>
    <div></div>
    <div></div>
    <div></div>
    <span></span>
    <script>
      $.cssHooks["widthHeight"] = {
        get: function(elem, computed, extra){
          return [$(elem).width(), $(elem).height()];
        },
          set: function(elem, value){
          $(elem).css({ width: value, height: value });
        }
      }
      $("div:last").css("widthHeight","150px");
      var wh = $("div:last").css("widthHeight");
      $("span").text('div:lastのサイズは、'+wh+'です。');
    </script>
    </body>  
</html>
実行結果
実行結果