tag:crieit.net,2005:https://crieit.net/tags/HTML5/feed 「HTML5」の記事 - Crieit Crieitでタグ「HTML5」に投稿された最近の記事 2023-01-09T22:54:25+09:00 https://crieit.net/tags/HTML5/feed tag:crieit.net,2005:PublicArticle/18360 2023-01-09T22:53:17+09:00 2023-01-09T22:54:25+09:00 https://crieit.net/posts/Cocos-2022-9 Cocosを使ったゲームのご紹介 - 2022年9月まで <div class="iframe-wrapper"><iframe width="818" height="460" src="https://www.youtube.com/embed/ayrGEoxozJ0" title="Cocos Showcase - September 2022" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></div> <p>Cocosエンジンを使っている会社が作ったゲームを紹介するのは、いつも素晴らしいことですが、今回は私たち自身のゲームもリストに加えました! Steamにある私たちの無料ゲームをチェックしてみてください......と言いたいところですが、これについては後述します。</p> <p>ショーケースには、中国でかなり話題になっているゲームやトップ10に入るような大作がたくさん並んでいます。多種多様なものを見て、私たちがデベロッパーと共有できるものは、私たちと一緒に作ることに興奮するような素晴らしいものでした。このリストを楽しんでいただければ幸いです。そして、今年12月に開催される最終ショーケースに向け、準備を整えています。</p> <p><strong>Paper Wedding Dress 4 - Red Silk Wrap</strong><br /> 中国では規制の関係でホラーゲームはあまり見かけませんが、当たる時は超当たりますね。このゲームは、半年ごとに発売されているマルチシリーズの一つで、中国では非常に好調です。『ペーパーウェディングドレス4』は発売初日に1位を獲得し、ゲーマーはすでに第5弾の準備に取り掛かっています。このゲームについては、翌週のブログで少し紹介しました。</p> <p><strong>isles</strong><br /> 多くの開発者は「ゲームエンジンの能力を試すために自分で作ったゲームがあってこそ、ゲームエンジンの開発者としての資質がある」と言っています。そして、それがislesという、ジャンプしたり、浮いたり、集めたりして全レベルをクリアするプラットフォーマーゲームを作るための作業の始まりです。また、このゲームのソースコードを当社のストアで販売していますので、そこから学びたい方はご利用ください。ゲームについての詳細は、ブログ記事からご覧ください。</p> <p><strong>Hero Village</strong><br /> この3Dボクセルシム経営ゲームは、中国での競争や規制によって開発者が国外に出ざるを得なくなり、多くの中国製ゲームが出始めている中の1つです。RPGの要素だけでなく、タワーディフェンスやフュージョンも加わって楽しいゲームです。<a target="_blank" rel="nofollow noopener" href="https://discuss.cocos2d-x.org/t/lessons-from-hero-village-developer-on-graphic-optimizing/56926">開発者がフォーラムでこのゲームについて少し話してくれました。</a></p> <p><strong>Archer Castle</strong><br /> 今年の Discord で共有されたゲームの 1 つです。このHTML5ゲームは、ブラウザとスマホでたくさんのゲームプレイを楽しめます。これは、多くのクレイジーなモンスターとアップグレードを備えたシンプルなタワー ディフェンスです。午後のリラックスタイムに最適なゲームです。現在、poki.comでプレイ可能です。</p> <p><strong>Call Me Mister Big Boss</strong><br /> 過去に取り上げた他の多くのゲームと同様に、この都市管理ゲームは古代中国の時代にさかのぼり、都市でできることを拡張します。 中国のユーモアがたくさん詰まった楽しいストーリーゲームです。 私たちはフォーラムでそれについて少し共有しました。</p> <p><strong>Pause! Let Me Check The Guide</strong><br /> 新作アニメ『Pause! Let Me Check The Guide 』が中国の動画サイト「Bilibili」で超人気となっています。このゲームの面白いところは、アニメのファーストシーズンの最後にキャラクターの一人を視聴者が操作できるようになっているところです。これはサイトのビデオ画面から直接プレイできる最初のゲームの一つで、HTML5ゲームを使って番組を拡張するという点で、かなり画期的なことだと思います。</p> <p><strong>Jaws & Claws</strong><br /> このゲームは、開発者がゲームのリリースを間近に控えているため、当フォーラムを通じてお届けすることになりました。このプラットフォームファイターゲームでは、ゴリラ、ワニ、サイ、クマなど、クレイジーなキャラクターと一緒に戦うことができます ストーリーモード、フリープレイ、サッカーなど、楽しいゲームモードが搭載されています。</p> <p><strong>Panda Pizza Parlor</strong><br /> Bitcakeは、今年の初めにGamesnacksに登場したゲームで紹介されました。彼らはその経験を生かし、今ではピザ屋のオーナーとして、ピザやスナックをお客さんに提供するという素晴らしい3Dタイムマネージメントゲームを作り上げました。モバイルとPCの両方で楽しめる楽しいゲームです。</p> <p><strong>Reincarnated As A Monster</strong><br /> モンスターとしての自分を作るだけでなく、勧誘、アップグレード、隠し装備の発見などが可能なカジュアルなアイドルゲーム。このゲームの大きな特徴は、戦いに挑み、親の力を融合させ子孫を作ることができる点です。 非常に小さなチームで作られたこのゲーム、中国のアプリストア「TapTap」で9.0を超える大ヒットを記録しています。<a target="_blank" rel="nofollow noopener" href="https://discuss.cocos2d-x.org/t/ways-to-improve-ui-and-loading-from-a-430k-downloaded-app-developer/56929">フォーラムへの投稿で、彼らのUIに関する技術について話をしました。</a></p> <p><strong>Coward Toraghi</strong><br /> 冒険的なパズルゲームではありませんが、かわいらしさと巧妙なパズルは、物語の半分に過ぎません。また、このゲームは、新婚の二人の開発者が共同で開発したゲームであることも、多くの人が知っています。最近のブログで紹介されたので、どんなゲームなのか見てみてください。</p> <p><strong>Ghost Fight IO</strong><br /> このIOゲームは、ペレットを食べながら走り回り、より強いゴーストを撃退するゲームです。このゲームの素晴らしいところは、GoogleのDeveloper Summitで披露したCocos Creator 3.xのインフラで動いているところです。私たちは、webaudioだけでなく、将来のアップグレードも含めて、HTML5を改善するために努力しています。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.cocos.com/en/post/6b913a2317d00f7bfa0abdaff1a1f67f">引用元</a></p> CocosJapan tag:crieit.net,2005:PublicArticle/16037 2020-08-24T18:47:06+09:00 2020-08-24T19:08:15+09:00 https://crieit.net/posts/JavaScript-postMessage-DOM-Xpath JavaScriptのpostMessageでDOMツリーのノード参照を渡す方法[Xpath] <p>ポップアップしたウィンドウに要素の参照(DOMノード)を送りたかったので、この記事を書いた。</p> <h1 id="Web MessagingはDOMノードを送れない"><a href="#Web+Messaging%E3%81%AFDOM%E3%83%8E%E3%83%BC%E3%83%89%E3%82%92%E9%80%81%E3%82%8C%E3%81%AA%E3%81%84">Web MessagingはDOMノードを送れない</a></h1> <p>JavaScriptでは、<a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Web/API/Window/postMessage">window.postMessage</a>を使うことで、ポップアップやiframeなどの別ウィンドウとWeb Messaging(HTML5)を介して通信することができる。</p> <p>子ウィンドウ、親ウィンドウへの参照はそれぞれ<code>window.open()</code>と<code>window.opener</code>で持つことができるから、<code>window.postMessage</code>と併せてあらゆるデータのやり取りが自由にできそうなものである。</p> <p>しかし、<code>window.postMessage</code>では送ることができないデータがある。</p> <p>MDN web docsには、<code>message</code>について</p> <blockquote> <p>他のウィンドウに送られるデータ。データは <a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">the structured clone algorithm</a> に従ってシリアル化されます。つまり、手動でシリアル化することなく様々なデータオブジェクトを渡すことができます。<br /> <a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Web/API/Window/postMessage">(window.postMessage - Web API | MDN</a>)</p> </blockquote> <p>と書かれている。</p> <p>この「<a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">the structured clone algorithm</a>」(日本語「<a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">構造化複製アルゴリズム</a>」)という部分が重要で、この中で「<a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#%E6%A7%8B%E9%80%A0%E5%8C%96%E8%A4%87%E8%A3%BD%E3%81%A7%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%AA%E3%81%84%E3%82%82%E3%81%AE">構造化複製で動作しないもの</a>」というのが示されいる。</p> <blockquote> <ul> <li>Function オブジェクトは構造化複製アルゴリズムでは複製されません。複製しようとすると DATA_CLONE_ERR 例外が送出されます。</li> <li>DOM ノードを複製しようとしても同様に DATA_CLONE_ERR 例外が送出されます。</li> </ul> </blockquote> <p>つまり、例えば<code>document.querySelector()</code>などを使えば要素の参照を取得できるが、このような参照はWeb Messagingで送ることができない。<br /> 実際に<code>window.postMessage</code>でDOMノードを送ろうとすると、</p> <blockquote> <p>Uncaught DOMException: Failed to execute 'postMessage' on 'Window': HTMLButtonElement object could not be cloned.</p> </blockquote> <p>のようなエラーが発生する。</p> <p>ウィンドウ間で互いのDOMの参照はできるのだから、DOMノードも送れるべきである。<br /> そこで、住所のように、テキストでDOMツリーにおけるノードの位置を表現できる方法を探していると、「Xpath」という言語構文を見つけた。</p> <h1 id="Xpathとは"><a href="#Xpath%E3%81%A8%E3%81%AF">Xpathとは</a></h1> <p>Xpathとは、XMLやHTMLのようなツリー状の階層構造を持つ文書で、様々なノードの位置や情報を表すことができる記法のことである。URLのようなパス表記ができることが特徴。</p> <p><a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Introduction_to_using_XPath_in_JavaScript">Introduction to using XPath in JavaScript | MDN</a></p> <p>記法については<a target="_blank" rel="nofollow noopener" href="https://qiita.com/rllllho/items/cb1187cec0fb17fc650a">こちらの記事</a>が詳しいが、ざっくり言うと、例えばbody直下の<code><h1></code>にアクセスするためのXpathは</p> <pre><code>/html/body/h1 </code></pre> <p>となる。</p> <p>また、2番目の<code><div></code>の3番目の<code><span></code>にアクセスするためのXpathは</p> <pre><code>/html/body/div[2]/span[3] </code></pre> <p>といったように表すことができる。</p> <h1 id="要素のXpathを取得して送信する"><a href="#%E8%A6%81%E7%B4%A0%E3%81%AEXpath%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B">要素のXpathを取得して送信する</a></h1> <p>まず、送るためにはDOMノードのXpathを取得する必要がある。<br /> 以下の記事のコードを使用して送信側のスクリプトを書いた。</p> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/narikei/items/fb62b543ca386fcee211">ブラウザ上のクリックした要素のXpathを取得する - Qiita</a></p> <p><strong>parent.htmlのjs</strong></p> <pre><code class="JavaScript"><br />let childWindow = window.open('child.html', 'child', 'width=300,height=400,scrollbars'); // クリックされたらその要素のXpathを子ウィンドウにpostMessageする window.addEventListener('click', (e) => { childWindow.postMessage(getXpath(e.target), 'http://localhost'); }); /* https://qiita.com/narikei/items/fb62b543ca386fcee211 */ function getXpath(element) { if(element && element.parentNode) { var xpath = getXpath(element.parentNode) + '/' + element.tagName; var s = []; for(var i = 0; i < element.parentNode.childNodes.length; i++) { var e = element.parentNode.childNodes[i]; if(e.tagName == element.tagName) { s.push(e); } } if(1 < s.length) { for(var i = 0; i < s.length; i++) { if(s[i] === element) { xpath += '[' + (i+1) + ']'; break; } } } return xpath.toLowerCase(); } else { return ''; } } </code></pre> <h1 id="要素のXpathを受け取って参照する"><a href="#%E8%A6%81%E7%B4%A0%E3%81%AEXpath%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%81%A3%E3%81%A6%E5%8F%82%E7%85%A7%E3%81%99%E3%82%8B">要素のXpathを受け取って参照する</a></h1> <p>受信側は以下のようになる。</p> <p><strong>child.htmlのjs</strong></p> <pre><code class="JavaScript">let parent = window.opener.document; function receiveMessage(e) { if (e.origin !== "http://localhost") {return} parent.evaluate(e.data, parent, null, XPathResult.FIRST_ORDERED_NODE_TYPE).singleNodeValue.innerHTML = 'ok!'; } window.addEventListener("message", receiveMessage); </code></pre> <p><a target="_blank" rel="nofollow noopener" href="https://developer.mozilla.org/ja/docs/Introduction_to_using_XPath_in_JavaScript">Introduction to using XPath in JavaScript | MDN</a></p> <p>成功すると、親ウィンドウでクリックした要素に「ok!」と表示されるはず。<br /> これで、親ウィンドウから子ウィンドウに送られたXpathを使って、子ウィンドウが親ウィンドウのDOMを参照し、当該要素にアクセスすることが可能になった。もちろんその逆も可能である。</p> ウラル tag:crieit.net,2005:PublicArticle/15536 2019-11-10T10:05:13+09:00 2019-11-10T10:05:13+09:00 https://crieit.net/posts/img imgタグで画像が読み取れなかったときになにも表示しないようにしたい <p><code><img></code>タグを使って画像を表示したときに、読み込めないとこんな感じになる。</p> <pre><code class="html"><img src="https://example.com/noimage.png" alt="プロフィール" /> </code></pre> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/4febffe9-ff83-0f72-9a60-c1e159f1a078.png" alt="スクリーンショット 2019-11-10 9.20.29.png" /></p> <p>読み込めない場合に、こんな感じで、なにも表示しないようにしたかったときの備忘録。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/6b308bea-be92-c356-a8f2-14ffb4f03988.png" alt="スクリーンショット 2019-11-10 9.25.20.png" /></p> <h3 id="やり方はこんな感じ。"><a href="#%E3%82%84%E3%82%8A%E6%96%B9%E3%81%AF%E3%81%93%E3%82%93%E3%81%AA%E6%84%9F%E3%81%98%E3%80%82">やり方はこんな感じ。</a></h3> <pre><code class="html"><img src="https://example.com/noimage.png" alt /> </code></pre> <p>ポイントは以下の2点</p> <ol> <li><code>alt</code>を空文字で設定</li> <li><code>onerror</code>で<strong>srcを空にして</strong>、<strong>onerrorをnullにする</strong></li> </ol> <h5>1. 「<code>alt</code>を空文字で設定」について</h5> <p>画像が表示されなかった場合に、代わりにalt属性のテキストが表示してくれる<br /> このalt属性がなかった場合、読み取り不可の画像が表示されてしまう。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/6022bae1-1d80-bd08-a97a-9fd659e34787.png" alt="スクリーンショット 2019-11-10 9.33.44.png" /></p> <p>なので、alt属性に空文字を指定しておくことで、<br /> 「<strong>画像が表示されなかった場合に、代わりに空文字を表示する</strong>」ようにしている。</p> <h5>2. 「<code>onerror</code>で<strong>srcを空にして</strong>」について</h5> <p><code>onerror</code>属性を設定しておくと、画像の読み取りに失敗した場合に、<br /> 何らかの処理をすることができる。</p> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/yuji38kwmt/items/ff3e6faf19760366a787#%E8%80%83%E5%AF%9F">この記事</a>によると、srcとaltがともに空文字だと、読み取り不可の画像が表示されないよう。</p> <blockquote> <p>Firefox, Chrome, IEで、バツ印を非表示にするには、以下のいずれかの状態にする必要があります。<br /> ・src属性が空文字 AND alt属性があり/空文字<br /> ・src属性がなし</p> </blockquote> <p>なので、onerrorを使って、画像が読み取れなかったときに<code>src</code>を空にしている。</p> <h5>3. 「<strong>onerrorをnullにする</strong>」について</h5> <p>また、srcを空文字にすると依然として、画像が読み取れない状態が続くため、<br /> <code>onerror</code>が繰り返し呼び出されるため、<code>onerror</code>が無限に呼ばれ続けることになる。</p> <p>そのため、srcを空にするのとあわせ、<code>onerror</code>を初期化して呼ばれないようにしている。</p> <h1 id="おわりに"><a href="#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB">おわりに</a></h1> <p>とりあえず、目的は達成できたので、良い感じ。</p> <p>ただ、</p> <ul> <li>srcが空なのでエラーのまま</li> <li>altが空文字</li> </ul> <p>など、よくなさそうなところがあるので、</p> <ul> <li>エラー画像に差し替えたり、</li> <li>JavaScriptで<code><img></code>自体を表示しないようにする</li> </ul> <p>などのほうがお行儀の良いHTMLになりそう。</p> <h2 id="こんなのつくってます!!"><a href="#%E3%81%93%E3%82%93%E3%81%AA%E3%81%AE%E3%81%A4%E3%81%8F%E3%81%A3%E3%81%A6%E3%81%BE%E3%81%99%21%21">こんなのつくってます!!</a></h2> <p>積読用の読書管理アプリ 『積読ハウマッチ』をリリースしました!<br /> <a target="_blank" rel="nofollow noopener" href="https://tsundoku.site">積読ハウマッチ</a>は、Nuxt.js+Firebaseで開発してます!</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/478782/572d4947-f40b-e4dc-1c9c-bc584cd2a66c.png" width="200"/></p> <p>もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ</p> <p>要望・感想・アドバイスなどあれば、<br /> 公式アカウント(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/MemoryLoverz">@MemoryLoverz</a>)や開発者(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/kira_puka">@kira_puka</a>)まで♪</p> <h1 id="参考にしたサイト"><a href="#%E5%8F%82%E8%80%83%E3%81%AB%E3%81%97%E3%81%9F%E3%82%B5%E3%82%A4%E3%83%88">参考にしたサイト</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/yamaguchi_takashi/items/7019e2e8074bf094333c">imgタグでエラー時の画像をonerror属性で設定する方法 - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://qiita.com/yuji38kwmt/items/ff3e6faf19760366a787">img要素の「画像がないことを表すマーク」の表示/非表示 - Qiita</a></li> <li><a target="_blank" rel="nofollow noopener" href="https://teratail.com/questions/15682">JavaScript - HTMLの画像読み込み時にonerrorを使用した際の無限ループを回避したい。|teratail</a></li> </ul> きらぷか@積読ハウマッチ/SSSAPIなど tag:crieit.net,2005:PublicArticle/15327 2019-08-16T15:05:02+09:00 2019-08-16T15:06:16+09:00 https://crieit.net/posts/CSS-Property-Value-Selector-50 俺的CSS便利Property・Value・Selector 50連発! <p>最近すごくHTMLやCSSを書いている気がするので、ここらでCSSのよく使うプロパティや知っていると便利なプロパティをまとめてみることにしました。早速行ってみましょう!</p> <h1 id="よく使うもの"><a href="#%E3%82%88%E3%81%8F%E4%BD%BF%E3%81%86%E3%82%82%E3%81%AE">よく使うもの</a></h1> <h2 id="1. ::before, ::after"><a href="#1.+%3A%3Abefore%2C+%3A%3Aafter">1. ::before, ::after</a></h2> <p>これを指定した要素の子要素として挿入される疑似要素。子要素を持てない要素(img, inputなど)には指定不可能。<code>content</code>プロパティを指定しない限り挿入されない。なにも入れるcontentがない場合は<code>content: ""</code>を指定する。</p> <h2 id="2. min-height, min-width"><a href="#2.+min-height%2C+min-width">2. min-height, min-width</a></h2> <p>高さや幅の最小値を指定する。mainコンテナのように、必ずある大きさ以上の大きさが必要な要素に指定すると、コンテンツの大きさにかかわらず設定した大きさより小さくならない。</p> <h2 id="3. max-height, max-width"><a href="#3.+max-height%2C+max-width">3. max-height, max-width</a></h2> <p>上の<code>min-</code>系とは逆に、高さや幅の最大値を設定する。指定すると、コンテンツの大きさにかかわらず、設定した大きさより大きくならない。</p> <h2 id="4. order"><a href="#4.+order">4. order</a></h2> <p>HTMLの要素の兄弟順をオーバーライドする。これを指定すると、強制的に兄弟要素の中でその順番になるように表示される。<code>nth-</code>系には影響しない。</p> <h2 id="5. visibility"><a href="#5.+visibility">5. visibility</a></h2> <p><code>display: none</code>と違って、表示したくないけれど領域は確保したいという場合に使える。</p> <h2 id="6. z-index"><a href="#6.+z-index">6. z-index</a></h2> <p>要素の描画順を設定するプロパティ。<code>position: fixed;</code>と使うことが多い。</p> <h2 id="7. clip-path"><a href="#7.+clip-path">7. clip-path</a></h2> <p>要素の見かけの外形を設定するプロパティ。うまく使えばCSSだけでいろんな表現が可能に。</p> <h2 id="8. will-change"><a href="#8.+will-change">8. will-change</a></h2> <p>要素のCSSプロパティがアニメーションで変化することをあらかじめブラウザに知らせる。パフォーマンス爆上がり。</p> <h2 id="9. transform"><a href="#9.+transform">9. transform</a></h2> <p>要素を移動、回転、拡縮、変形させるプロパティ。ちょっと場所がずれるときとか、アニメーションで動かしたいときに便利。</p> <h2 id="10. :root"><a href="#10.+%3Aroot">10. :root</a></h2> <p>root疑似クラス。document.documentElementを指し示すセレクタ。カスタムプロパティと組み合わせると応用範囲は無限大。メディアクエリと組み合わせるとモバイルビュー判定にも使える。</p> <pre><code class="css">@media screen and (max-width: 960px) { :root { --is-mobile: yes; } } @media screen and (min-width: 961px) { :root { --is-mobile: no; } } </code></pre> <h2 id="11. transform-origin"><a href="#11.+transform-origin">11. transform-origin</a></h2> <p>transformプロパティの基準になる点を指定するプロパティ。ローディング画面のスピナなどを作るときなど、意外と使える場面が多い。</p> <h2 id="12. position: relative"><a href="#12.+position%3A+relative">12. position: relative</a></h2> <p><code>position: absolute</code>が親要素を基準とした位置取りにならない!?って思ったときは大概こいつの設定忘れが原因。これが設定された要素の子要素に<code>position: absolute</code>が指定された場合、これが設定された要素を基準とした位置取りになる。</p> <h2 id="13. appearance: none"><a href="#13.+appearance%3A+none">13. appearance: none</a></h2> <p>デフォルトの見た目をなくすプロパティ。input要素に独自のスタイルを当てたいときなど、これを設定するとうまくいくことが多い。</p> <h2 id="14. box-shadow"><a href="#14.+box-shadow">14. box-shadow</a></h2> <p>要素が落とす影を設定するプロパティ。背景が設定されていない要素につけると違和感マシマシ。そういうインラインなテキスト要素に影をつけたい場合は、<code>text-shadow</code>プロパティを使うこと。</p> <h2 id="15. background-clip"><a href="#15.+background-clip">15. background-clip</a></h2> <p>きれいなタイトル文字の修飾をしたいときに。ヘッディング要素の<code>background-image</code>プロパティに適当な画像を設定して、このプロパティの値を<code>text</code>にすると、背景が文字の形で切り抜かれる。</p> <h2 id="16. background-attachment: fixed"><a href="#16.+background-attachment%3A+fixed">16. background-attachment: fixed</a></h2> <p>要素内のコンテンツが動いても、背景を動かしたくない場合に使う。サイトの背景に設定するといい感じになるかも。</p> <h2 id="17. border-radius"><a href="#17.+border-radius">17. border-radius</a></h2> <p>要素を角丸にできる。もはや説明不要。</p> <h2 id="18. :not"><a href="#18.+%3Anot">18. :not</a></h2> <p>セレクタにマッチしない要素にマッチする。例えば、<code>:not(.not-select)</code>というセレクタは、not-selectクラスを持たない要素にマッチする。</p> <h2 id="19. :first-child, :last-child, :nth-child, :nth-last-child"><a href="#19.+%3Afirst-child%2C+%3Alast-child%2C+%3Anth-child%2C+%3Anth-last-child">19. :first-child, :last-child, :nth-child, :nth-last-child</a></h2> <p>指定された順番にある兄弟要素にマッチする疑似クラス。</p> <h2 id="20. :first-of-type, :last-of-type, :nth-of-type, nth-last-of-type"><a href="#20.+%3Afirst-of-type%2C+%3Alast-of-type%2C+%3Anth-of-type%2C+nth-last-of-type">20. :first-of-type, :last-of-type, :nth-of-type, nth-last-of-type</a></h2> <p>指定された順番にある同じタグ(spanどうし、divどうしなど)の兄弟要素にマッチする疑似クラス。</p> <h2 id="21. :required"><a href="#21.+%3Arequired">21. :required</a></h2> <p>required属性のあるformパーツにマッチする。</p> <h2 id="22. :invalid"><a href="#22.+%3Ainvalid">22. :invalid</a></h2> <p>入力された値が要求された形式に従っていないformパーツにマッチする。</p> <h2 id="23. outline"><a href="#23.+outline">23. outline</a></h2> <p>borderの外側に描画されるborderみたいなやつ。borderと違って、それ専用に場所が確保されない。</p> <h2 id="24. attr()"><a href="#24.+attr%28%29">24. attr()</a></h2> <p>print画面でだけ<code>::after</code>疑似要素にurlを表示したいときなど、CSSのプロパティに特定のHTML属性を設定したいときに使用する。</p> <h2 id="25. user-select"><a href="#25.+user-select">25. user-select</a></h2> <p>ユーザーが要素を選択可能かどうかを設定する。spanにclickイベントを設定したときなど、選択されるのが鬱陶しかったり、要素を選択してほしくないときに使う。</p> <h2 id="26. pointer-events"><a href="#26.+pointer-events">26. pointer-events</a></h2> <p>要素のどこがマウスイベントをキャプチャするか指定するプロパティ。オーバーレイなど、ほかの要素より前に出るがマウスイベントをキャプチャしたくない要素には<code>none</code>を設定すると吉。</p> <h2 id="27. cursor"><a href="#27.+cursor">27. cursor</a></h2> <p>要素の上に乗ったカーソルの表示の種類を設定する。ユーザビリティが上がるらしい。</p> <h2 id="28. :checked"><a href="#28.+%3Achecked">28. :checked</a></h2> <p>チェックが入っているチェックボックスにマッチする。うまく活用するとHTML/CSSだけで開閉するメニューなどの2つの状態を持つUIが記述できる。</p> <h2 id="29. display: flex"><a href="#29.+display%3A+flex">29. display: flex</a></h2> <p>要素をflexboxにする。子要素の数によって、自動でいい感じに配置を決めてくれる。すごく便利。ついつい多用しがち。</p> <h2 id="30. justify-content"><a href="#30.+justify-content">30. justify-content</a></h2> <p>要素の配置を決めるプロパティ。上の<code>display: flex</code>と組み合わせて使うことが多い。</p> <h2 id="31. flex-flow"><a href="#31.+flex-flow">31. flex-flow</a></h2> <p>flexboxで、要素を配置する向きを決める。</p> <h2 id="32. flex"><a href="#32.+flex">32. flex</a></h2> <p>flexboxの子要素に指定するプロパティ。flex-grow、flex-shrink、flex-basisの3つを一気に指定できる。flex-growは要素がコンテナより小さいときにどれくらい大きくするか、flex-shrinkは逆に要素がコンテナより大きいときにどれくらい小さくするか、flex-basisは要素がコンテナの中でどれくらいの初期サイズを持っているのかを指定する。</p> <h1 id="そこまで使うわけでもないけど知っていたら便利なもの"><a href="#%E3%81%9D%E3%81%93%E3%81%BE%E3%81%A7%E4%BD%BF%E3%81%86%E3%82%8F%E3%81%91%E3%81%A7%E3%82%82%E3%81%AA%E3%81%84%E3%81%91%E3%81%A9%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F%E3%82%89%E4%BE%BF%E5%88%A9%E3%81%AA%E3%82%82%E3%81%AE">そこまで使うわけでもないけど知っていたら便利なもの</a></h1> <h2 id="33. position: sticky"><a href="#33.+position%3A+sticky">33. position: sticky</a></h2> <p>これを設定された要素が親要素の中でrelative + fixedのような振る舞いをするようになる。Qiitaのいいねボタンやストックボタンのスマホ版みたいな振る舞いがこれ(とtop, bottom, right, leftプロパティのどれか1つ以上)だけで記述可能。</p> <h2 id="34. text-indent"><a href="#34.+text-indent">34. text-indent</a></h2> <p>行頭字下げをするプロパティ。パラグラフの先頭で字下げしたいときに有効。</p> <h2 id="35. ::first-letter"><a href="#35.+%3A%3Afirst-letter">35. ::first-letter</a></h2> <p>ある要素の中で、最初の文字にマッチする疑似要素。パラグラフの最初の文字だけ大きくするような表現に使える。</p> <h2 id="36. ::select"><a href="#36.+%3A%3Aselect">36. ::select</a></h2> <p>ある要素の中で、現在選択されているものにマッチする疑似要素。選択部分の強調などに使える。</p> <h2 id="37. ::target"><a href="#37.+%3A%3Atarget">37. ::target</a></h2> <p>urlのターゲットになっている要素にマッチする。ページ内リンクで飛んだ先の要素を強調するのに使える。</p> <h2 id="38. perspective"><a href="#38.+perspective">38. perspective</a></h2> <p>transformと組み合わせて使う。遠近法をどの程度かけるか指定するプロパティ。</p> <h2 id="39. transform-style: preserve-3d"><a href="#39.+transform-style%3A+preserve-3d">39. transform-style: preserve-3d</a></h2> <p>これを三次元の移動回転変形を指定したtransformプロパティを持つ要素の親に指定することで、3次元的な描写を可能にすることができる。</p> <h2 id="40. filter"><a href="#40.+filter">40. filter</a></h2> <p>要素に指定したSVGフィルタをかける。<code>::before</code>に指定して背景をぼかしたり、グレイスケール化したり、いろいろな視覚効果を追加することができる。</p> <h2 id="41. ::marker"><a href="#41.+%3A%3Amarker">41. ::marker</a></h2> <p>::marker<br /> リストのマーカーにマッチする疑似要素。</p> <ul> <li>←これがリストのマーカー。</li> </ul> <h2 id="42. ::placeholder"><a href="#42.+%3A%3Aplaceholder">42. ::placeholder</a></h2> <p>formパーツ要素のplaceholderにマッチする。placeholderの色やフォントなどを変えたいときに便利。</p> <h2 id="43. :defined"><a href="#43.+%3Adefined">43. :defined</a></h2> <p>任意のCustomElementにマッチする。</p> <h2 id="44. quotes"><a href="#44.+quotes">44. quotes</a></h2> <p><code><q>~</q></code>のタグを使ったときに表示される引用符を制御できる。それ以外のタグの場合も、以下のようにして利用できる。</p> <pre><code class="css">blockquote { quotes: "「" "」"; } blockquote::before { content: open-quote; } blockquote::after { content: close-quote; } </code></pre> <p>より正確な動作の説明としては「<code>open-quote</code>と<code>close-quote</code>の値を制御する」ということになる。</p> <h2 id="45. text-overflow"><a href="#45.+text-overflow">45. text-overflow</a></h2> <p>文字がコンテナのサイズを超過したときの処理を設定する。<code>...</code>のような記号で省略したり、それ以外の文字で省略したり、あるいはそれ以上を表示しなかったりするような表現が可能。</p> <h2 id="46. writing-mode"><a href="#46.+writing-mode">46. writing-mode</a></h2> <p>文字を縦書きにするか横書きにするか設定できる。サイトの種類によっては多用することもあるかも。</p> <h2 id="47. text-orientation"><a href="#47.+text-orientation">47. text-orientation</a></h2> <p><code>writing-mode</code>を<code>vertical-rl</code>または<code>vertical-lr</code>にしたときに、文字をどの向きで配置するか設定する。</p> <h2 id="48. clear"><a href="#48.+clear">48. clear</a></h2> <p>浮動要素のまわりの固定要素の配置(回り込み)を指定する。浮動要素しか含まないような要素の高さを維持するために使うこともできる。</p> <pre><code class="css">.float-only::after { content: ""; display: block; clear: both; } </code></pre> <h2 id="49. all"><a href="#49.+all">49. all</a></h2> <p>すべてのプロパティを一気に設定できる。親要素からすべてのスタイルを継承したいときや、逆に継承したくないとき、デフォルトの見た目にしたいときに使える。</p> <h2 id="50. touch-action"><a href="#50.+touch-action">50. touch-action</a></h2> <p>要素に対して可能なタッチアクションの種類を制限できる。たとえば、ズームしてほしくないとか、縦方向のスクロールを制限したいとかそういう場合に便利。Cookie Clickerのタッチ領域にこれを指定してほしいと何度思ったことか。</p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>CSS難しい……。MDNの解説ってプロパティごとに内容の質にけっこうばらつきが大きいんですね。</p> <h1 id="参考"><a href="#%E5%8F%82%E8%80%83">参考</a></h1> <ul> <li>https://developer.mozilla.org/en-US/docs/Web/CSS</li> <li>https://www.w3schools.com/cssref/</li> </ul> <p>Happy Hacking!</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.tech-frodo.xyz/2019/08/useful-css.html">この記事はブログにも投稿しています。</a></p> frodo821 tag:crieit.net,2005:PublicArticle/14487 2018-07-23T07:24:21+09:00 2018-08-16T09:16:58+09:00 https://crieit.net/posts/HTML HTMLとは? <p>HTMLとは何かというのを分かりやすくいうと、Webサイトのページに何を表示するかを指定するための指示がまとめられたテキストです。実際にWindowsであればメモ帳などでも作れます。</p> <p>とはいえ何も知らない初心者からするとそれでもよくわからないと思いますので、具体的な例を少しあげてみます。</p> <h2 id="単なるテキストを表示する"><a href="#%E5%8D%98%E3%81%AA%E3%82%8B%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B">単なるテキストを表示する</a></h2> <p>例えば単に</p> <pre><code class="html">HTML </code></pre> <p>というテキストを書くと、Webサイトのページにも単に</p> <p>HTML</p> <p>と表示されます。</p> <h2 id="テキストを太字にする"><a href="#%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%92%E5%A4%AA%E5%AD%97%E3%81%AB%E3%81%99%E3%82%8B">テキストを太字にする</a></h2> <p>次に</p> <pre><code class="html"><b>HTML</b> </code></pre> <p>と書くと、下記のように太字で表示されます。</p> <p><strong>HTML</strong></p> <h2 id="画像を表示する"><a href="#%E7%94%BB%E5%83%8F%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B">画像を表示する</a></h2> <p>文字だけでなく、画像を表示したい場合は</p> <pre><code class="html"><img src="https://crieit.net/img/card.png"> </code></pre> <p>のように書くと、下記のように画像が表示されます。</p> <p><img src="https://crieit.net/img/card.png" alt="" /></p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>このように、ページに表示したいものをルールに沿ってまとめて書いたものがHTMLです。他にもリンクやボタンなど、普段あなたがWebサイトを閲覧する際に見たことのあるすべてのものをHTMLによって表示することができます。</p> <p>たとえばGoogle Chromeでサイトを見ている場合、<code>右クリックメニュー→ページのソースを表示</code>でそのページのHTMLを見ることができます。</p> <p>上記であげた例以外にも、かなり多くの機能があります。ただ、普段良く使うHTMLタグはそれほど多いわけではないので、やりたいことを調べつつHTMLを書いていくようにすれば徐々にしっかりしたサイトを作れるようになっていくと思います。</p> <p>ここではHTMLの概念のみの紹介ととどめさせていただきますが、1ページまるまるのHTMLの書き方などは「HTML5 書き方」でヒットする下記などが参考になります。<br /> <a target="_blank" rel="nofollow noopener" href="https://coliss.com/articles/build-websites/operation/work/generic-html5-template-by-sixrevisions.html">HTML5でWebページを作成する時用の必要最小限をまとめたシンプルなテンプレート(IE8以下も配慮) | コリス</a></p> <p>また、書いたHTMLをサーバーにアップしてWeb上で公開するためには、レンタルサーバーであればFTPやSFTP, SCPでアップロード、その他GitHub、HerokuなどのWebサービス用プラットホームであればGitを使って公開、Firebaseであればコマンドで公開、など、色々な方法がありますので気になったものを調べてみてください。</p> だら@Crieit開発者