Quantcast
Channel: CSSタグが付けられた新着記事 - Qiita
Viewing all 8779 articles
Browse latest View live

次世代Webスタイリングを追う ーbackdrop-filter

$
0
0

これはなに?

Chrome Dev Summit 2019にて「 Next-generation web styling」というセッションがあり、それを(ときどき)追いかけています。昨年のアドベントカレンダーでは、「次世代Webスタイリングを追う ーScroll Snap, :focus-within, @media (prefers-*), :is()」という記事を書きました。

本記事はその続きで、今回はCSSプロパティ「backdrop-filter」について記載します。

CSSプロパティ: filterを振り返る

backdrop-filterの紹介の前に、 CSSプロパティの filterについて振り返っていきます。

MDNによるfilterの説明:

CSS の filter プロパティは、ぼかしや色変化などのグラフィック効果を要素に適用します。フィルターは画像、背景、境界の描画を調整するためによく使われます。

まずは、よく使われるという画像要素に filterのグラフィック効果を適用してみました。良い感じですね。

OriginalBlurGrayscaleSepia

filter: none;

filter: blur(7px);

filter: grayscale(0.7);

filter: sepia(0.7);

またMDNの説明によると、 filterは、背景にもグラフィック効果を適用することができるようなので試してみました。
画像ではなく、キャプション要素に filterのぼかし効果を適用しています。

ng.png

<style>figure{position:relative;background-color:yellowgreen;}figcaption{position:absolute;right:0;bottom:0;left:0;padding:8px16px;color:#fff;background-color:rgba(0,0,0,0.4);filter:blur(7px);}</style><figure><imgsrc="hoge.png"alt=""/><figcaption>これはキャプションです。</figcaption></figure>

意図した通りにはなりませんでした。
どうやら filterは、「背景含めて要素全体にグラフィック効果を適用する」ことはできても、「要素の背後のみにグラフィック効果を適用する」ということはできないようです。

CSSプロパティ: backdrop-filter

そんな時に活躍するのが、 backdrop-filterです。
backdrop-filterは、filterのグラフィック効果を要素の背後のみに適用することができます。

さきほどのキャプションを backdrop-filterに書き換えてみました。

ok.png

<style>figure{position:relative;background-color:yellowgreen;}figcaption{position:absolute;right:0;bottom:0;left:0;padding:8px16px;color:#fff;background-color:rgba(0,0,0,0.4);backdrop-filter:blur(7px);}</style><figure><imgsrc="hoge.png"alt=""/><figcaption>これはキャプションです。</figcaption></figure>

キャプション要素の背後のみにグラフィック効果が適用されており、意図した通りになりました。
今回はblurでしたが、filterと同じく多くのグラフィック効果があるので興味がある方は試してみてください。

こちらに上記サンプルを置いておきます。

ブラウザの対応状況

CSS property: backdrop-filter
backdrop-filter
caniuse.com

参考資料

おわり

また何かできたら紹介していきたいと思います。
おわり。


[コピペで即使える]CSSだけで作った三角形の矢印ボタン

$
0
0

CSSのみでボタンを作る時、皆さんは、どのように作っていますか?

今回は、CSSで三角形の上向き・下向き矢印ボタンの作り方を紹介したいと思います!
以下の写真が、これから製作する矢印ボタンのブラウザでの表示となります。
スクリーンショット 2020-01-12 10.43.19.png

では、さっそくhtmlとcssを見ていきましょう!
以下がHTMLです。

<divclass="upward"></div><divclass="downward"></div>

以下がCSSです。

.upward{position:relative;display:inline-block;padding:00016px;color:#000;vertical-align:middle;text-decoration:none;font-size:15px;margin-left:30px;}.upward::before,.upward::after{position:absolute;top:0;bottom:0;left:0;margin:auto;content:"";vertical-align:middle;}.upward::before{box-sizing:border-box;width:20px;height:20px;border:1pxsolidblue;background-color:blue;border-radius:25%;}.upward::after{margin-left:4.5px;width:0;height:0;border-style:solid;border-width:05px8.7px5px;border-color:transparenttransparent#fffffftransparent;}.downward{margin:020px08px;position:relative;display:inline-block;padding:00016px;color:#000;vertical-align:middle;text-decoration:none;font-size:15px;}.downward::before,.downward::after{position:absolute;top:0;bottom:0;left:0;margin:auto;content:"";vertical-align:middle;}.downward::before{box-sizing:border-box;width:20px;height:20px;border:1pxsolidblue;background-color:blue;border-radius:25%;}.downward::after{margin-left:4.5px;width:0;height:0;border-style:solid;border-width:8.7px5px05px;border-color:#fffffftransparenttransparenttransparent;}

解説

.upward::before, .downward::beforeの部分が四角形の外枠になっています。
→四角形の色・大きさを変える際は、ここをいじります。

.upward::after, .downward::afterの部分が矢印です。
→矢印の大きさ、向きを変える際は、この.upward::afterや.downward::afterを変える必要があります。

「CSS三角形作成ツール」
http://apps.eky.hk/css-triangle-generator/ja

この三角形作成ツールが、けっこうオススメで、この作成ツールで、矢印の向き・色・大きさなどを指定できます。
ここで作ったものを.upward::afterや.downward::afterに貼り付けると、自分の好きな色・向きで、矢印を作成できます。
僕の場合は、貼り付けただけだと、矢印が真ん中に来ないので、margin-leftで真ん中に来るように調整しています。

初心者によるプログラミング学習ログ 208日目

$
0
0

100日チャレンジの208日目

twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。

100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。

208日目は

申し込みフォームの作成

$
0
0

申し込みフォーム

<!DOCTYPE html>




入会申し込み
<link rel="stylesheet" href="css/style.css">


<!--フォーム画面-->

入会申込み


入会するには、次のフォームに必要事項をご記入下さい。



メールアドレス必須



パスワード必須



登録する


TECH::CAMPにて受講開始

$
0
0

1/11(土)とうとうプログラミングスクールでの学習を開始。
はじめメンターとの面談を行い、直近の学習スケジュールを立てる。
目標は週20時間。
平日には平均2時間ほどしか時間の確保ができないと考えると、土日に合計10時間は勉強する必要あり。

HTMLとCSSの基礎を学習した。とりあえず理解は置いておいてコードを書いてみるようにと指示があったので
教材通りどんどん書き進める。なんとなーくわかったようなわからないような。。。

3時間ほど作業を行い、ホームページのトップ画面のようなものが完成。プロパティはたくさん使ったが、どれがなんの機能を果たしているのかは全然わかりませんでした。

自分でウェブサイトを作って見たらモチベーション続くかな。
智恵にこのことを話して、どんなサイトを作ったら楽しそうか話してみよう。
スクリーンショット 2020-01-12 15.18.53.png

JavaScriptでテーブルを自動で生成

$
0
0

以下のサンプルソースは、forループでテーブルを自動生成し、生成されたテーブルを指定した行数ずつ表示するページング機能を実装しています。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>サンプル</title>
    <meta charset="utf-8">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>

    <style>
    div#paging
    {
      text-align: center;
      /* スクロールに対してページングボックスの位置を固定 */
      position: fixed;
      /* 位置を指定 */
      bottom: 0;
      right:45%;
    }

    div#pagingbox{
      background: #FFF;
    }

    th{
      /* ヘッダ背景塗りつぶし */
      background: #eee;
    }
   th,td {
     /* 枠線を1本線指定 */
      border: solid 1px;
      width:auto;
   }

   table{
     /* 枠線を1本線指定 */
      border: solid 1px;
      border-collapse:  collapse;
      white-space: nowrap;
    }

    footer{
      position: fixed;
      width: 100%;
      background-color: #C0C0C0;
      padding: 15px 0;
      bottom: 0; /*下に固定*/
    }
    </style>

  </head>




  <body>
    <!--テーブル生成位置-->
    <div id ='maintable'></div>



    <!--ページングボタン配置-->
    <footer>
      <div id="paging">
        <table>
          <tr>
            <tb><button id="prevbtn" type="button"><</button></tb>
              <tb>
                <span id="currentpage">currentpage</span>
                  /
                <span id="lastpage">lastpage</span>
              </tb>
            <tb><button id="nextbtn" type="button">></button></tb>
          </tr>
        </table>
      </div>
    </footer>


    <script>
      // table要素を生成
      var table = document.createElement('table');
      // tr部分のループ
      for (var i = 0; i < 700; i++) {
        // tr要素を生成
        var tr = document.createElement('tr');
        // th・td部分のループ
        for (var j = 0; j < 50; j++) {
            // 1行目のtr要素の時
            if(i === 0) {
              // th要素を生成
              var th = document.createElement('th');
              // th要素内にテキストを追加
              th.textContent = i + '-' + j;
              // th要素をtr要素の子要素に追加
              tr.appendChild(th);
            } else {
              // td要素を生成
              var td = document.createElement('td');
              // td要素内にテキストを追加
              td.textContent = i + '-' + j;
              // td要素をtr要素の子要素に追加
              tr.appendChild(td);
            }
        }
        // tr要素をtable要素の子要素に追加
        table.appendChild(tr);
        }
      // 生成したtable要素を追加する
      document.getElementById('maintable').appendChild(table);
    </script>


    <script>// ページング機能
    jQuery(function($) {
      var page = 0;
      var displayrows = 30;// 1ページ当たり表示する行の数

      function draw() {// ページの表示
        $('#lastpage').html(Math.ceil(($('tr').size()-1)/displayrows));
        $('#currentpage').html(page + 1);
        $('tr').hide();
        $('tr:first,tr:gt(' + page * displayrows + '):lt(' + displayrows + ')').show();// 変数を使用する場合は' +  + 'を忘れずに
      }
      $('#prevbtn').click(function() {// 1ページ後進
        if (page > 0) {
          page--;
          draw();
        }
      });
      $('#nextbtn').click(function() {// 1ページ前進
        if (page < ($('tr').size() - 1) /displayrows - 1) {
          page++;
          draw();
        }
      });
      draw();//初回表示
    });
    </script>
  </body>
</html>


実行結果
無題.png

エンジニア研修

$
0
0

概要

今回弟がエンジニアデビューするということで、macbookAir(gold)を買ってあげました。
これから9か月間、私の方で研修をおこない、それなりのエンジニアになってもらおうかと思います。

そこで弟のように、エンジニアを始めたばかりの人の参考になるように、「研修内容」、「弟が躓いた箇所」や「参考文献など」を記事にしていこうかと思います。
普段私は自分のブログサイトで発信していましたが、誰も見てくれないので、qiitaに書いていくことにしました。
https://campbel.love/が私のサイトです。たまには見てくださいな(笑)

弟はそこまで忍耐力もなく、また、ほとんど初心者なので「挫折をしないカリキュラム」、「スムーズな理解」に重点を置くつもりです。まさにゆとり!
なので、少し遠回りをしてしまうかもしれません。
例えば、Dockerを用いてもらいたいけど、初学者の弟には難しいのでMampから始めてもらう。みたいな。(最終的にはdockerにしてもらいますが。)

偉そうにカリキュラムは組みましたが、私自身も勉強途中で全部を理解はしていません。弟と一緒に勉強して知識を高めていきたいと思っています。
*もし、こんなやり方の方がいい、これは間違っているなどありましたら、コメントをお願いいたします。弟と私のために。

私は文章を書くのがすこぶる苦手なので、わかりづらい事や誤字脱字もあるかと思いますが、どうぞよろしくお願い致します。

予定のカリキュラム

文法の理解などは基本はdotinstallをやってもらいます。(有料なので私が支払うことになりそう。。。)
わからないことがあれば随時きくように。

1ヶ月~2ヶ月
・php、html、css、js、mysqlを理解する。(jsから初めてもらおうかなと)
・mampの設定
・macの操作、mampになれる。

3ヶ月〜5ヶ月
・jqueryもしくはvueをつかう。vueが使えるようになったら最高。ちなみに私は使用したことがない。
・gitを使えるようにする。
・local環境下でいいのでlaravelでlaravelでサイトを作れるようにする。
「掲示板的なやつ」もしくは「画像投稿サイト」でいい。
デザインパターンはしっかり行う。
リレーション、トランザクションもしっかり行こなう。
ログイン認証もしっかり行う
時間があればrest api作成も行う。
・hostsの理解など

ここらへんで一区切り。。。

6ヶ月〜7ヶ月
・cicdを使う(cercleciでいいかと)
・awsを使う
・laravelのテスト仕様書も書けるようにする。

8ヶ月
・localとawsでdockerを使う。

9ヶ月
kubernetesを使用する??これは未定。。。

これでかなりレベルの高いエンジニアであると僕は思うが、参考にしているエンジニアチャンネルでは、これが最低ラインだと言っていました。。。(kubernetesは除く)
エンジニアの敷居が上がってきているのかしら?٩( ᐛ )و
しかし、専門学生が2年通うよりも全然最強だと思います!!
ちなみに私はこれらのことを、もちろんこれだけでなく他の勉強もしながらですが、数年かけました。それを弟は9ヶ月で行うため、厳しい道のりになるとおもわれます。弟よ!がんばれ〜!!( ^ω^ )

私の課題として、「awsでdockerを使用する」、「kubernetesを使用する」はまだやったことがないので、できるようにしておきます!

なぜmacなのか

一言で言うと使っている人が多いから。
他には、サーバーではlinuxを使用することが多いが、macはwinよりもlinuxに近いからとか、bashが使えるからとか、かっこいいから。

賛否両論だと思いますが、とにかくmacを買うことをお勧めします。
高いなと思うかもしれませんが、分割での購入も可能で、2年の分割だと利子はなんと0円です。
あと学割があって最大22000円引きで購入が可能。2020年2月からは新学期キャンペーンで3万ほどのヘッドフォンがついてきますよ!お得です!
参考

1日目はマックの設定

1 appleidの作成、osが最新かどうかのチェック
2 アプリのダウンロード(詳細は以下)
3 chromeの拡張のダウンロード(詳細は以下)

macにダウンロードするアプリ

ブラウザ
「こんなにいらないやろ」と思うかもしれないが、”エンジニア”には必要。(アプリ欄を見てこれらがないと笑われてしまう。)
chrome
firefox
opera

開発に必要なアプリ
サイバーダッグ: サーバーのファイルをいじれる
iterm2: ターミナルの拡張版
sequel pro: mysqlをいじる
vs code: エディタ(高級なメモ帳)
postman: apiを可視化
xcode: 主にアイフォンのアプリを作成するのに使用。アイフォンのアプリを作成しなくとも必要。
mamp: mac、apache、mysql、phpの略。windowsだとxamp。パソコン内に仮想のサーバーを立てることができる。
mampでの開発は時代遅れのゴミで、本来ならば(というよりできるエンジニアは)Dockerを使うべきだが設定はmampの方が断然楽なので、初め(6ヶ月くらい)はmampで対応する。
composer: phpのライブラリ環境コマンド。これは必須。なくても開発はできるが、使用していないのはゴミエンジニアである。

チャットアプリ
line: line
chatwork: よく使われるチャットツール
slack: よく使われるチャットツール

その他便利なアプリ
app cleaner: アプリをきれいに削除できる
cd to: フォルダから直で移動できる。
clipy: 有料。コピーしたものの履歴が残る。数百円なので絶対に入れた方がいいと思われるアプリの一つ。使ったら世界が変わったように感じた。弟にも買ってあげた。

これらはまだ使用しないと思われるので、まだインストールしなくていい
brew cask
git
anyenv: phpしか使わないならば、いらない。python、node.jsをやる場合は入れた方がいい。

chromeにダウンロードする拡張の機能

開発はおもにchromeで行うため、chromeの設定はとても大事です。
ダウンロード先はここ
https://chrome.google.com/webstore/category/extensions?hl=ja

開発に必要なアプリ
Clear Cache: キャッシュの削除
EditThisCookie: クッキーの編集
Page load time: ページが表示されるまでの時間計測
Quick Javascript Switcher: jsのオンオフ切替。1クリックでできるため、めちゃめちゃ便利です。

あると便利なアプリ
Wappalyzer: 自分が閲覧したサイトがどの技術で作られているか確認ができる。
Google のクロム ™ のための時計: chromeに時計を表示させる。
ブックマークサイドバー: ブックマークがマウスオーバーで開ける。お勧めの設定は「マウスを左に持っていき右クリックで表示させる。」

個人的にお勧めなアプリ
Douga Getter: 動画のダウンロード
ストリームレコーダー: 動画のダウンロード

とりあえず1日目はここまで。お疲れ様です。

cssでのブロックの配置方法

$
0
0

1. 目的

Webページを作成するときにブロックを配置する方法をcss/htmlでどのように記述するかを記録する。

2 内容

作成したWebページ

14.JPG

上記を実現するコード

sample.html
<divid="large_block"><divclass="float150"></div><divclass="float300"></div></div><divid="large_block"><divclass="float150"></div><divclass="float300"></div></div>
sample.css
#large_block{width:1000px;height:200px;padding:0px;margin:10px;float:left;/* 左側を起点にする */border:solid0.5px;/* 領域のボーダーラインの設定 */}.float150{height:150px;/* 高さ指定 */width:150px;/* 幅指定 */background-color:#FFF;/* 背景色指定 */margin:23px;/* 周りの余白指定 */float:left;/* 回り込み指定(左から順番に配置していくということ) */border:solid2px#6091d3;/*線*/border-radius:10px;/*角の丸み*/padding:0px;}.float300{height:150px;/* 高さ指定 */width:300px;/* 幅指定 */background-color:#FFF;/* 背景色指定 */margin:23px;/* 周りの余白指定*/float:left;/* 回り込み指定(左から順番に配置していくということ) */border:solid2px#6091d3;/*線*/border-radius:10px;/*角の丸み*/padding:0px;}

チームの時間管理できるWebチャートを作成したかった

$
0
0

初めに

前職にてヘルプデスクのリーダーを行っていた際、メンバーが今何のタスクを行っているか視覚的に把握できれば、もっとスムーズに休憩時間の調整や緊急度や重要度を意識したタスク管理ができそうだなと思っていました。
そこで時間管理チャートの作成に取り掛かったのですが、いろいろな理由で没になったため供養したいと思います。

元ネタ

コピペでWebに埋め込めるシンプルなガントチャート時間割作ってみた
理想にとても近いOSSが公開されていたので、改変して利用させていただくことにしました。

画面

キャプチャ1.PNG

機能

  • タスクをクリックして選択
  • タスクの新規作成・編集・削除
  • 現在の時刻をラインで表示
  • 30分単位で時間軸をスライド可能
  • 画面サイズ自動変更

頑張りましたがデザインがダサいのはどうしようもなかったです。
(元ネタの否定ではありません)
(作成中)

MarkdownでのAA入力を対応してみた 【ぼくのがんがえたさいきょうの掲示板】

$
0
0

個人で作っている掲示板サイトがある。最近日本語対応を実装しているが、途中であることに気づいてしまった。

「せっかく和訳したところでAA貼れないなら意味ない!」

AAは日本語の掲示板の不可欠な文化である。しかし現代のパソコンやスマホではAAが正しく表示されない場合が多い。これはどうにか解決したい。

やりたいこと

私の掲示板はMarkdown記法で書き込む形だ。AAをそのまま入力すると、太字として認識されたり自動的に改行が入ったりする。2chの専ブラみたいにいい感じにAAを表示したい。

<aa>(´・ω・`)</aa>

自動的にAAを認識するのは大変そうなので、AAタグを用意する。AAタグの中身をAA用のフォントに変えて、Markdown記法の*bold*などを無視する。

無理矢理AAタグを対応する

利用しているMarkdownライブラリはrussross/blackfridayだ。諸々があって今だにv1を使ってる。
このライブラリはHTMLの入力を対応しているが、中身をMarkdown記法としてパースしてしまう。

まず、フォークしよう。そして、markdown.goblockTagsというマップを見てみる。

markdown.go
// blockTags is a set of tags that are recognized as HTML block tags.// Any of these can be included in markdown text without special escaping.varblockTags=map[string]struct{}{"blockquote":{},"del":{},"div":{},// ..."aa":{},// ← 追加した}

blockTagsに入っているタグはブロック(パラグラフ)になり、エスケープされないとコメントが丁寧に教えてくれた。よし、"aa": {},を追加する。これで<aa>の中身はMarkdownにならずそのまま出力される。

XSS対策としてmicrocosm-cc/bluemondayを使っている。blackfridayでMarkdownをHTMLに変換した後に、bluemondayでsanitizeをかける。bluemondayにAAタグを許可する必要がある。

varsanitizer*bluemonday.Policyfuncinit(){sanitizer=bluemonday.UGCPolicy()// よくある書式設定用のタグなどを許可sanitizer.AllowNoAttrs().OnElements("aa")// 属性なしの<aa>を許可}

こうしないと<aa>が丸ごと消されてしまう。

しかし非公式のHTMLタグをそのまま出力するのは気持ち悪いので、<aa><p class="aa">に変えよう。PuerkitoBio/goqueryはHTMLをいじるのに便利だ。

上記の処理を組み合わせるとこうなる。

funcrenderMarkdown(contentstring)template.HTML{// Markdownをrenderrenderer:=blackfriday.HtmlRendererWithParameters(commonHtmlFlags,"","",blackfriday.HtmlRendererParameters{// ...})md:=blackfriday.MarkdownOptions([]byte(content),renderer,blackfriday.Options{// ...})// XSS対策としてsanitizesanitized:=sanitizer.Sanitize(string(md))// goqueryを使ってHTMLをいじるdoc,err:=goquery.NewDocumentFromReader(strings.NewReader(sanitized))iferr!=nil{panic(err)}// <aa>を<p class="aa">に変換doc.Find("aa").Each(func(_int,sel*goquery.Selection){sel.SetAttr("class","aa")sel.Nodes[0].Data="p"})// <html><body>が勝手に追加されるので省略html,err:=doc.Find("body").Html()iferr!=nil{panic(err)}returntemplate.HTML(html)}

※ 本当はpanicせずにerrorを返すべき

たぶん、こういう処理はmarkdownのライブラリの中でやるべきだが、blackfridayのコードはヤバイのでこっちの方が楽である。実際のコードでは<aa>の対応だけじゃなくてYouTubeのembedなどは似た手段で対応している。

AAをいい感じに表示する

@scrpgilさんは素敵なAAフォントのまとめを提供してくれているので参考にした。めっちゃ助かる。ありがとうございます!

aahub_light1というフォントは軽くて綺麗なので使うことにした。woffファイルをS3にアップてして、キャッシュするようにCache-Controlヘッダをpublic, max-age=31536000, immutableにした。AA用のCSSも作った。これも永遠にキャッシュかけたいのでメインのCSSと分けてCache-Controlを指定した。

aa.css
@font-face{font-family:"aahub_light";src:url("[CDNのURL]/aahub_light.woff")format("woff");font-display:swap;}p.aa{font-family:"aahub_light";white-space:pre;overflow:scroll;word-break:keep-all;overflow-wrap:normal;/*font-size: 16px;*//*line-height: 18px;*/}

スマホなどで大きいAAがoverflowしがちなのでoverflow: scrollにした。もっとも正しい表示の仕方はfont-sizeline-heightを指定する必要があるがスマホだと大きすぎるのでとりあえず消した。それでもなんとなく大丈夫だった。

結果

Screen Shot 2020-01-12 at 22.34.31.png

スマホでもAAはいい感じに表示される。やったぜ!

「ぼくのかんがえたさいきょうの掲示板」をシリーズとしてまた記事を書きたいと思うので次もよろしくお願いします!

gatsbyビルド時に起きるmaterial-uiのスタイル崩れを直す

$
0
0

gatsbyビルド時にmaterial-uiのスタイルが崩れてしまった

gatsbyで開発したspaをリリースしたらmaterial-uiで構成したコンポーネントのスタイルが崩れていました。どうやらプラグインを入れないとmaterial-uiのスタイルが崩れてしまうようです。
修正法がわかったので、共有しようと思います。

スタイル崩れの修正法

1、gatsby-plugin-material-uiをインストール

npm install gatsby-plugin-material-ui @material-ui/styles

もしくは

package.jsonに以下のようにgatsby-plugin-material-uiを加える
その後、npm installを実行
image.png

2、gatsby-config.jsにgatsby-plugin-material-uiプラグインの情報を入力する必要がある

gatsby-config.jsに以下のようにgatsby-plugin-material-uiを加える
image.png

これで、再ビルドするとmaterial-uiのcssなどのスタイルが整った。

gatsby developで立ち上がる開発環境でスタイルが崩れてない人もgatsby serveでビルド時の(本番)環境が立ち上がるのでリリース前には試しておいたほうがいいと思います。

参考にしたサイト

https://translate.googleusercontent.com/translate_c?depth=1&hl=ja&prev=search&rurl=translate.google.com&sl=en&sp=nmt4&u=https://github.com/mui-org/material-ui/issues/18197&xid=17259,15700022,15700186,15700191,15700256,15700259,15700262,15700265,15700271,15700283&usg=ALkJrhgdCMg8T0L8dnElpPSADj4XICpmHQ

HTMLとCSS学習完了

$
0
0

あっという間にHTMLとCSSの学習部分が終了。
テキスト通り言われるがままコードを書いただけ。とりあえず表示はされたのでうまくいったのかとは思う・・・
何度も同じコードを打っていたら、なんとなく意味が分かってきた気がする。divがグループを括ってるとか、bodyとかfooterとか。。。

最後に確認テストがありました。コードを自分で書いて、ページの左上の方が広さ300px、高さが100pxの範囲を赤くするというもの。全くわからず。。。自分のレベルの低さに愕然。繰り返しコードを書いて、自分のものにしていきたいとおもいます。スクリーンショット 2020-01-13 0.10.33.png

JavaScriptでJSONからテーブルを動的に生成

$
0
0

以下のサンプルソースは、JSON型データからテーブルを動的に生成し、指定した行数ずつ表示するページング機能を実装しています。「Tabulator」は使っていません。

jsontoTable.thml
<!DOCTYPEhtml><htmllang="ja"><head><title>サンプル</title>
    <meta charset="utf-8">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>

    <style>
    div#paging
    {
      text-align: center;
      /* スクロールに対してページングボックスの位置を固定 */
      position: fixed;
      /* 位置を指定 */
      bottom: 0;
      right:45%;
    }

    div#pagingbox{
      background: #FFF;
    }

    th{
      /* ヘッダ背景塗りつぶし */
      background: #eee;
    }
   th,td {
     /* 枠線を1本線指定 */
      border: solid 1px;
      width:auto;
   }

   table{
     /* 枠線を1本線指定 */
      border: solid 1px;
      border-collapse:  collapse;
      white-space: nowrap;
    }

    footer{
      position: fixed;
      width: 100%;
      background-color: #C0C0C0;
      padding: 15px 0;
      bottom: 0; /*下に固定*/
    }
    </style>

  </head>




  <body>
    <!--テーブル生成位置-->
    <div id ='maintable'></div>



    <!--ページングボタン配置-->
    <footer>
      <div id="paging">
        <table>
          <tr>
            <tb><button id="prevbtn" type="button"><</button></tb>
              <tb>
                <span id="currentpage">currentpage</span>
                  /
                <span id="lastpage">lastpage</span>
              </tb>
            <tb><button id="nextbtn" type="button">></button></tb>
          </tr>
        </table>
      </div>
    </footer>


    <script>
    var json =[     //jsonサンプルデータ
      {
        "順位":1 ,"氏名":"王貞治" , "本数":868
      }
      ,
      {
        "順位":2 ,"氏名":"野村克也" ,"本数":657
      }
      ,
      {
        "順位":3 ,"氏名":"門田博光" ,"本数":567
      }
      ,
      {
        "順位":4 ,"氏名":"山本浩二" ,"本数":536
      }
      ,
      {
        "順位":5 ,"氏名":"清原和博" ,"本数":525
      }
    ]

      // table要素を生成
      var table = document.createElement('table');

      // ヘッダーを作成
      var tr = document.createElement('tr');
      for (key in json[0]) {
            // th要素を生成
            var th = document.createElement('th');
            // th要素内にテキストを追加
            th.textContent = key;
            // th要素をtr要素の子要素に追加
            tr.appendChild(th);
            }
        // tr要素をtable要素の子要素に追加
        table.appendChild(tr);

      // テーブル本体を作成
      for (var i = 0; i < json.length; i++) {
        // tr要素を生成
        var tr = document.createElement('tr');
        // th・td部分のループ
        for (key in json[0]) {
              // td要素を生成
              var td = document.createElement('td');
              // td要素内にテキストを追加
              td.textContent = json[i][key];
              // td要素をtr要素の子要素に追加
              tr.appendChild(td);
            }
        // tr要素をtable要素の子要素に追加
        table.appendChild(tr);
        }
      // 生成したtable要素を追加する
      document.getElementById('maintable').appendChild(table);
    </script>


    <script>// ページング機能
    jQuery(function($) {
      var page = 0;
      var displayrows = 30;// 1ページ当たり表示する行の数

      function draw() {// ページの表示
        $('#lastpage').html(Math.ceil(($('tr').size()-1)/displayrows));
        $('#currentpage').html(page + 1);
        $('tr').hide();
        $('tr:first,tr:gt(' + page * displayrows + '):lt(' + displayrows + ')').show();// 変数を使用する場合は' +  + 'を忘れずに
      }
      $('#prevbtn').click(function() {// 1ページ後進
        if (page > 0) {
          page--;
          draw();
        }
      });
      $('#nextbtn').click(function() {// 1ページ前進
        if (page < ($('tr').size() - 1) /displayrows - 1) {
          page++;
          draw();
        }
      });
      draw();//初回表示
    });
    </script>
  </body>
</html>

結果

json =[     //jsonサンプルデータ
      {
        "順位":1 ,"氏名":"王貞治" , "本数":868
      }
      ,
      {
        "順位":2 ,"氏名":"野村克也" ,"本数":657
      }
      ,
      {
        "順位":3 ,"氏名":"門田博光" ,"本数":567
      }
      ,
      {
        "順位":4 ,"氏名":"山本浩二" ,"本数":536
      }
      ,
      {
        "順位":5 ,"氏名":"清原和博" ,"本数":525
      }
    ]

                      ⇓
                 無題.png

初心者によるプログラミング学習ログ 209日目

$
0
0

100日チャレンジの209日目

twitterの100日チャレンジ#タグ、#100DaysOfCode実施中です。
すでに100日超えましたが、継続。

100日チャレンジは、ぱぺまぺの中ではプログラミングに限らず継続学習のために使っています。

209日目は

Googleで検索結果に戻ったときの「他の人はこちらも検索」を非表示にする方法

$
0
0

Google の検索結果に戻ってきたとき、リンクの下に "他の人はこちらも検索" と表示されてリンクが動いてしまうのを防ぐ方法です。Chrome, Brave, Firefox, Safari に対応しています。ただしモバイル版では制約上不可能なようです。
ちなみに英語版では "People also search for" と表示されるようです。

Chrome / Brave

以下の拡張機能を追加するだけです。
No Search For - Chrome ウェブストア
https://chrome.google.com/webstore/detail/no-search-for/gfilnngoaebchcnkmppbnijaakeccdjc

※ プライベートモードでも使用したい場合は拡張機能設定の「詳細」から「シークレットモードでの実行を許可する」のチェックを入れてください。

またはカスタム CSS を追加することもできます。
https://gist.githubusercontent.com/shge/cccac34a618662d0ea7c25a5b0a681ad/raw/2debb136650da023b398ef34ef3a356e93277176/hide_people_also_search_for.user.css

.exp-outline,.rc>div:nth-child(3){display:none!important;}

Firefox

まずはカスタム CSS を追加するための拡張機能を追加します。

Stylus - Firefox (ja) 向け拡張機能を入手
https://addons.mozilla.org/ja/firefox/addon/styl-us/

次に下のリンクから Install styleをクリックするか、以下の CSS をコピーすると追加できます。

https://gist.githubusercontent.com/shge/cccac34a618662d0ea7c25a5b0a681ad/raw/2debb136650da023b398ef34ef3a356e93277176/hide_people_also_search_for.user.css

.exp-outline,.rc>div:nth-child(3){display:none!important;}

Safari

以下の内容のファイルを拡張子 .cssで作成し、Safari メニュー→環境設定→詳細→スタイルシートから選択します。

style.css
div.srg>div.g>div>.exp-outline,div.srg>div.g>div>div.rc>div:nth-child(3){display:none!important;}

すべてのウェブサイトに適用されてしまいますがまったく同じclassを使っているところはないと思うのでおそらく大丈夫です。

iOS

iOS Safari ではコンテンツブロッカーを使用して特定要素を非表示にすることはできますが、モバイル版 Google では "他の人はこちらも検索" の表示と同時にサイトのタイトルの下に表示される説明文が非表示 (display: none) になってしまうため、結局リンクは動いてしまいます。
現時点でカスタムCSSを適用することは Safari の制約上不可能なようです。

Android

以下の記事がヒットしましたが情報が古く、また Android 端末を所持していないため真偽はわかりません。
Opera Mobileのユーザースタイルシートでサイトの見栄えを変更 特集その4

参考

https://keikenchi.com/how-to-hide-search-other-people-also-here


😜【Sass】疑似要素使うときは&をちゃんと付ける

$
0
0

環境

Laravel 6.5.0
Vue.js

やりたいこと

::beforeとか::afterとかで任意の要素周辺を修飾できる疑似要素
Sassで使用する場合は必ず「&」を付加しないといけなかった

やったこと

🔵文言の前に✬が付く

hoge.sass
.messagefont-weight:boldcolor:#ffffffbackground-color:#ff0000&::beforecontent:"✬"background-color:#ff0000color:#000000

❌コンパイルは通るが機能しない

hoge.sass
.messagefont-weight:boldcolor:#ffffffbackground-color:#ff0000::beforecontent:"✬"background-color:#ff0000color:#000000

iOS SafariでWebサイトの特定の要素をCSSセレクタで指定して非表示にするアプリ[無料]

$
0
0

iOS Safari で広告など Web サイト上の邪魔な要素を非表示にするアプリ AdFilter の紹介です。なお iOS ではユーザースタイルシート(CSS)は使えないため display: noneすることしかできません。

CSSセレクタチートシート: https://webliker.info/css-selector-cheat-sheet/

方法

  1. AdFilter をインストール

    AdFilter - 広告ブロック
    https://apps.apple.com/jp/app/adfilter-広告ブロック/id1042682195

  2. 設定 → Safari → コンテンツブロッカー から AdFilter を有効にする

  3. AdFilter を開き、下中央の「カスタム」をタップ

  4. 右上の+をタップ

  5. タイプ→「要素の非表示」を選択

  6. セレクターとターゲットを設定して保存
    IMG_8655.jpg

参考

有料ですが、Web Cleaner というアプリもあるようです。(2020/01/13現在 ¥120)
こちらは要素を GUI で選択できるため簡単そうです。
https://lifehacking.jp/2017/06/web-cleaner/

CSS設計について学習しました。

$
0
0

CSS設計とは

HTMLのクラス名の付け方と、CSSのコードの管理方法の考え方のこと。
構造化・命名規則などとも呼ばれたりする。
CSSのメンテナンス性や作業効率が向上する、
他のCSS編集者が理解しやすくなるといったメリットがある。

BEM

Block:枠組みとなる要素。
Element:Blockの中に存在する子要素。
Modifier:BlockやElementを修飾するもの。
これら3つを用いて命名する手法。

block__element--modifierのようにblockとelementはアンダースコア2つで区切り、elementとmodifierはハイフン2つで区切る。

FLOCSS

CSS設計指針。

Foundation:ベースを設定。
Layout:大枠のレイアウトに関する定義。
Component:再利用ができる最小限のパーツ。
Project:サイト固有のまとまりを定義してパターン化するパーツ。
Utility:ちょっとした調整のために使われる。

参考サイト

https://qiita.com/tera_shin/items/af90aeba49f93c76bd9e
https://haniwaman.com/flocss/#FLOCSS
https://ics.media/entry/15166/
https://qiita.com/sueshin/items/dcbaf3d8a0adb6b087db

rgbaの値が正しく反映しないときの確認方法

$
0
0

未経験からプログラミング学習をしている方に向けての記事です。
vue.jsでモーダルウインドウを作成した際、rgbaでalphaを0.5に設定しているのに、背景が透明にならない時があったため、同じように悩んでいる場合どのように解決すれば良いかまとめておきます。

確認方法

①rgbaがちゃんと適用されていることはデベロッパーツールで確認できているか?
②デベロッパツールでちゃんと適用されていない場合には、デベロッパーツール上でrgbaを指定してみて、改善されるか試してみてください
③デベロッパツールでちゃんと適用されている場合には、デベロッパーツール上でrgbaの指定を外してみて、どのように表示が変わるかを試してみましょう。

自走できるエンジニアを目指して

メンターからは

「答え」ではなく、「答えまでたどり着く方法」を学ぶ

とよく言われます。
未経験からプログラミングを学習されてる方は、時間に追われてついつい答えを求めがちですが(自分自身)、このことを念頭に質問すると良いと思います。

今更だけどCSSって何ぞや あとPHPってHTMLの中に書けるのに.phpってどういう意味だってばよ?

$
0
0


という方に向けてざっくりCSSとPHPを解説して行きたいと思います。



まあCSSがCascading Style Sheetsの略で、表示に関する記述って言うのは誰でも分かると思うんですが、じゃあCSSの中身はどういう仕組みになってるの?という問いに対して答えられる人ってIT人口の何割なんだろうねって気がします。

HTMLに関してもPHP使うなら必修だと思うけど、pとかaとかimgとか、主要なタグさえ覚えればheadの中身とか理解しなくても使えてしまったりするので「今更HTMLとかなぁ~」って思ってる人こそ勉強してみると楽しいと思う。

あと分かってるとは思うけど、仕組みと言いつつ低レイヤーの話はしない(出来ない)のでCSガチ勢の方は帰ってどうぞ。



CSSの役割とは何ぞや



これに関しては長々と解説するより実例を見てもらった方が早いでしょう。

Qiita.png

みなれたQiitaのトップページはCSSを抜くとこんな感じになります。HTMLのお仕事はテキストとそれに付随するコンテンツを規定するだけなのでまあ当然ですね。

ここからCSSの魔法をかけて一気に現代的なサイト表示を作り上げていきます。


色やサイズ、位置の調整

これは簡単で、対象を指定して『プロパティ:パラメータ;』と書いていくだけで勝手に表示が変わっていきます。便利ですね。

まあこれだけだとざっくりし過ぎな気もするので簡単な例を書いておきます。これさえマスターすれば君も今日からフロントエンドエンジニアだ!()

body{color:white;/*文字色の変更*/}.huga{float:left;/*要素を左から横に並べる*/}.hoge{padding:10px30px;/*要素の内側に指定幅の余白を取る*/background-color:#FF0000;/*背景色の変更*/color:#FFFFFF;position:relative;/*位置プロパティを『相対』に指定*/top:29px;/*上側を指定幅ずらす*/left:34px;/*左側を指定幅ずらす*/}/*基本要素全てまとめようと思ったけど想像以上に面倒かったのでこれで許して
ちなみにfloatとpaddingとmarginとposition辺りを使いこなせれば位置調整に困ることはないはず
:hoverとか:actionとか使えばオサレな表示も思いのままゾイ 詳しくはググってどうぞ*/




適用範囲の指定方法は。

これも非常に簡単でHTMLのタグ内でclass="(クラス名)"を宣言してCSS側で.(クラス名)と指定すればそれでOK。一応IDに被せるやり方もあるけど、JS使いに怒られるらしいのでやめた方が無難。QiitaのCSSもclassで書いてるのでまあ指定がない限りclassで書けば良いんじゃないかなって気はする。

ちなみに.(クラス名)の後に要素名を書けば指定範囲を要素だけに限定できるぞい。あとbodyはクラスでは無いので.を付けなくても良かったりする。

body{font-family:'Arial';/*フォントの指定*/}.hogeh1{/*H1タグのみに範囲を指定*/color:red;}



このようにとってもとっても便利なCSSだけど、ただ1つ気をつけないといけない点があって実はどんなに雑に書いても動いたりする。

要素指定の重複はもちろんOKだし、書く順番もごちゃごちゃでOK、クラス名をタイポしてもエラーは吐きません。だからまあ………………CSSぐらい楽勝でしょってノリで書くと多分その先は地獄なんじゃないかなって思ったりもします。



PHPってHTMLの中に書けるのに.phpってどういう意味だってばよ?


まあ結論から言ってしまうと、HTMLとPHPを使って.htmlの設計図を記述するのが.phpです。コンテンツを表示する場合は、サーバー側が.phpを処理してクライアント側に.htmlを送信します。バックエンドですね。

文法の解説はここではしません。参考書の劣化コピーになりそうですし、何より面倒いので………………

特徴を上げるとすれば良く出来た言語だと思います。WEB系の言語としては最近RUBYに食われつつある感じはありますが、RUBYって学習コスト高くない? 

railsさえマスターすればOK!みたいな言い草で語られるけど、1つの技術に依存すれば需要が落ちた時買い叩かれるのは明白だし、いざ2つ目のスキルを考える段階でもRUBYとのマルチランゲージを考えると適切な言語が存在しない。強いて言えばPythonか???



………………話が逸れましたね。

後は何の話をしましょうか。技術的な面と言っても自分は入門書を数冊読んだだけのレベルなのであんまり深い事は言えなかったりする。まあ動的型付けや配列サイズが不定なのって便利だねと思ったり、Javaとは一味違う方法でオブジェクト指向を実装するのも中々楽しいです。

という訳で最後に一言

   みんな‼ PHPやろうぜ!



Viewing all 8779 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>