仕事でとあるPHPで書かれたオープンソースのWEBシステムの改造をしている。
システムとしては良く出来ていて、改造を入れるためのハンドルがいたるところにあって、それを使ったイベントハンドラを書いてプラグインとすることができるようになっている。
見た目を変えるためにはそういうハンドラをたくさん書いてレイアウトを変更していくのだが、今日はCSSではまった。
テーマとかプラグインのなかでCSSがたくさん重なって行くようになっているのだが、なかなか書き換えられないidがあった。単に塗りつぶしたいのだが、そう書いたつもりでも別の色が出てしまうのである。
散々いろいろ試した後で、CSSが重なっていることに思い至った。下から順にファイルをチェックして、どうしても色が変えられなかった所にブラウザごとのグラデーションをかける記述があることに気づいた。
要するにCSSはidやalassごとに後から記述したものが入れ替わるわけではなくて、順に合成されていくのだな。だから同じパラメータは書き換わるが、先のファイルで定義したパラメータは書き換えられなければそのまま生きている。
後の定義で不要なパラメータを無効にする方法がわからないのでグラデーションの記述を所定の同じ色で塗りつぶすようにした。
とりあえず見た目はそれらしくなったので良しとしよう。
でもこんなことに半日費やすなんて勿体無いなあと思った次第。
午後はもう少しペースをあげなければ。