2019年10月の記事


サイトの構築用メモ
 {/visUser/}
一息つく


 ■変な挙動が発生。もしかすると致命的な欠陥なのか?

 このページの左側に並ぶヘッダーとメニュー。ときには横に移動してもらいたい時があるよね。その場合は複数対応させる為にクラスに変更を与えるの。そして操作もアンカー要素でjavascriipt:....としているのもあるよね。うん、左下に処理の内容が表示されていて安心なのもあるわ。

#menu, #header { position:fixed; left:0; transition:left .5s; }
.menu-out #menu, .menu-out #header { left:-20vw; }

 上にCSSファイルから関係する箇所を抜粋して記述したので読んで欲しい。うん、bodyかどこか上の要素にクラスを追加すると左に移動するのが分かると思う。

 💙クラスの追加 add('menu-out')
 💙クラスの除去 remove('menu-out')

 さて、今度は上にあるアンカーでbody要素のclassListに対する処理を入れたから試して欲しい。ひとつだけポツンと取り残されたものは#meuや#header内にない要素なのが分かると思う。うん、クリックすると左に行ったり戻ったりするのが分かるよね。

 💗toggle('menu-out') → 上の💙と同じ構成 ※fireFox 要注意!
document.body.classList.toggle('menu-out')
 さて、ここが本題です。上のリンクはfireFoxではページがtrueに置き換えられの。ページ変移じゃなく。だからF5でリロードするしかならなくなって致命的です。穴が開くほどみてもミスはない。そもそもミスするほどのものじゃない。

 💛toggle('menu-out')
 💛toggle('lini-out')
(function(){document.body.classList.toggle('menu-out')})()
(function(){document.body.classList.toggle('link-out')})()

 そこでわたしは閃いた。困ったときは即時関数ってこと。そのように変更したものが上のものです。ついでに残ったものを操作するリンクも表示しました。試せば分かる通り上手くゆきます。もしもこれと同じような状態になったとき覚えておけば役に立つと思う。

 💛bcToggle関数の組み込み クリックで定義します。
class="var-font"
href="bcToggle = function(s){document.body.classList.toggle(s)};
bcToggle('font-min')"

 上のコードはリンク(A要素)の中身で実際は改行せずに1行になっています。クリックして定義する前は下にあるリンクは作動しません。リンクの::beforeが💗→💚になると作動します。そして、上のリンクは定義すると必要ないから小さくなって消えます。実際はfont-size:0で小さくなって見えないだけです。

 menu-out link-out 両方とも適用
 💙システム手帳より --diary.css--

 ひとつが分かれば他の領域、本文とクラスの追加で自在に変化させることが出来るよね。今、試しているのはそのルールの適用であって大変なのは構築の方かな。うん、上にCSSファイルを表示するコマンドを付けたシステム手帳へのリンクを表示したから読める人は読んで欲しい。あ、diary.cssはcommon.cssをインポートしているからcommon.cssから読んだ方がいいかも。うーん、どうなんだろう。そんな奇抜な手法は用いていないから読み易いと思うんだけど難しいのかな。

 うん、致命的な欠陥と思いましたが回避する方法あるので一安心です。

 回避は出来たけれど、add()とremove()が良くてappend()がダメなのは解からない。しかもChromeでは何ともないのに。うん、超久しぶりにクロームで開いてみたんだけれどメニューが変。リストの記号がモノクロになってる。

 🟦 🟥 🟫 🟪 🟨 🟦 🟩 🟩

 上のようなとってもカラフルな色彩になっている筈なのにモノクロ。きっと、(モノ)クロームだからかも。それはそうと・・・fireFoxとChromeの違いがあり過ぎには驚いた。うん、連結文字の国旗が全く反映していないし。どうなっているのだろう。

 💙Chromeで開いたときにメニューのアイコン代わりの絵文字や、本文のタイトルや細かなところが変なことが気になったから調べました。そうしたら太字がいけないみたい。うん、取り敢えず疑似要素では絵文字あるときにはfont-weight:normalで対処しました。うん、上手くいってる。でも、連結文字の国旗がダメみたいです。これも調べたらまだ対応してないみたい。



CPシステムの構築 



 |
 |
 |
 |
┌ ┍ ┎ ┏ ┐ ┑ ┒ ┓
└ ┕ ┖ ┗ ┘ ┙ ┚ ┛
├ ┝ ┞ ┟ ┠ ┡ ┢ ┣
┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫

■─┬──
  │
  ├─
  │
  ├─
  │
  ├─

─ ━ ╌ ╍ ┄ ┅ ┈ ┉
│ ┃ ╎ ╏ ┆ ┇ ┊ ┋
┌ ┍ ┎ ┏ ┐ ┑ ┒ ┓
└ ┕ ┖ ┗ ┘ ┙ ┚ ┛
├ ┝ ┞ ┟ ┠ ┡ ┢ ┣
┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫
┬ ┭ ┮ ┯ ┰ ┱ ┲ ┳
┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻
┼ ┽ ┾ ┿ ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋
╭ ╮ ╯ ╰ ╱ ╲ ╳
╴ ╵ ╶ ╷ ╸ ╹ ╺ ╻ ╼ ╽ ╾ ╿

文字取得:罫線 /home/new-diary/diary/2020/05/1590583723.html?page=25
U+2500 : ─ ━ │ ┃ ┄ ┅ ┆ ┇ ┈ ┉ ┊ ┋ ┌ ┍ ┎ ┏
U+2510 : ┐ ┑ ┒ ┓ └ ┕ ┖ ┗ ┘ ┙ ┚ ┛ ├ ┝ ┞ ┟
U+2520 : ┠ ┡ ┢ ┣ ┤ ┥ ┦ ┧ ┨ ┩ ┪ ┫ ┬ ┭ ┮ ┯
U+2530 : ┰ ┱ ┲ ┳ ┴ ┵ ┶ ┷ ┸ ┹ ┺ ┻ ┼ ┽ ┾ ┿
U+2540 : ╀ ╁ ╂ ╃ ╄ ╅ ╆ ╇ ╈ ╉ ╊ ╋ ╌ ╍ ╎ ╏
U+2550 : ═ ║ ╒ ╓ ╔ ╕ ╖ ╗ ╘ ╙ ╚ ╛ ╜ ╝ ╞ ╟
U+2560 : ╠ ╡ ╢ ╣ ╤ ╥ ╦ ╧ ╨ ╩ ╪ ╫ ╬ ╭ ╮ ╯
U+2570 : ╰ ╱ ╲ ╳ ╴ ╵ ╶ ╷ ╸ ╹ ╺ ╻ ╼ ╽ ╾ ╿


更新ページの状況

 CSSルールの定義の全てを移植。
 CSS-Aをlinks.cssへ。15780/20000(max)
 CSS-Bをbbs.cssへ。15837/20000(max)
 CSS-Cをbbs_form.cssへ。7225/20000(max)
 CSS-Dをmenu.cssへ。8414/20000(max)

 echo("cssDisp", cssDefaultRep(keys("ファイル")));
 移植ファイルはcssDefaultRepで復元済み。

 #217407~#217388の「20ページ」を確保。
 CGIで実装分(C253)を取得。

execCode A : #217407
 8888文字。残り十分。
 短縮エイリアス、extra 拡張の定義、1月分の索引の追加。


execCode B : #217406
 14461文字。限界近い。
 バインダーの処理、TAB関数、コード文字置換、編集関係。


execCode C : #217405
 8195文字。残り十分。
 PC情報、サムネイル関係、ファイル表示関係、新着日記関係。


execCode D : #217404
 15892文字。限界 仕分けが必要。
 コメント関係、ユーザーエントリ、メニューの生成、先読み、表示領域切り替え、リンクのフック、全てのエントリ、その他小物。
 ※振り分け完了。10817文字になる。コメント関係を転移。


execCode BOOT : #217403
 801文字。残り十分。
 設定ファイルを置くので余裕を持たせる。


execCode E : #217402
 2514文字。新たに新設。
 コメント関係を移設。


docCode A : #217398
 12506文字。


cssCode A : #217397
 14525文字。
 基礎、汎用領域、バインダーシステム、TABシステム、領域切り替え。
 💚記事内のCSSの記述でのcontentで拡張文字は\01f49a(左の緑のハート)のようにエスケープする。


cssCode B : #217396
 14655文字。仕分けが必要。
 各領域の項目の見出し、メニュー内、本文内。
 ※仕分け終了。11687文字へ。汎用領域移設。


cssCode C : #217395
 3377文字。
 新着日記関係、コードの装飾、全記事索引、状態別装飾。


cssCode D : #217394
 3048文字。
 汎用領域のエントリ、コメント関係。
 💚box-par .box-a .box-b





 メインシステムのフロー (2021 01/18 現在)

 ・main.htmlの表示
 ・main.cssの組み込み
 ・処理 =>
 ・関数の無効化 : checkFrame eitherOwnerOrGuest
 ・関数の定義 : fullDec evalDec
 ・区別の定義 => document.documentElement.id = "extend"
 ・クラスの初期値 : add("us1","f1","n0","notbar");
 ・ファビコンの定義 : main.html => favicon1.ico not favicon2.ico
 ・関数の定義 : xhr key bootEntry
 ・フレーム以外での処理 : リファラー振り分け
 ・bootEntry関数 =>
 ・xhrの実行 => "/cgi-bin/diary.cgi?oid=new-diary;n=20;c=253"
 ・局所関数の定義 : keys job
 ・エラーフック付きで実行 => job([A-F])
 ・bodyの構築 => echo(doc.body, docDefaultRep(keys("DOC-A")))
 ・CSSの構築 => echo("cssDisp", cssDefaultRep(keys("CSS-[A-D]"))
 ・起動関数の実行 => job("BOOT")

 ・job(A) : execCode-A A217407 C253 10990/13918 34関数 3変数
 ・広域変数の定義 : win doc isMobile
 ・広域関数の定義 : Fid Ftag Fcn Fce Fap Fcv res enc Fce echo counter echoCounter fs1 dateToOnes pageLogs dispChg dateEntry docDefaultRep cssDefaultRep extraEntry extraRemove yearListEntry yearListCreate yearListAppend cgiCount createCgiCount onesData monthPageRep uDate modeFunc modeOf getLogs userVoid ddCssEntry

 ・job(B) : execCode-B A217406 C253 10684/13275 40関数 2変数
 ・広域変数の定義 : codeAjastObj codeAjastTop
 ・広域関数の定義 : appliEntry mode masEntry cenEntry cenImage dispPrefix headerShow formShow ending cenCtrl dtChange newMonthChange tabsCount tabsDelay tabsEntry dispUp scrollDisp edEntry createLine codeAjast codeAjastExec codeSpc codeSec codeOne codeEnt codeEnd codeCol jsCodeRep cssCodeRep docCodeRep eTabCreate archiveUpdateEntry upDateEntry postEntry formCounter addEntry editEntry getEntry topFixEntry formRows

 ・job(C) : execCode-C A217405 C253 7447/10074 12関数
 ・広域関数の定義 : getPcInfo allShow allEntry echoAll cateChg allIndexEntry allLoop allIndexMain parMove loadDataTo transUpdate transLoop

 ・job(D) : execCode-D A217404 C253 12021/15475 9関数 5変数
 ・広域変数の定義 : isAll xmlMonth cueDisp cueUser cueComment
 ・広域関数の定義 : mainShow mainShowEntry axRep echoMain xmlEntry createDiaryMenu viewEntry cueLoop allShow

 ・job(EXEC) : execCode-BOOT A217402 C253 705/827 13変数
 ・広域変数の定義 : FxDec msCNT mmCNT msCNTbef mmCNTbef cenCtrlCnt cenCNT m3CNT isCue Cue cMode modeOf
 ・処理 => isLogin = doc.cookie.indexOf("SID=") != -1;
 ・処理 => FxDec.visUser window.scrollTo(0,1);

 ・job(E) : execCode-E A217402 C253 10010/13242 12関数
 ・広域関数の定義 : commentUpdateEntry newCommentEntry commentTagsRep comeEditCounter commentEditEntry inlineEntry htmlFileRep cssFileRep fileRep fileViewEntry fileShowEntry delayScroll

 ・job(F) : execCode-F A217401 C253 1727/2122 3関数
 ・広域関数の定義 : m3ImgEntry createThumbnail thumbUnLoadCheck

 ・処理 : xmlEntry => cueLoop => mainShowEntry createDiaryMenu allEntry



コメント (12)

サイトの仕様書
{/visUser/}

 更新の為に初期値で領域B、または領域Cに表示しています。

abcdef

・.no-ex
メモ帳のみが有効であってシステム手帳では反映しない。

・.only-ex
システム手帳のみが有効であってメモ帳では反映しない。


ページの構造

■html#extend
├ head
│ ├ meta[6]
│ ├ link
│ ├ script
│ └ title

└ body.us1.f1.n0.notbar
  ├ div#mainDisp.out.disp-par
  │ └ div#main
  │   ├ div#M0.disp.sel
  │   │ ├ div#m0Doc.open-disp
  │   │ └ div.disp-ft
  │   │
  │   ├ div#M1.disp.sel
  │   │ ├ div#m1Doc.open-disp
  │   │ └ div.disp-ft
  │   │
  │   ├ div#M2.disp.sel
  │   │ ├ div#m2Doc.open-disp
  │   │ └ div.disp-ft
  │   │
  │   ├ div#M3.disp
  │   │ ├ div.disp-hd
  │   │ ├ div#m3Doc
  │   │ └ div.disp-ft
  │   │
  │   └ div#M4.disp
  │     ├ div.disp-hd
  │     ├ div#pcInfo
  │     ├ a
  │     └ div.sec
  │       ├ div.disp-hd
  │       ├ ul ╌ li[9] ╌ a[13]
  │       ├ div
  │       └ div.disp-end
  │
  ├ div#cenDisp.cen-bg0.out
  │  ├ div#cen0
  │  ├ div#cen1
  │  ├ a#com0 → cenEntry(1)
  │  ├ a#com1 → cenEntry(-1)
  │  └ a#com2 → cenEntry(0)
  │
  ├ div#menuDisp.out.disp-par
  │ ├ div#F0.disp
  │ │ ├ div#inex.time-s
  │ │ │ └ a → allIndexEntry()
  │ │ └ div.disp-ft
  │ │   ├ p
  │ │   └ p
  │ │
  │ ├ div#F1.disp.sel
  │ │ ├ div#archives
  │ │ ├ div#categories
  │ │ ├ div#latest_articles
  │ │ ├ div#latest_comments
  │ │ ├ div#fileView
  │ │ ├ div#myLinks
  │ │ └ div.disp-ft
  │ │
  │ ├ div#F2.disp
  │ │ ├ div#f2Doc.open-disp
  │ │ └ div.disp-ft
  │ │
  │ ├ div#F3.disp
  │ │ ├ div.disp-hd
  │ │ ├ ul#f3Doc
  │ │ ├ div.disp-ft
  │ │ ├ div.disp-hd
  │ │ ├ ul→(rep)
  │ │ ├ div.disp-ft
  │ │ └ form#eDisp
  │ │   ├ div.form-hd
  │ │   │ ├ span
  │ │   │ ├ select#execSel
  │ │   │ │ └ option[13]
  │ │   │ ├ span.form-fix => topFixEntry()
  │ │   │ └ span.form-fix => formRows()
  │ │   ├ div.row
  │ │   │ ├ span.dt
  │ │   │ └ input:text#eDispTitle
  │ │   ├ div.row
  │ │   │ ├ span.dt
  │ │   │ ├ input:text#eDispUser
  │ │   │ ├ span.dt
  │ │   │ ├ input:text#eDispArticle
  │ │   │ ├ span.dt
  │ │   │ ├ input:text#eDispCate
  │ │   │ ├ input:checkbox#newOpen
  │ │   │ └ label
  │ │   ├ textarea#eDispText => formCounter()
  │ │   ├ div#editedStatus
  │ │   │ ├ input:button#post.cir => postEntry()
  │ │   │ ├ input:button#appli.cir => appliEntry()
  │ │   │ ├ span#formCnt
  │ │   │ └ span#upInfo
  │ │   └ div.form-ft
  │ │
  │ └ div#F4.disp
  │   ├ div#f4Doc
  │   ├ div.link_title
  │   ├ (rep:x1)
  │   ├ div.link_title
  │   ├ (rep:x1)
  │   ├ a
  │   ├ div.link_title
  │   ├ (rep:x1)
  │   ├ div.link_title
  │   ├ (rep:x1)
  │   └ div.load-par
  │     └ span.loader => loadDataTo()
  │
  ├ div#tab0.out.tab.bg2
  │ ├ div.t0.tb
  │ │ ├ a#sTabVis.tabs-hd → dispChg(0,0)
  │ │ └ span#sTab.tabs-sum
  │ │
  │ ├ div.t1.tb
  │ │ ├ a.tabs-hd → dispChg(0,1)
  │ │ ├ span#mTab.tabs-sum
  │ │ └ span#tabs0.tabs
  │ │   ├ a → dispChg(0, msCNTbef)
  │ │   ├ a → Fid('F' + msCNT).scrollTo(0, 0)
  │ │   ├ a.f2-sw.tt2.only → tabsEntry(1,0)
  │ │   └ a#tabs0x.fc.fc1.tt2.only → tabsEntry(6,0)
  │ │
  │ ├ div.t2.tb
  │ │ ├ a.tabs-hd → dispChg(0,2)
  │ │ └ span#eTab3tabs-sum.ape => this.classList.toggle('ape')
  │ │
  │ ├ div.t3.tb
  │ │ ├ a.tabs-hd → dispChg(0,3)
  │ │ └ span#hTab.tabs-sum
  │ │
  │ └ div.t4.tb
  │   ├ a.tabs-hd → dispChg(0,4)
  │   └ span#lTab.tabs-sum
  │
  └ div#tab1.out.tab.bg1
    ├ div.u0.tb
    │ ├ a.tabs-hd → dispChg(1,0)
    │ ├ span#eTab0.tabs-sum.ape => this.classList.toggle('ape')
    │ └ span#tabs1.tabs
    │   ├ a → dispChg(1, mmCNTbef)
    │   ├ a#NCB.uu0.only → tabsEntry(3,1)
    │   ├ a → Fid('M' + mmCNT).scrollTo(0, 0)
    │   ├ a#tabsSr.uu3.only→ tabsEntry(5,1)
    │   ├ a.uu4.only
    │   ├ a#tabs1x.fc.fc1.uu0.uu1.uu2.only → tabsEntry(6,1)
    │   └ a.fc → tabsEntry(4,1)
    │
    ├ div.u1.tb
    │ ├ a.tabs-hd → dispChg(1,1)
    │ └ span#eTab1.tabs-sum.ape => this.classList.toggle('ape')
    │
    ├ div.u2.tb
    │ ├ a.tabs-hd → dispChg(1,2)
    │ └ span#eTab2.tabs-sum.ape => this.classList.toggle('ape')
    │
    ├ div.u3.tb
    │ ├ a.tabs-hd → dispChg(1,3)
    │ └ span#pTab.tabs-sum
    │
    └ div.u4.tb
      ├ a.tabs-hd → dispChg(1,4)
      └ span#qTab.tabs-sum

■style#cssDisp
■style#exCssDisp


execCode BOOT 無名関数を使わないで直接処理。
🧂💛🧡
💙xmlEntry(ユーザーエントリ)

変数

visUSER :
xmlUSER

モードの構築の為の検証 ※2秒後に標準に戻る

Bin中央 基本形なので変化なし #0

Bin左  #1
Bin右 #2
Bin左端 #3
Bin右端 #4

Bin左端 黒背景 #5
Bin右端 黒背景 #6
Bin左下 黒背景 #7
Bin右下 黒背景 #8

Bin中央 Tabなし #10
Bin左 Tabなし #11
Bin右 Tabなし #12
Bin左端 Tabなし #13
Bin右端 Tabなし #14

Bin中央 Bin半分 #100
Bin左 Bin半分 #101
Bin右 Bin半分 #102
Bin左端 Bin半分 #103
Bin右端 Bin半分 #104

Bin左端 Bin半分 黒背景 #105
Bin右端 Bin半分 黒背景 #106
Bin左下 Bin半分 黒背景 #107
Bin右下 Bin半分 黒背景 #108

Bin中央 Tabなし Bin半分 #110
Bin左 Tabなし Bin半分 #111
Bin右 Tabなし Bin半分 #112
Bin左端 Tabなし Bin半分 #113
Bin右端 Tabなし Bin半分 #114


userVoid

 システムのフローチャート
 メインページは「いきなりスクリプト」

checkFrame
eitherOwnerOrGuest

fullDec
evalDec
document.documentElement.id = "extend";
document.body.classList.add("us1","f1","n0","notbar");

ファビコンの設置
const ico = document.createElement("link");
ico.rel = "shortcut icon";
ico.href = "http://nancyan.main.jp/image/icon/favicon" +
(document.referrer.match(/new\-diary\/main.html/) ? 1 : 2) + ".ico";
ico.type = "image/vnd.microsoft.icon";
document.head.append(ico);
}

 ファイル入出力
 xhr = (d1,d2,d3) => {
 xmlPath = d1;


汎用関数
key


ローダー
xhr("/cgi-bin/diary.cgi?oid=new-diary;n=20;c=253", null, e => {
const keys = vol => evalDec(key(e, vol + "-DATA"));
const job = no => {
try { eval(keys("EXEC-" + no)); }
catch (err) { alert("エラーが発生しました: " + no + "\n\n" + err); }
};
job("A"); job("B"); job("C"); job("D"); job("E");
echo(doc.body, docDefaultRep(keys("DOC-A")));
echo("cssDisp", cssDefaultRep(keys("CSS-A") + keys("CSS-B") + keys("CSS-C")+ keys("CSS-D")));
job("BOOT");
});

コメント (0)

UPSシステム1.0
 
  現在、ここは構築中です。diary_form.cgi利用ですのでログイン必須です。




 new-diary links.css | css_editor

us main.html | us main_editor | us css_common | us config



 ※💙普段は表示されないものだけど、構築段階だから。12 45 45 68 99 25

{
bootType = `upsDec`;
bootName = `ups`;
let a = new XMLHttpRequest();
a.onreadystatechange = function(){
if(a.readyState == 4 && a.status == 200){
eval(a.responseText);
}
};
a.open(`get`, `/home/new-diary/links.css?${ (new Date()).getTime() }`, true);
a.send(null);
}

UPS,
3.0.1, DAT, システム手帳, 考察, メモ, BIGBBS, 検証ページ

:new-diary, 215933, links.css, :css-2, common.css, :new-diary, common.css, diary.css
:new-diary, 217388, 217390, 217391, 217392, 217389, 217393, 217397, 217396, 217395, 217394
:new-diary, 217352, 217351, 217350, 217349, 217348, 217347, 217346, 217345, 17344, 217343, 217342, 217341, 217340
:new-diary, 217407, 217406, 217405, 217404, 217403, 217402, 217401, 217400, 217399, 217398, :css-2, links.css, bbs.css, profile.css, friends.css
:new-diary, 217335, 217336, 217337
:new-diary, 215934, 215935, 217378
:css-2, bbs_form.css
:poem, 193377, 179507, diary.css


default eclat-io nancyan yadokari poem new-diary css-1 css-2 log2 log3 js js1


main.html, menu.html, main.css, menu.css, common.css, diary.css, profile.css, bbs.css, bbs_form.css, links.css, friends.css, footprint.css




/* -- 移動ボタン -- */
.bsc {
position:fixed;
right:1.7em; top:calc(50vh - 1.3em);
display:inline-block;
text-align:center;
width:2.5em;
line-height:2.5em;
cursor:pointer;
border:1px solid #808080;
border-radius:50%;
box-shadow:2px 2px 2px #ccc;
color:#00f;
font-weight:bold;
background-color:#fff;
transition:all .5s;
}
.bsc-out .bsc { right:-5em }
#bsc0 { top:calc(50vh - 4.4em); }
#bsc2 { top:calc(50vh + 1.7em); }
.bsc:hover {
background-color:#ffc;
}
.bsc:active {
box-shadow:2px 2px 2px #ccc inset;
}

/* -- 汎用 -- */
.box {
border:1px solid #808080;
border-radius:4px;
box-shadow:3px 3px 3px #ccc;
}

a {
text-decoration:underline;
}

#upsLogo a:hover, #upsDisp a:hover {
color:magenta;
bg-c:#ffc;
}

/* -- 左側の領域 -- */
/* -- ロゴ -- */
#upsLogo {
position:absolute; top:0; left:0;
padding-top:.2rem;
padding-bottom:.2rem;
width:20vw; height:4rem;
background-image:linear-gradient(180deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, .9) 100%);
border-bottom:1px solid transparent;
box-shadow:0 3px 3px #ccc;
transition:all .6s;
}

/* -- ロゴの中のマスコット -- */
#upsMas {
position:absolute; top:.5rem; left:.5rem;
display:inline-block;
width:3rem; height:3rem;
border-radius:50%;
background-image:url(”/home/default/files/yosei_2.gif”);
background-repeat:no-repeat;
background-color:#ffc;
background-size:contain;
cursor:pointer;
transition:all .6s;
}

#upsMas:hover {
bg-c:#ffc;
transform:rotate(360deg);
}

/* -- ロゴの中の領域上下 -- */
#upsLogo div {
margin-left:4rem;
padding:0 .5rem;
line-height:1/8rem;
}
#upsLogo div a {

}

/* -- ログイン状態 -- */
#visInfo {
margin-right:1em;
background-color:#ffc;
}

#visInfo:not(.login)::before {
content:"ログアウトです";
}

#visInfo.login {
background-color:#ffefff;
}

/* -- 起動前のロゴ -- */
.ups-out #upsLogo {
transform:scale(0);
}

/* -- 左側のボタン類の親 -- */
#upsBox {
position:absolute; top:4rem; left:0;
width:20vw; height:calc(100vh - 4rem);
overflow:auto;
scrollbar-color:orange transparent;
scroll-behavior:smooth;
background-image:linear-gradient(180deg, rgba(255, 255, 255, .9) 0%, rgba(255, 255, 255, .75) 100%);
transition:all .6s;
}

/* -- 起動前の状態 -- */
.ups-out #upsBox {
transform:scale(0);
}

#upsSpBox {
transition:all .6s;
}

.box-opa #upsSpBox {
opacity:0;
}
/* -- 汎用class -- */
.box1 {
position:relative;
color:#000;
margin:.125em .5rem;
padding:0 .75em 0 3.25em;
line-height:2.5em;
background-color:#ffefff;
border:1px solid #808080;
border-radius:4px;
box-shadow:3px 3px 3px #ccc;
cursor:pointer;
transition:all .5s;
}
/* -- upsSpBoxの第一の子供 -- */
.exec {

}
.exec:hover {
background-color:#6a6;
}
/* -- 更新ファイルグループの親 -- */
.sp-par {
position:relative;
transition:all .6s;
}
.sp-par.go {

}

/* -- spの上のコマンド -- */
.exec {
background-color:darkgreen;
color:#fff;
}

.go .box1 {
background-color:#eee;
}

.box1::before {
display:inline-block;
position:absolute; left:.5em; top:.25em;
width:2em; height:2em;
background-repeat:no-repeat;
background-size:70%;
background-position:center center;
content:"";
transition:all .5s;
border:1px solid #808080;
border-radius:50%;
}
.sp-top::before {
background-image:url("/home/log2/files/folder_o.gif");
background-color:#ffefff;
}
.exec:before {
background-color:#ffefff;
background-image:url("/home/log2/files/property.gif");
transition:all .5s;
}
.exec:hover::before {
transform:rotate(360deg);
}

.go-2 .sp-top::before {
background-image:url("/home/log2/files/folder_c.gif");
background-color:#ffefff;
}

.box1 span {
float:right;
color:#666;
}
.exec span { color:#ccc; }
.box1 b {
font-weight:normal;
color:#339;
margin-right:3px;
}

.box1 i {
font-style:normal;
color:#000;
margin-left:3px;
}
.exec b {
color:#fff;
}
.exec i {
color:#ffefff;
}

.exec i.ze {
color:#ff0;
}

.go-2 .sp-top i {
color:#600;
}
.sp-top i.ze {
color:#00f;
}
.go-2 .sp-top i.ze {
color:#f00;
text-decoration:underline;
}

.sp-top:hover {
background-color:#ffdfff;
}
.go-2 .sp-top:hover {
background-color:#ccf;
}

.sp-top:hover::before {
background-color:#ff9;
}
.go-2 .sp-top:hover::before {
background-color:#fff;
}
.box1:active {
box-shadow:3px 3px 3px #ccc inset;
}

/* -- 左側のボタン -- */
.sp {
position:relative;
color:#000;
margin:0 .25em 0 .25em;
padding:0 0 0 2em;
transition:opacity .6s, font-size .3s, color .5s, backgrouund-color .5s, transform .6s;
border-bottom:1px solid #ccc;
}
.sp:not(.loaded)::before {
position:absolute;
display:inline-block;
top:.8em; left:1em;
content:"";
width:.0;
height:.0;
border-width:.25em;
border-style:solid;
border-color:#f00 #f00 transparent transparent;
transition:all .5s;
transform:rotate(45deg);
}
.sp.sp-arc:not(.loaded) .exe::before {
content:"A";
color:#00f;
margin-right:.25em;
}
.sp.sp-css.loaded .exe::before {
content:"📋";
margin-right:.25em;
}

.sp.opa {
opacity:0;
}

/* -- ロード済み -- */
.sp.loaded {
color:brown;
padding:0 0 0 .75em;
}

.sp:hover {
background-color:#ffefff;
}

.sp.loaded:hover {
color:#900;
border-bottom:1px solid #666;

}
.sp:not(.loaded):hover {
color:#00f;
border-bottom:1px solid #666;

}
.sp:not(.loaded):hover::before {
border-color:#00f #00f transparent transparent;
}
.sp:not(.loaded):hover:before {
transform:rotate(1125deg);
}

/* -- 選択中 -- */
.sp.loaded.vis {
color:#00f;
}
.sp.loaded:hover {
color:magenta;
}
.sp:active {

}

.sp .exe {
display:inline-block;
vertical-align:middle;
}
.sp .exe {
width:calc(100% - 1.75em);
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
cursor:pointer;
transition:all .4s;
}

.sp .del {
padding-left:.25em;
padding-right:.25em;
margin-left:.5em;
border:1px solid #ccc;
border-radius:50%;
cursor:pointer;
background-color:#eef;
transition:all .4s;
}

.sp:not(.loaded) .del {
display:none;
}
.sp .del:hover {
background-color:orange;
color:#fff;
border:1px solid tomato;
box-shadow:2px 2px 2px #ccc;
}
.sp .del:active {
background-color:#f00;
box-shadow:none;
}

/* -- メニュー折りたたみ -- */
.go-1 .sp {
transform:scale(0);
}
.go-2 .sp {
font-size:0;
padding:0;
margin:0;
border:none;
}

.me.act {
background-color:#ffefff;
}

/* -- spの表示選択 -- */
.full-1 .sp-top, .full-1 .sp:not(.loaded) {
transform:scale(0);
}
.full-2 .exec::before {
transform:scale(-1, 1);
}

.full-2 .sp-top, .full-2 .sp:not(.loaded) {
font-size:0;
border:none;
padding:0;
margin:0;
}


#upsDoc {
padding-bottom:20em;

}

#upsAfter {
margin:2em 0 4em 0;
padding-bottom:5em;
}

#upsAfter iframe {
display:none;
}

/* -- 右側の領域の親元-- */
#upsDisp {
position:fixed; right:0; top:0;
padding:1rem 0;
width:calc(80vw - 2rem);
height:100vh;
scrollbar-color:orange transparent;
background-image:linear-gradient(180deg, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, .75) 100%);
overflow:auto;
scroll-behavior:smooth;
transition:all .6s;
}

/* -- 起動前 -- */
.ups-out #upsDisp {
transform:scale(0);
}
/* -- 領域の一番目のエリア -- */
#up1st {
transition:opacity 1s, transform .6s;
margin:0 4rem 4rem 1.5rem;
background-color:#fff;
padding:1em;
height:100vh;
overflow:auto;
}

/* -- 親の直属子分 A(0-)のidが入る -- */
.area {
transition:opacity 1s, transform .6s;
margin:0 4rem 4rem 1.5rem;
}
/* -- cssの直属子分 id = file + user -- */
.css, .image {
transition:opacity 1s, transform .6s;
margin:0 4rem 4rem 1rem;
}

/* -- 追加 -- */
.area.ne, .css.ne, .image.ne {
opacity:0;
}

/* -- タイトルなどの一段目の領域 -- */
.navi {
color:blueviolet;
}
/* -- 一番左の番号 -- */
.eno {
display:inline-block;

padding:.25em 1em;
bg-c:#cfc;
}

/* -- inputの親 -- */
.inp-par {
margin-left:.5em;
vertical-align:middle;
}

/* -- 名前とタイトル -- */
.inp {
font-size:100%;
line-height:1.7em;
border-radius:4px;
padding:0 4px;
margin-left:.25em;
}

/* -- 上のを領域の幅可変対応にする -- */
.inp.iw1 { width:calc(30% - 12rem); }
.inp.iw2 { width:calc(70% - 26rem); }

/ * -- 数値は見やすく -- */
.inp.sp2 {
letter-spacing:1px;
}

/* -- チェックボックスの親 -- */
label {
margin-left:.5em;
padding:.25em;
color:#000;
transition:all .5s;
}
label.w {
color:#f00;
}

/* -- checkbox font-sizeでは無理、scaleで -- */
.cbox {
transform:scale(1.4);
margin-right:.5em;
}

/* -- ログイン情報 -- */
.uid {
margin-left:.25em;
padding:.25em .5em;
color:#000;
border:1px solid #ccc;
border-radius:4px:
bg-c:#ff9;
}

/* -- エリア開放ボタン -- */
.dels {
cursor:pointer;
background-color:orange;
color:#000;
font-weight:bold;
padding:.25em .5em;
line-height:1.8em;
float:right;
transition:all .5s;
}
.dels:hover {
background-color:#f00;
color:#fff;
}
.dels:active {
box-shadow:3px 3px 3px #ccc inset;
}


/* -- テキストの置換などを施すコマンド群 -- */
.cms {
margin:.25em 0;
padding:.25em;
background-color:#ffe;
}

.cms .inp {
width:calc(40vw - 14rem);
}
.inp-btn {
padding:0 .5em;
margin-left:.5em;
background-color:#ffc;
cursor:pointer;
transition:all .5s;
}
.inp-btn:hover {
background-color:#ccf;
}
.inp-btn:active {
box-shadow:2px 2px 2px #ccc inset;
}

/* -- 画像アップローダーの領域 -- */
.upload-area {
padding:3px;
height:calc(100vh - 10rem);
overflow:auto;
line-height:1.4;
background-color:#fff;
transition:all .5s;
}
.upload-area.black {
background-color:#000;
}

mg.big {
width:20%;
}
img.mini {
float:left;
/*
margin:2em;
padding:1em;
background-color:#fff;
border:2px solid #808080;*/
}

/* -- テキストエリア -- */
.txt {
display:block;
width:100%;
padding:3px;
height:calc(100vh - 10rem);
overflow:auto;
line-height:1.4;
transition:all .5s;
}

.txt:focus {
background-color:#ffefff;
}

/* -- テキストエリアの下の領域 -- */
.ups-info {
margin:.5em 0;
padding:0 .5em;
background-color:#eef;
}

/* -- 送信ボタン -- */
.cir {
display:inline-block;
width:3rem;
font-size:90%;
line-height:3rem;
text-align:center;
border-radius:50%;
background-color:#ffe;
cursor:pointer;
transition:all .5s;
}

.cir:hover {
background-color:#ff9;
border:1px solid #00f;
color:#00f;
}
.cir:action {
box-shadow:3px 3px 3px #ccc inset;
color:tomato;
}

/* -- 送信状態 -- */
.info {
margin-left:.3em;
}

/* -- 右寄せで情報など -- */
.len {
display:inline-block;
float:right;
color:#808080;
text-align:right;
line-height:3rem;
padding-right:.5em;
}

/* -- 投稿日付 -- */
.len b {
font-weight:nomal;
color:brown;
}
/* -- 本文の文字情報 -- */
.len i {
font-style:normal;
color:#000;
}

.ups-info * {
vertical-align:middle;
}
コメント (0)