LoginSignup
4
1

More than 5 years have passed since last update.

16進数のカラーコードをrgba変換する関数

Last updated at Posted at 2017-12-22

概要

透明度のある背景色を動的に設定したいなと思い関数を作成しました。
経緯としては、BEMでいうModifierで色の属性をわけるような対応でもいいのですが、微妙な透明度や色の違いによりクラスが増えてきたため動的に設定することにしました。

引数について

$color_code/color_codeは、#から始まる16進数
$alpha/alphaは、デフォルト値を1とした透明度

PHP

カラーコードを定数などで共通管理しておけば以外と管理しやすいです。

xxx.php
function getConversionRgba($color_code, $alpha = 1) {
    $color_code = preg_replace('/#/', '', $color_code);

    $rgba_code['red']   = hexdec(substr($color_code, 0, 2));
    $rgba_code['green'] = hexdec(substr($color_code, 2, 2));
    $rgba_code['blue']  = hexdec(substr($color_code, 4, 2));
    $rgba_code['alpha'] = $alpha;
    $rgba_code['full']  = implode(',', $rgba_code);

    return $rgba_code;
}

Javascript

こっちはおまけみたいな感じです。

xxx.js
function getConversionRgba(color_code, alpha = 1) {
    var rgba_code = [];

    rgba_code['red']   = parseInt(color_code.substring(1,3), 16);
    rgba_code['green'] = parseInt(color_code.substring(3,5), 16);
    rgba_code['blue']  = parseInt(color_code.substring(5,7), 16);
    rgba_code['alpha'] = alpha;
    rgba_code['full']  = Object.values(rgba_code).join(',');

    return rgba_code;
}
4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1