20210726のHTMLに関する記事は7件です。

【.NET】HTML入れ子を正規表現で抜き出す

Webスクレイピングなどの用途を想定しています。 <div id='1'>11<span class='2'>12</span>13<span class='3'>14</span>15</div> <div id='2'>21<span class='2'>22</span>23<span class='3'>24</span>25</div> <div id='3'>41<span class='2'>42</span>33<span class='3'>34</span>35</div> このような入れ子のHTML の中身(インナー)や、class名などを取り出したい用途があると思います。 Dim divpat As String = "<div (.*?)id='(.*?)'(.*?)>(.*?)</div>" Dim spanpat As String = "<span (.*?)class='(.*?)'(.*?)>(.*?)</span>" Dim mdiv As MatchCollection = Regex.Matches(str, divpat) Dim mspan(mdiv.Count) As MatchCollection For i = 0 To mdiv.Count - 1 mspan(i) = Regex.Matches(mdiv(i).Groups(4).Value, spanpat) '各divタグ内を順次検索対象にして抽出する Next i これを実行しますと抽出できます。正規表現を使わなかったら、非常に困難でしょう。 抽出した値を以下でコンソール表示 For i = 0 To mdiv.Count - 1 ' id属性のdiv数 Console.Write("(Div id=" + mdiv(i).Groups(2).Value + ")") For j = 0 To mspan(i).Count - 1 '各div における class属性の span数 Console.Write("class:" + mspan(i)(j).Groups(2).Value + "=" + mspan(i)(j).Groups(4).Value + " , ") Next j Console.WriteLine() Next i コンソール表示結果 (Div id=1)class:2=12 , class:3=14 , (Div id=2)class:2=22 , class:3=24 , (Div id=3)class:2=42 , class:3=34 ,
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【HTML】”各セルそれぞれ任意スクロール設定可能”な3×3行列の段組み【CSS】

↑ 昔の HP でよくみたフレーム構造ですが、これはインラインフレームではなく CSS で実現しています。 2行2列、3行3列を示します。これにより任意行列も可能かと思われます。 https://bit.ly/3i6UCKW (元記事) 2行2列 2行2列CSS /* ####################### 変数 ######################## */ :root { --header-height:5%; --mid-height:70%; /* header, mid の高さを指定すれば, footerの高さはでる. */ --mid-left-width:30%; --mid-lefttop-height:50%; --mid-righttop-height:50%; --footer-top:calc(var(--header-height) + var(--mid-height)); /* calc演算子前後には半角スペースが必要 */ --footer-height:calc(100% - var(--header-height) - var(--mid-height)); --mid-right-width:calc(100% - var(--mid-left-width)); --mid-leftbottom-height:calc(100% - var(--mid-lefttop-height)); --mid-rightbottom-height:calc(100% - var(--mid-righttop-height) ); } /* ############################################### */ body {margin: 0;} .header{position:fixed; top:0%; width:100%;} .header{height:var(--header-height);} .header{overflow:hidden;overflow-y: scroll; } .footer{position:fixed; width:100%; margin:0;} .footer{top:var(--footer-top); height:var(--footer-height);} .footer{overflow:hidden;overflow-y: scroll; } .mid {position:fixed;display: flex; width:100%; overflow:hidden;} .mid{top:var(--header-height);height:var(--mid-height);} .left{overflow: hidden;width:var(--mid-left-width);} .center{overflow: hidden;width:var(--mid-center-width);} .right{ overflow: hidden;width:var(--mid-right-width); } .left-top{ overflow-y: scroll; height:var(--mid-lefttop-height);} .left-bottom{overflow-y:scroll;height:var(--mid-leftbottom-height);} .right-top{ overflow-y: scroll; height:var(--mid-righttop-height); } .right-bottom{overflow-y:scroll;height:var(--mid-rightbottom-height);} /*::-webkit-scrollbar{display: none;}*/ /* スクロールバー非表示 */ /* ##################################### */ 2行2列HTML <body> <div class="header"></div> <div class="footer"></div> <div class="mid"> <div class="left"> <div class="left-top"></div> <div class="left-bottom"></div> </div> <div class="right"> <div class="right-top"></div> <div class="right-bottom"></div> </div> </div> </body> 3行3列 3行3列CSS /* ####################### 変数 ######################## */ :root { --header-height:10%; --mid-height:80%; /* header, mid の高さを指定すれば, footerの高さはでる. */ --mid-left-width:30%; --mid-center-width:30%; --mid-lefttop-height:20%; --mid-leftmid-height:20%; --mid-centertop-height:20%; --mid-centermid-height:20%; --mid-righttop-height:20%; --mid-rightmid-height:20%; --footer-top:calc(var(--header-height) + var(--mid-height)); /* calc演算子前後には半角スペースが必要 */ --footer-height:calc(100% - var(--header-height) - var(--mid-height)); --mid-right-width:calc(100% - var(--mid-center-width) - var(--mid-left-width)); --mid-leftbottom-height:calc(100% - var(--mid-lefttop-height) - var(--mid-leftmid-height)); --mid-centerbottom-height:calc(100% - var(--mid-centertop-height) - var(--mid-centermid-height)); --mid-rightbottom-height:calc(100% - var(--mid-centertop-height) - var(--mid-centermid-height)); } /* ############################################### */ body {margin: 0;} .header{position:fixed; top:0%; width:100%;} .header{height:var(--header-height);} .header{overflow:hidden;overflow-y: scroll; } .footer{position:fixed; width:100%; margin:0;} .footer{top:var(--footer-top); height:var(--footer-height);} .footer{overflow:hidden;overflow-y: scroll; } .mid {position:fixed;display: flex; width:100%; overflow:hidden;} .mid{top:var(--header-height);height:var(--mid-height);} .left{overflow: hidden;width:var(--mid-left-width);} .center{overflow: hidden;width:var(--mid-center-width);} .right{ overflow: hidden;width:var(--mid-right-width); } .left-top{ overflow-y: scroll; height:var(--mid-lefttop-height);} .left-mid{ overflow-y: scroll; height:var(--mid-leftmid-height);} .left-bottom{overflow-y:scroll;height:var(--mid-leftbottom-height);} .center-top{ overflow-y: scroll; height:var(--mid-centertop-height);} .center-mid{ overflow-y: scroll; height:var(--mid-centermid-height);} .center-bottom{overflow-y:scroll;height:var(--mid-centerbottom-height);} .right-top{ overflow-y: scroll; height:var(--mid-righttop-height);} .right-mid{ overflow-y: scroll; height:var(--mid-rightmid-height);} .right-bottom{overflow-y:scroll;height:var(--mid-rightbottom-height);} /*::-webkit-scrollbar{display: none;}*/ /* スクロールバー非表示 */ 3行3列HTML <body> <div class="header"></div> <div class="footer"></div> <div class="mid"> <div class="left"> <div class="left-top"></div> <div class="left-mid"></div> <div class="left-bottom"></div> </div> <div class="center"> <div class="center-top"> </div> <div class="center-mid"> </div> <div class="center-bottom"> </div> </div> <div class="right"> <div class="right-top"></div> <div class="right-mid"></div> <div class="right-bottom"></div> </div> </div> </body>
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ポートフォリオ作成の配色に困ったときに使えるアプリ

はじめに ポートフォリオ作成で配色のセンスがありません。。。 そんな時、youtubeで見つけた良いアプリがあったので紹介させていただきます。 Coolors ランダムでベストな配色を決めてもらえるアプリです。 まずはStart the generator!をクリックして始めましょう! このような色がランダムで表示されます。 気に入った配色が出るまでスペースキーで押しましょう! いいなと思った色があったら固定することもできます。 また配色を追加したり削除したりする事ができます。 自分の中で入れたい色を最初から入れる事もできますし、人気の配色など表示することができます。 参考
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[vuejs]buttonのtypeを忘れていた。[html]

はじめに 最近タスクが落ち着いてきてそれなりの頻度で書くことができています。(当社比) くるしめられた! とあるページで、取得してきた画像を削除するページがありましたとさ・・・ button.vue <template> <div v-for="(image, index) in images" :key="index"> <img :src="image.file_path" /> <button @click="onDeleteImage(image.id)"></button> </div> </template> <script> export default { data () { return { images: [], } }, methods: { async onDeleteImage(id) { if (!confirm('削除してもよろしいですか?')) { return } try { const resp = await axios.delete('/api/image/'+id) if (resp.data.result) { alert('削除しました。') this.getItems() } else { // error message } } catch (error) { console.error(error); } } } } </script> imagesは画面読み込み時(getItems)で取得されている想定です。 delete前 delete後 削除後、alertのみで遷移の命令とか出してないな・・・って思ったんだけど、、、 初歩的なミス・・・ <button type="button" ~~~ だった・・・ どうやらbuttonタグは typeがないと初期でsubmitになるらしく、 buttonにもtype="button"と指定してあげないと画面遷移?が入るみたいでした。 まとめ buttonなんだから初期でbuttonにしろと思ったのは僕だけではないはず。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Railsで架空のCafeのHPを作ってみよう!【12日目】『特定のデータの取得(active:hashの属性値)』編

概要 基本Railsの記法に則り書いていきます! 1から全ての説明ではなく その中であれ?どうやるの?と 疑問に思った点や実装に困った箇所を ピックアップして紹介していきます♩ 設定と準備 ・Rails ・HTML ・CSS ・Javascript(jQuery) ↑上記の言語とフレームワークを使い 架空(自分で考えたテキトーなもの)のCafeの HPを作っていこうと思います! 12日目の作業内容 ・ビューの作成(トップページに特定の情報を表示) 12日目の気になった箇所 特定のデータの取得でカラムごとの取得はできたが 属性まで指定できるのだろうか。 仮説 カラム別に取得する場合は (testテーブルのoptionカラムだけ取得したい場合とする) samples_controller.rb @test_option = Test.select('option') このような形で取得することができる。 (取得の仕方は複数存在します) 似たような形で属性まで指定できないか試してみる。 Testテーブルのoption_idカラムのname属性だけを 取得したい場合とする。今回はname属性の属性値2を取得したい。 (_idはactive:hashの使用時の記法です) samples_controller.rb @test_option = Test.select('option.name.2') このように記述してみたがうまくいかなかった。 結論 複数やり方があると思いますが今回は私がうまくいった方法を紹介します。 上記と同じ条件で Testテーブルのoption_idカラムのname属性だけを 取得したい場合とします。今回はname属性の属性値2を取得するとします。 samples_controller.rb @test_option = Test.where(:option_id name='2') 私の場合このような記述の仕方でうまくいきました。 簡単に説明すると 取得したいテーブル(モデル)に対してwhereメソッドを使います。 samples_controller.rb @test_option = Test.where whereメソッドは条件に一致したレコードを配列で取得してくれます。 そして、 whereに取得したい条件を入れていきます。 まずはカラム名です。 samples_controller.rb @test_option = Test.where(:option_id) この状態だとoption_idカラムの全てを取得する条件になります。 なので、さらに属性まで絞りたいので、 samples_controller.rb @test_option = Test.where(:option_id name) このように続けて記述することでその属性まで条件まで絞ることができます。 同じように続けて、 samples_controller.rb @test_option = Test.where(:option_id name='2') と、することで、属性の属性値まで条件を絞ることができました。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Railsでサイトを作成する下準備までの大まかな手順

 記事の目的  Cloud9にてECサイトを作るにあたって「何から始めればいいんだっけ?」と思いQiitaを含めて何回か参照していましたが、流れがまとまらなかったので自分用の備忘録として記載します。参考までに。  本当に大まかにまとめたので、詳細箇所については別途追記するかもしれません。 ECサイト作成前に準備すること。  個人製作の場合は必ず必要というわけではないですが、作成する前に作っておくと後々サイトを作りやすいです。 Cacooというサイトであれば両方作成できるので、おすすめです。 ・ER図 ・ワイヤーフレーム ・GitHubの連携 ・ImageMagickのインストール ファイル・モデル・コントローラーの作成 ①ファイルの作成 ※Cloud9にて諸々の初期設定が終わっていること。これに関しては個人の設定に左右される。 ターミナルを開いて、下記を入力しファイルを作成する。 (例)として、ファイル名を「Illusters」というアプリを作るものとします。 【ターミナル】 ~$ rails new ファイル名 (例)~$ rails new Illusters ※ファイル名は"頭文字:大文字" ②モデルの作成 作りたいモデルを作成する。 モデルの中にカラムとデータ型を一緒に作成すれば後々マイグレーションファイルがごちゃごちゃしないのでオススメ。 user_idといったモデルに直結するidは記載不要。 【ターミナル】 ~$ rails g model モデル名 カラム1:データ型1 カラム2:データ型2 ... (例)~$ rails g model user name:string profile_image:string introduction:text ※モデル名は"頭文字:小文字,単数形" 必要なモデルを作成した後に必ず下記の文を実行しマイグレーションすること! 【ターミナル】 ~$ rails db:migrate ↑を行わないとrailsの実行時にエラーが発生する。 モデルを削除したい場合...「モデルを間違えて作ってしまった」「後々いらなくなってしまった」など 【ターミナル】   ~$ rails d model モデル名 (例)~$ rails d model user を実行すれば削除される。 もちろん、削除した後でも~$ rails db:migrateを行って、マイグレーションファイルを更新する必要がある。 【補足】 よく使うデータ型 データ型 入力される値 使用例 integer 整数 id, 単価, 個数 など string 文字列(256文字以内) 名前, 住所, 画像, 電話番号(0から始まる) など text 文字列(制限なし) 自己紹介, キャプション など boolean true / false 男女設定, はい/いいえの質問, 表示/非表示 など float 小数点以下を含んだ数値 数量, パーセンテージ, datatime 日時 現在時刻, 登録日時 など ③コントローラの作成 ②で作成したモデルに付随するアクションコントローラーを作成する。 【ターミナル】 ~$ rails g controller コントローラ(モデルの複数形) アクション1 アクション2 ... (例)~$ rails g controller users new show edit ※コントローラ名は"頭文字:小文字,複数形" アクション名はターミナルで記載すると、下記が自動で行われるため、時短できる。 また、任意で作成したアクションも記載することはできる。 ・Cloud9内で自動で「△△-controller.html.erb」内にアクション名が追加される ・Cloud9内にフォルダが追加されその中に「△△.html.erb」が作成される コントローラを削除したい場合... モデル同様、コントローラも削除できる。 【ターミナル】   ~$ rails d controller モデル名 (例)~$ rails d controller users を実行すれば削除される。 route.rbファイルにアクション名を追加 route.rb内のファイルにコントローラを記載する。 RESTfulなアクションと任意のアクションで対応が異なるのでそれぞれ説明する。 【A. RESTfulなアクションのみ使用する場合】 【routes.rbファイル内】 resources :コントローラ名 (例) resources :users RESTfulなアクションはよく使うため、「resources :△△」の一文のみで下記7つのアクションができる。 アクション名 使用用途 メソッド new 新規作成画面 GET create 新規作成 POST index 一覧表示 GET show 詳細画面の表示 GET edit 編集画面の表示 GET update 編集 POST/PATCH destroy 削除 DELTE なお、メソッドについて端的に言うと  ・GET : 画面に表示されるもの  ・POST,PATCH : 専用の画面はなくコントローラ内のみで使用される  ・DELETE : POST,PATCH同様専用画面はない。削除するメソッド 【B. 任意のアクションを設定する場合】 RESTfulのものとは一致しないアクションを作成したいときはroutes.rbファイル内に任意のアクション名を追加する。 【routes.rbファイル内】 メソッド 'アクション名' => '保存するファイルの場所' (例)get 'download' => 'item_images#download' (例)post 'download' => 'item_images#download' ※'保存するファイルの場所'に指定がなければ "=> '~~~~'"以降は不要 以上!下準備はこれで完了です。 下準備はこれで終わりです、ここから先はコードをご自由に書いてみてください。
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Vue3でHTMLをinclude的に外部から読み込む

「静的な環境ででかいwebサイトを配給したい」という謎の状態が発生したため,ファイルを送りつけるだけのサーバーからクライアントサイドでパーツを組み立てたいという記事です. 対象とする読者はHTML聞いたことある,本格的ではないページを作って遊びたい,くらいの人です.巷の†駆け出しエンジニア†みたいな薄っぺらい記事なので高度な問題は解決しません. まとめ HTML内にVueのコンポーネントを記述し,scriptでテンプレートを記述してあるjsを読み込んで展開する. <!DOCTYPE html> <div id="src_expand"> <compornent_nanka></compornent_nannka> </div> <script src="https://unpkg.com/vue@3"></script> <script src="./src_compornent.js"></script> src_compornent.js const app_src_expand = Vue.createApp({}) app_src_expand.component('compornent_nanka', { data() { return { num: 108 str: 'kenmochi' } }, template: ` <div v-bind:class="str+num+'haishin'"> 内容 {{ str+(num-3) }} </div> ` }).mount('#src_expand') 生成されるHTMLファイル <!DOCTYPE html> <div id="src_expand"> <div class="kenmochi108haishin"> 内容 kenmochi105 </div> </div> <script src="https://unpkg.com/vue@3"></script> <script src="./src_compornent.js"></script> 何が起こっているか まず,HTMLにidを持つ要素を作る.今回はdivだがheaderでもspanでも良い.ここが展開先になる.classでも動作確認できたが,公式ドキュメントが全部idだったのでそれに従った. 次に,ファイルsrc_compornent.jsに定数app_src_expand = Vue.createApp({})としてVueのオブジェクトを宣言してつくる.変数名は何でもいい. 次に,app_src_expandからコンポーネントのコンストラクタを呼び出す.第一引数にコンポーネント名を書く. data ()関数とテンプレートを作る.data ()ではテンプレート内で使う変数などを記述できる.テンプレートではHTMLファイルに展開するHTML記述を書く.ここで要素内の属性(classやhrefなど)に変数を使う場合は<div v-bind:class"">のようにv-bind:をつける.それ以外のプレーンテキストでは{{ }}で囲んでjsの式を評価して展開できる. 次に,app_src_expand.mount('#src_expand')でコンポーネントを使いたい要素のidを文字列で渡してマウントする.これで<div id="src_expand">で第一引数で宣言した文字列のコンポーネントを使える. 最後にHTML内の<div id="src_expand">に<compornent_nanka> </compornent_nannka>を書くことで,テンプレートの評価結果の文字列が展開される. 感想 サーバーサイドが使えるなら間違いなくphpとかで処理したほうがいい.今回はのっぴきならない事情でクライアントサイドを用いて保守性を最低限意識できるようにと思ってこの形を取った.
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む