HTML/CSSコーダーにもデザインカンプを半透明で重ねる機能の自作をお勧めする件
ピクセルパーフェクトを目指すにあたって、ページにデザインカンプを半透明で重ねると便利です。今回は、Tampermonkeyを使ってデザインカンプを半透明で重ねる機能を自作しようという記事です。
「デザインカンプを半透明で重ねる」こと自体はPerfectPixel
などの拡張機能でも可能なので、今回は自己満でやってる感が強めとなっております(笑) PerfectPixel
についてはこちら↓。
今回も、こちらのサイト↓から、ポートフォリオのテンプレートをお借りして説明します。
対象の読者
- デザインカンプを元にHTML/CSSをコーディングする人
- HTML/CSSの文法は分かっていて、大まかにはカンプ通りにできる人
- 特に、CSSの微調整の効率を上げたい人
- JavaScriptの基本的な文法は分かっている人
Tampermonkeyのインストール
Tampermonkeyという拡張機能を使うと、ページ表示時に自動的にJavaScriptを実行させることができます。
こちら↓から「Chromeに追加」ボタンでインストールは完了です。
ピンのアイコンをクリックしておくと、右上に常に表示されるようになります。
Tampermonkeyのアイコンを右クリックして「拡張機能を管理」をクリック。
Tampermonkey最初のサンプル
最初のサンプルとしてコンソールにtest
と出力してみましょう。
ページを表示している状態でTampermonkeyのアイコン→「新規スクリプトを追加」をクリックします。
このような画面になります。このスクリプトの名前1
、実行されるURL2
、実行する内容3
が表示されます。
match
をfile:///*
に変更1
、function
の中に、console.log("test")
を追加2
して、保存3
します。
インストール済みUserScript
1
という画面に切り替わり、今作成したもの2
が表示されます。
元のポートフォリオの画面に戻り画面を更新1
すると、コンソール2
に、test
3
と表示されます。
カンプを重ねて表示する
フォルダ構成
ここではソースコードをsrcフォルダ、デザインカンプをdocフォルダに格納しています。PC用とSP用があれば両方置いておきましょう。 htmlファイルからの相対パスで ../doc/pc.png
にカンプがある状態で説明します。
デザインカンプがPhotoshopやXDの場合は、jpgかpngで書き出しておきましょう。
スクリプト
以下全体をコピーして、先ほどのスクリプトに上書きしてください。
// ==UserScript==
// @name カンプを表示
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match file:///*htm*
// @icon https://www.google.com/s2/favicons?domain=undefined.
// @grant none
// ==/UserScript==
(function () {
let widthToFilename = {
[375]: "../doc/sp.png", // ここを書き換える
[1366]: "../doc/pc.png", // ここを書き換える
};
let elm = document.createElement("div");
elm.classList.add("__comp");
document.body.style.position = "relative";
document.body.appendChild(elm);
let mq = Object.keys(widthToFilename).map(k => `
@media (width: ${k}px){
.__comp {
background-image: url(${widthToFilename[k]});
}
}
`).join(" ");
let stl = document.createElement("style");
stl.innerHTML = `
.__comp {
background-size: 100vw;
position: absolute;
top: 0px;
width: 100%;
height: 20000px;
background-position-x: center;
background-repeat: no-repeat;
z-index: 9999;
pointer-events: none;
animation: 0.5s linear infinite blink;
animation-timing-function:steps(5,jump-none);
}
${mq}
@keyframes blink {
0% { opacity: 0; }
50% { opacity: 0; }
100% { opacity: 1; }
}
`;
document.body.appendChild(stl);
})();
「ここを書き換える」部分は、カンプの横幅と、htmlファイルからみたカンプのパスを記載します。今回はPC版1366px
、SP版375px
で説明します。
使い方
ポートフォリオの画面を更新します。通常はカンプは表示されません。
画面の横幅をカンプの幅に合わせると、カンプが半透明で点滅表示されます。まずはPC版のカンプ1366px
に合わせて画面の横幅を1366px
にしてみたところです。タイトルのフォントサイズや、本文の位置がズレていることを確認できます。
次に、SP版のカンプ375px
に合わせて画面の横幅を375px
にしてみたところです。これもタイトルのフォントサイズなどがズレていますね。
デベロッパーツールでズレを修正していきます。点滅して見えなくなったらピッタリ重なっているということです。
軽く解説
widthToFilename
変数(赤線部分)をオブジェクトとして定義し、キーにカンプの横幅(青線部分)、値にカンプのパス(緑線部分)を記述します。map
でメディアクエリの形に整形しています。
例えば、
{
[375]: "../doc/sp.png",
[1366]: "../doc/pc.png",
}
は、以下のように整形されます。カンプをbackground-image
で表示している感じです。
@media (width: 375px){
.__comp {
background-image: url(../doc/sp.png);
}
}
@media (width: 1366px){
.__comp {
background-image: url(../doc/pc.png);
}
}
position
等1
でカンプをページ全体に重なるように表示、pointer-events
2
でデベロッパーツールの「ページ内の要素を選択して検査」ボタンの挙動を阻害しないようにする、aniimation
等3
で点滅表示、といった感じです。0.5s
の間に、opacity
を0 → 0 → 1
と変化させています。steps
は負荷低減のため入れてます。
Author And Source
この問題について(HTML/CSSコーダーにもデザインカンプを半透明で重ねる機能の自作をお勧めする件), 我々は、より多くの情報をここで見つけました https://qiita.com/yymmt/items/88e65733208853ddc010著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .