「この無料ブログ『position』が使えないぞ!」そんなときどうする?
無料ブログや一部のCMSでは、JavaScriptどころか、CSSの position: absolute;
や fixed
が使えないことがあります。
「サイドバーの外に要素を出したい」「画面端に注意文を表示したい」そんなときに position
が使えないと、レイアウトが崩れて困りますよね。
この記事では、position
が使えない環境でもできる代替テクニックを紹介します。
PR表記やアフィリエイト対応にも使えるので、テンプレート化にもおすすめです!
「PR表記は目立つ場所に」というけど貼れないが?
以前書いた「JavaScriptで簡単にステマ規制対策の対応できる」って記事⇩

だけど、JavaScriptがそもそも使えないって無料ブログもある。
そういう場合、大体あるフリースペースで対応するのだけど、場所が悪いときがある。
サイドバーの広告の下だけとか、トップページにだけ適応されるとか…
広告貼ってる記事の目立つ場所にって言ってるのに
「じゃあ、CSSで場所を指定しよう」とposition:absolute;
を指定してみるも、使用禁止styleで使えない。
え?広告妨害かな?
しかしここで泣き寝入りする拙者ではないのだよ
編み出した対応方法
<div style="text-align:center; font-size:0.8rem; z-index:999; transform: translateX(calc(10vw - 100%)) translateY(calc(-130vh + 100%)); width: 26rem;">※当サイトは一部広告を含みます。Amazonアソシエイト参加者です。</div>
これを使っている場所にあわせてこねくり回す。
親のDIVタグのサイズも場所も階層も、実質無視できる。
『translateX』の指定は
『vw』が画面の横サイズ、『100%』が文入れたDIVの横サイズ
『translateY』で指定は
『vh』が画面の縦サイズ、『100%』が文入れたDIVの縦サイズ
例えば、こんな感じで変えたりする。
<div style="text-align:center; font-size:0.8rem; transform: translateX(calc(65vw - 100%)) translateY(calc(-395vh - 100%)); z-index:999;width: 26rem;">※当サイトは一部広告を含みます。Amazonアソシエイト参加者です。</div>
だが、注意点が1つ
自動でheader部分に広告が入るとかで高さが変わるとか、
ブラウザを動かすことで幅が変わる部分とか
そういうとこに貼ると思わぬ動きをすることがある。
なので、もし変わる可能性があるなら、タグに直接css書かないで、classやidを指定して
@media (max-width: 320px) { /* 横幅が320px以下の場合に適用するスタイル */ div#pr-box-id { transform: translateX(calc(●vw - ▲%)) translateY(calc(-■vh - ▼%)); } } @media (min-width: 800px) { /* 横幅が800px以上の場合に適用するスタイル */ div#pr-box-id { transform: translateX(calc(▼vw - ●%)) translateY(calc(-▲vh - ▼%)); } }
みたいに書き換えるとうまくいく可能性がある。
めんどくさいけど。
コメント