2020-10-25

CSSだけでスライドメニューを作成する基礎の基礎

 ホームページの上部に漢字の (ハンバーガーボタン)に似たアイコンをクリックするとメニューが表示される。 ことのき、メニューは右または左からスライドするものがある。

スライドメニュー(またはドロワーメニュー)は、CSSだけで作成することができる。

 

<< 作成ポイント >>

 CSSの transform: translateX() または transform: translateY() でメニュー領域を表示したり、隠したりすることがポイント。
表示したり、隠したりするスイッチは HTMLの inputタグ を記述し。CSSの :checked でスイッチとして、オン(有効)/オフ(無効)する要素を指定する。

実際のホームページでは、チェックするクリック領域を 記号に変えているだけである。

ポイントは以上



今回は、以下のように右側、左側、上部または下部からスライドさせてメニュー領域を表示したり、隠したりするコードを記した。

 

<< 右、左、上または下からスライドさせる使い分け >>

メニューを画面のどこに隠しておくかである。
例えば右からスライドさせる場合に、画面右側の見えない位置に隠して、ハンバーグボタンでオン(チェックを入れる)にすると、隠れたメニュー領域が画面の右から移動し、表示される。
この時、移動する速さを CSSの transition: 0.6s などのように設定することによって、瞬時に表示させるのではなく、移動するように見せることができる。

 メニュー表示 (チェックが入る)
× メニューを閉じる(チェックが外れる)

図 メニューが表示されていない状態

 


右からスライド



左からスライド



 

上から


 

下から

 


 

<< HTMLコード 共通 >>

index.html

<!DOCTYPE html>
<html lang="ja">

<head>
<meta charset="UTF-8">
<title>Test left-right</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>

<body>
<div id="container">

<div id="nav-drawer">
<!-- 開くボタン|ハンバーガーアイコン -->
<input type="checkbox" id="nav-input" class="nav-unshown" />
<label id="nav-open" for="nav-input"><span>
</span></label>
<label class="nav-unshown" id="nav-close" for="nav-input"></label>
<!-- //開くボタン|ハンバーガーアイコン -->

<div id="nav-content">

<!-- 閉じるボタン|
アイコン -->
<label class="nav-unshown" id="nav-close2" for="nav-input">
<span>
×</span>
</label>
<!-- //閉じるボタン|X
アイコン -->

<br>ここはメニューです。ボックスにチェックが入ると、表示されます。<br>
チェックを外すと閉じます。<br><br>
原理は、デフォルトで表示領域外に設定し、チェックを入れることによって移動させて表示させています。<br>

</div> <!-- //id="nav-content" -->
</div> <!-- //id="nav-drawer" -->

</div> <!-- //container -->
</body>
</html>


<< CSSコード 右からスライド >>

style.css

body {
background-color: #c0c0c0;
}

#container {
margin: auto;
}

#nav-drawer {
float: left;
}

/* メニュー表示要素 */
#nav-content {
overflow: auto;
position: fixed;
top: 0;
right: 0;
width: 90%;
max-width: 330px;
height: 100%;
background-color: white;
transition: 0.6s;
-webkit-transform: translateX(105%);
transform: translateX(105%);
z-index: 9999;
}

/* メニュー表示中の背景設定 */
#nav-close {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: 0.6s;
z-index: 99;
}

/* チェックボックス */
#nav-input:checked ~ #nav-content {
transform: translateX(0%);
-webkit-transform: translateX(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
/* チェックボックス */
#nav-input:checked ~ #nav-close {
display: block;
opacity: 0.6;
}


<< CSSコード 左からスライド >>

style.css

body {
background-color: #c0c0c0;
}

#container {
margin: auto;
}

#nav-drawer {
float: right;
}

/* メニュー表示要素 */
#nav-content {
overflow: auto;
position: fixed;
top: 0;
left: 0;
width: 90%;
max-width: 330px;
height: 100%;
background-color: white;
transition: 0.6s;
-webkit-transform: translateX(-105%);
transform: translateX(-105%);
z-index: 9999;
}

/* メニュー表示中の背景設定 */
#nav-close {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: 0.6s;
z-index: 99;
}

/* チェックボックス */
#nav-input:checked ~ #nav-content {
transform: translateX(0%);
-webkit-transform: translateX(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
/* チェックボックス */
#nav-input:checked ~ #nav-close {
display: block;
opacity: 0.6;
}




<< CSSコード 上部からスライド >> 

style.css

body {
background-color: #c0c0c0;
}

#container {
margin: auto;
position: absolute;
bottom: 0;
}

#nav-drawer {
float: left;
}

/* メニュー表示要素 */
#nav-content {
overflow: auto;
position: fixed;
top: 0;
right: 0;
width: 100%;
height: 90%;
max-height: 330px;
background-color: white;
transition: 0.6s;
-webkit-transform: translateY(-105%);
transform: translateY(-105%);
z-index: 9999;
}

/* メニュー表示中の背景設定 */
#nav-close {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: 0.6s;
z-index: 99;
}

/* チェックボックス */
#nav-input:checked ~ #nav-content {
transform: translateY(0%);
-webkit-transform: translateY(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
/* チェックボックス */
#nav-input:checked ~ #nav-close {
display: block;
opacity: 0.6;
}



<< CSSコード 下部スライド >>

style.css 

body {
background-color: #c0c0c0;
}

#container {
margin: auto;
}

#nav-drawer {
float: left;
}

/* メニュー表示要素 */
#nav-content {
overflow: auto;
position: fixed;
bottom: 0;
right: 0;
width: 100%;
height: 90%;
max-height: 330px;
background-color: white;
transition: 0.6s;
-webkit-transform: translateY(105%);
transform: translateY(105%);
z-index: 9999;
}

/* メニュー表示中の背景設定 */
#nav-close {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: black;
opacity: 0;
transition: 0.6s;
z-index: 99;
}

/* チェックボックス */
#nav-input:checked ~ #nav-content {
transform: translateY(0%);
-webkit-transform: translateY(0%);
box-shadow: 6px 0 25px rgba(0,0,0,.15);
}
/* チェックボックス */
#nav-input:checked ~ #nav-close {
display: block;
opacity: 0.6;
}



メニューを開く(三)/閉じる(X)記号は、上記ではHTMLに直接文字として簡易的に表したが、実際にCSSコードを使って記述する。labelタグやborder(CSS)を駆使すると可能。

今回は、仕組みを理解しやすくするために、最小限のコードで記した。
上記のコードを基に、実際のホームページで配置、デザインを追加していく。

 

2020-09-11

Linux Mint, コンテキストメニューに任意のメニューを追加

OS :  Linux Mint 19 Xfce

デスクトップ上でマウス右クリックした際に表示されるメニューをコンテキストメニュー(Context Menu)という。

 


よく使われるアプリやツール等が登録されている。
Linux Mint xfceでは、任意のメニューを追加できる。

<< 手順 >>

ファイルマネージャーを開く。
メニュー[編集], [アクションの設定]から

コンテキストメニュー


十 記号の「新しいカスタムアクションを追加します」をクリック。

 




「アクションの作成」に任意の名前、コマンド等を入力する。



 

以上


2020-08-20

pythonでつくったプログラムが動かない001

 

OS :  Linux Mint xfce
Version :  python3 3.7x

【 エラー状況 】

正常に動作していたプログラムが、エラーを出力する。
共通していることは、pandas や numpy をインポートしたプログラム。

pandas や numpy に関連したエラー。

【 原因 】

特定のライブラリーをインストールした際に、新たにpandas がインストールされた可能性がある。
このため、既存のpandasと新たなpandasが、何らかの原因でエラーのもとになっている可能性がある。


【 対処 】

pandas と numpy を削除した。

$ pip3 uninstall -y pandas

$ pip3 uninstall -y numpy

のように pandas と numpy をアンインストールすることによって、エラーが解消された。

2020-08-09

Evolution CMS,ページごとに閲覧できる人を振り分ける

ソフト名 : Evolution CMS 1.4x

下記のように、「所属グループ」の項目で ID登録者と非登録者の閲覧権限を設定する。


   << 設定方法 >>
   
1. [グローバル設定] -> [グループ管理機能を使用] で

    「はい」を選択

2. [権限管理] -> [グループ管理(ウェブ)] -> [ウェブユーザーグループ] で

    「Site Admins」(任意名)を作成し、
   
    [グループリンク] で
    ユーザーグループを Site Admins 、リソースグループを Site Admin Pages で実行ボタンで設定する
   

3. [権限管理] -> [ウェブユーザー管理]で

    「siteadmin」を作成し、グループ管理(ウェブ)から 「Site Admins」を選択
   
4. 任意のページの [所属グループ] で

    グループ制限なし(非ID登録者)か Site Admin Pages(ID登録者) のどちらかを選択可能にする。
 

設定完了確認 [権限管理] から

 

 

設定は、以上

ID登録者のみに閲覧権限があるページを非ID登録者が見ようとすると、下記のようになる

 

 

 

2020-07-03

Libreoffice, セル範囲内の複数の要素数をカウントする

ソフト名 : Libreoffice 6.3

複数のセル内の指定値をカウントする。指定値は1つではなく、連続した複数の値とする。
SUMPRODUCT関数を使う。



セル範囲 A1:F1 にある 18, 24, 32, 34, 37, 41 の要素で、30代の値をカウントする。

=SUMPRODUCT((A1:F1>29)*(A1:F1<40))
tag: #Libreoffice, #sumproduct, #関数, #カウント, #セル

2020-06-24

Evolution CMS, 2.xのAjaxSearchに対するエラー対処方

ソフト名 : Evolution CMS 2.x
スペニット名 : AjaxSearch

Evolution CMS 2.x で検索機能を有効にした場合、以下のエラーが出力された。

<< エラー内容 >>

« Evolution CMS Parse Error »

Call to undefined method EvolutionCMS\Database::freeResult()


<< 対処方 >>

Package Management から、AjaxSearchのバージョンを変更する。

Version 1.12.1 から masterに変更し、Resetをクリックする。

以上

2020-06-05

Evolution CMS, 検索結果を特定ページに表示する, DLMenu

ソフト名 : Evolution CMS 1.4x

Extras : DLMenu


[[ifsnippet? &name=`AjaxSearch`]] 
	[!AjaxSearch?
		&ajaxSearch=`0`
		&addJscript=`1`
                .......
&landingPage=`検索結果ページのID`
&showResults=`0`
                .......
!]
&landingPage=`検索結果ページのID`
で設定。検索ボタンをクリックすると、指定IDに結果を表示する。


検索結果のページには

[!AjaxSearch? &showInputForm=`1` &ajaxSearch=`0`!]
を記述する。
&showInputFormの値が1の時は、再検索のテキストボックスが表示される。
0 の時は非表示となる。

参照させていただいたサイト

tag: #evolution, #cms, #dlmenu, #ajaxsearch