編集画面の縦方向の伸縮

前ページの「Ameblo Writer(Compact)」の更新により、編集画面の下部パーツの位置が「可変」になりました。 これは、このスタイルのコンセプトから必須の進化と考えていますが、デジタル時計「Time On My Side D」を下部パーツの位置に配置していたので、問題が生じました。

 

下は私の時計の配置で、「コメント・リブロク・アメンバー」の設定を使わないので、その上に配置していました。

 

 

しかし、編集画面の高さが可変になると、下の様に「編集枠」の中や、逆にウインドウの外に表示される状態になります。

 

 

これは、デジタル時計の上下方向の配置を「position: fixed」「top: 固定値」で指定しているためです。 この配置の指定コードを「vh」を使って「ウインドウの高さ」に対応するものにすれば、編集画面の変化に対応できます。

 

ここで、デジタル時計「Time On My Side D」の配置コードは、2つのタイプに分かれる事になります。 従来タイプはウインドウ上辺からの位置が固定されるもので、今回必要になったのは、ウインドウ下辺からの位置が固定されるものです。 この2種の配置方法は相容れないので、選択式にする必要が出て来ました。

 

また、円形のアナログ時計の方は、デザイン上でウインドウ下部の配置に適しないと思われ、配置方法の選択は採り入れない事にしました。

 

 

 

タイプを切り換える方法 

これまで時計のサイズ変更は、アイコン「⏰」をクリックする方式でしたから、これを「Ctrl+Click」する事で、配置タイプを変更する様にしました。

 

  ❶「⏰」は従来のウインドウ上辺からの位置が固定の配置タイプ

 

 

  ➋「⏱」はウインドウ下辺からの位置が固定の配置タイプ

 

 

❶と❷が、アイコンを「Ctrl+Click」する毎に切り替わります。

 

なお、「Time On My Side D」は「HOME画面」「編集画面」で動作します。 それぞれはドメインが異なります。 このため、各画面での配置タイプ・配置位置・サイズなどは全く別個に登録され、違ったスタイルで使用できます。

 

また、どちらかの画面の時計表示が不要な場合は、コード最初の「@match」パラメーターの行を削除すれば、時計が表示されなくなります。

 

 

 

「Time On My Side D」ver. 0.9 を利用するには 

このツールは Chrome・Edge / Firefox の拡張機能「Tampermonkey」上で動作します。 以下に、このツールの導入手順を簡単に説明します。

 

❶「Tampermonkey」を導入します

使用しているブラウザに拡張機能「Tampermonkey」を導入する事が必要です。 以下のページに簡単な導入の説明があるので参照ください。

 

 

❷「Tampermonkey」にスクリプトを登録します

●「Tampermonkey」の「」マークの「新規スクリプト」タブを開きます。

 

 

 

●「新規スクリプト」には、最初からテンプレートが記入されています。 これは全て削除して、完全に空白の編集枠に 下のコードをコピー&ペーストします。

 

〔コピー方法〕 軽量シンプルなツール「PreBox Button   」を使うと

  コード枠内を「Ctrl+左Click」➔「Copy code 」を「左Click」

  の操作で、掲載コードのコピーが可能になります。

 

● 最後に「ファイル」メニューの「保存」を押すと、ツールが使用可能になります。

 

 

〔 Time On My Side D 〕ver. 0.9 デジタル時計版

 

// ==UserScript==
// @name         Time On My Side D
// @namespace    http://tampermonkey.net/
// @version      0.9
// @description  HOME・編集画面のデジタル時刻表示
// @author       Ameba Blog User
// @match        https://www.ameba.jp/home
// @match        https://blog.ameba.jp/ucs/entry/srventry*
// @exclude      https://blog.ameba.jp/ucs/entry/srventrylist.do*
// @exclude      https://blog.ameba.jp/ucs/entry/srventryinsertend.do
// @exclude      https://blog.ameba.jp/ucs/entry/srventryupdateend.do
// @exclude      https://blog.ameba.jp/ucs/entry/srventryinsertdraft.do
// @exclude      https://blog.ameba.jp/ucs/entry/srventryupdatedraft.do
// @exclude      https://blog.ameba.jp/ucs/entry/srventryouterpreview.do
// @noframes
// @grant        none
// ==/UserScript==


main();

function main(){
    let w_type=0; // 配置タイプ
    let w_size=0;
    let x_p=0;
    let y_p=0;

    let w_cookie_pos=get_cookie('time_d_pos');
    if(w_cookie_pos!=0 && w_cookie_pos.split(':')[0]){
        x_p=w_cookie_pos.split(':')[0]; }
    if(w_cookie_pos!=0 && w_cookie_pos.split(':')[1]){
        y_p=w_cookie_pos.split(':')[1]; }
    if(x_p!=0 && y_p!=0){ // Cookieの更新
        document.cookie='time_d_pos='+x_p+':'+y_p+'; Max-Age=2592000'; }

    let w_cookie_type=get_cookie('time_d_type');
    if(w_cookie_type){ // Cookieの更新
        w_type=w_cookie_type;
        document.cookie='time_d_type='+w_type+'; Max-Age=2592000'; }

    let w_cookie_siz=get_cookie('time_d_siz');
    if(w_cookie_siz){ // Cookieの更新
        w_size=w_cookie_siz;
        document.cookie='time_d_siz='+w_size+'; Max-Age=2592000'; }



    let wd_inner=
        '<span id="w_icon"></span>'+
        '<span id="time_disp"></span>'+
        '<style>'+
        '#d_watch { position: fixed; z-index: 10; '+
        'font: bold 16px Meiryo; color: #0292a5; background: #fff; '+
        'height: 27px; padding: 1px 0 0 6px; box-sizing: border-box; '+
        'border: 1px solid #ccc; border-radius: 3px; width: 240px; } '+
        '#w_icon { display: inline-block; width: 28px; vertical-align: 1px; }';

    let base=document.querySelector('body');
    let watch=document.createElement('div');
    watch.setAttribute('id', 'd_watch');
    watch.style.left='calc(50% - '+x_p+'px)';
    watch.setAttribute('draggable', 'true');
    watch.innerHTML=wd_inner;
    if(!base.querySelector('#d_watch')){
        base.appendChild(watch); }

    let w_icon=document.querySelector('#w_icon');
    if(w_type==0){
        watch.style.top=y_p+'px';
        w_icon.textContent='⏰'; }
    else if(w_type==1){
        watch.style.top='calc(100vh - '+ y_p+'px)';
        w_icon.textContent='⏱'; }

    let time_d=setInterval(disp_watch, 1000);

    function disp_watch(){
        let d_watch=document.querySelector('#d_watch');
        let time_disp=document.querySelector('#time_disp');
        let now=new Date();
        get_d(now);

        function get_d(time){
            let Year=time.getFullYear();
            let Month=getdouble(time.getMonth()+1);
            let Date=getdouble(time.getDate());
            let Hour=getdouble(time.getHours());
            let Min=getdouble(time.getMinutes());
            let Sec =getdouble(time.getSeconds());

            function getdouble(number){
                return ("0" + number).slice(-2); }

            if(w_size==0){
                d_watch.style.width='240px';
                time_disp.innerHTML=
                    Year+"."+Month+"."+Date+" "+Hour+":"+Min+":"+Sec; }
            else if(w_size==1){
                d_watch.style.width='190px';
                time_disp.innerHTML=
                    Month+"."+Date+" "+Hour+":"+Min+":"+Sec; }
            else if(w_size==2){
                d_watch.style.width='122px';
                time_disp.innerHTML=
                    Hour+":"+Min+":"+Sec; }}}


    w_icon.onclick=function(event){
        event.stopImmediatePropagation();
        drage=0;
        if(event.ctrlKey){
            let x=event.clientX-shiftX;
            let y=event.clientY-shiftY;
            if(w_type==0){
                w_type=1;
                let ch=window.innerHeight;
                y=ch-y;
                d_watch.style.top='calc(100vh - '+ y+'px)';
                w_icon.textContent='⏱'; }
            else{
                w_type=0;
                d_watch.style.top=y+'px';
                w_icon.textContent='⏰'; }
            document.cookie=
                'time_d_pos='+(document.body.offsetWidth/2-x)+':'+y+'; Max-Age=2592000';
            document.cookie='time_d_type='+w_type+'; Max-Age=2592000'; }
        else{
            if(w_size==0){
                w_size=1; }
            else if(w_size==1){
                w_size=2; }
            else if(w_size==2){
                w_size=0; }
            document.cookie='time_d_siz='+w_size+'; Max-Age=2592000'; }}


    let target=document.querySelector('body'); // 監視 target
    let monitor=new MutationObserver(hide);
    monitor.observe(target, {childList: true});

    function hide(){
        let js_container=document.querySelector('#js-container');
        if(js_container){
            let d_watch=document.querySelector('#d_watch');
            if(js_container.classList.contains('is-invisible--absolute')==true){
                d_watch.style.display='none'; }
            else{
                d_watch.style.display='block'; }}}


    let d_watch=document.querySelector('#d_watch');
    let drage=0; // ドラッグ処理中の管理
    let shiftX; // ホールド箇所による位置ズレ補正
    let shiftY; // ホールド箇所による位置ズレ補正


    d_watch.onmousedown=function(event){
        drage=1;
        shiftX=event.clientX-d_watch.getBoundingClientRect().left;
        shiftY=event.clientY-d_watch.getBoundingClientRect().top; }

    d_watch.onmouseup=function(event){
        drage=0; }

    let body_area=document.querySelector('body');
    body_area.ondragover=function(){ return false; } // HOMEでドラッグ可能にする

    document.addEventListener("drop", function(event){
        event.preventDefault();
        toMove(event); }, false); // ドロップ時に位置を取得して配置修正

    function toMove(event){
        if(drage==1){
            drage=0;
            let x=event.clientX-shiftX;
            let y=event.clientY-shiftY;
            if(w_type==0){
                d_watch.style.top=y+'px'; }
            if(w_type==1){
                let ch=window.innerHeight;
                y=ch-y;
                d_watch.style.top='calc(100vh - '+ y+'px)'; }
            d_watch.style.left='calc(50% - '+(document.body.offsetWidth/2-x)+'px)';
            document.cookie=
                'time_d_pos='+(document.body.offsetWidth/2-x)+':'+y+'; Max-Age=2592000'; }}


    function get_cookie(name){
        let cookie_req=document.cookie.split('; ').find(row=>row.startsWith(name));
        if(cookie_req){
            if(cookie_req.split('=')[1]==null){
                return 0; }
            else{
                return cookie_req.split('=')[1]; }}
        if(!cookie_req){
            return 0; }}

} // main()

 

 

 

「Time On My Side A/D」最新版について 

旧いバージョンの JavaScriptツールは、アメーバのページ構成の変更で動作しない場合があり、導入する場合は最新バージョンをお勧めします。

 

●「Time On My Side A/D」の最新バージョンへのリンクは、以下のページのリンクリストから探せます。