![見出し画像](https://assets.st-note.com/production/uploads/images/166845968/rectangle_large_type_2_2308e246a33081dd8c68bcd416743836.png?width=1200)
よく使うCSSセレクタ一覧
目次
セレクタとは?
cssを書くときに「どこに」「何を」「どうする」を書きますが
どこに ・・・セレクタ
何を ・・・プロパティ
どうする・・・値
セレクタとは「どこに」効果を付けるのかの部分です。
![](https://assets.st-note.com/img/1738998628-MRX64nU1fVmrjucYqC5idNPe.png?width=1200)
良く使うセレクタ
p { タグ名で指定 }
.className { classで指定 }
cssを書く時、前に「 . 」を付ける#idName { idで指定 }
cssを書く時に前に「 # 」を付けるclass, div, p { 複数要素に同じ指定 }
「 , 」で区切る
子孫要素
![](https://assets.st-note.com/img/1739175152-GIERc3B4jpu6ODe01o8LwXYk.png?width=1200)
直下の子要素
![](https://assets.st-note.com/img/1739499291-Gzqfw4QR6KXEdoDt1eVBLCuy.png?width=1200)
兄弟要素
![](https://assets.st-note.com/img/1739499400-gokD3h82LFOeYZwtsAN6JlTb.png?width=1200)
隣の要素
![](https://assets.st-note.com/img/1739499518-HDngQIfvxp6jdk3i8BEcLY5r.png?width=1200)
兄弟要素の最初の要素
![](https://assets.st-note.com/img/1739502033-LX4ReaYdfoyUI0nkgJKicb9t.png?width=1200)
兄弟要素の最後の要素
![](https://assets.st-note.com/img/1739502471-S5Ek8DotqPZX0VCQTw2MOhrR.png?width=1200)
兄弟要素がない要素
![](https://assets.st-note.com/img/1739504405-7R2opsMBPK5yfQhUiDegrdmk.png?width=1200)
最初の子要素
![](https://assets.st-note.com/img/1739507091-OGWU4RM0EVj5agSyLP2heud6.png?width=1200)
最後の子要素
![](https://assets.st-note.com/img/1739509391-O1zL28bg5HThEXQkYqZMaDxG.png?width=1200)
兄弟要素で要素が1つの時
![](https://assets.st-note.com/img/1739511388-rDASkJUeqGM593zNmTHCBW8s.png?width=1200)
〇〇番目の要素
![](https://assets.st-note.com/img/1739511495-DQVFmeUXSfydtuj5PcRAq849.png?width=1200)
最後から〇〇番目の要素
![](https://assets.st-note.com/img/1739511693-qsoNW3jBcgUP9kACe6JfvdIH.png?width=1200)
奇数の子要素
![](https://assets.st-note.com/img/1739511785-zSXlwKAFOxV6hyYkTanJWRo7.png?width=1200)
偶数の子要素
![](https://assets.st-note.com/img/1739511907-KQTzIAYyWMeDgkBl6J2EZP7p.png?width=1200)
倍数の子要素
![](https://assets.st-note.com/img/1739512061-pbWJHKA2M7nEqFyGPNUc64Sa.png?width=1200)
一文字目
![](https://assets.st-note.com/img/1739516908-BE9ISAVrygXNvLcGleupxDaq.png?width=1200)
全ての要素
![](https://assets.st-note.com/img/1739517008-zM84EWRjxrV2skFIa0JhNOqB.png?width=1200)
要素の前後
![](https://assets.st-note.com/img/1739517086-3HOfunKabCMBjYxcGDQIS7ko.png?width=1200)
その他
他にも、
・属性で指定
・属性内容の一部が一致
・属性内容の始めが一致
・属性内容の最後が一致
・テキストの1行目
・〇〇以外の要素
・要素が空の時
などの指定方法もありますが、僕はあまり使う機会が無かったので今回の良く使うセレクタには上げませんでした。
tree作成のjs
最後にCSSのセレクタとは関係ないんですが、今回使用した画像に出てきたHTMLとCSSを書いたらツリー構造でCSSの指定カ所を赤枠で囲むjsの書き方も残しておきます。
// DOMツリーを生成する関数
function generateTree(element, parent, styles, level = 0, isLastChild = true) {const treeItem = document.createElement("div");
// インデントを設定
let prefix = "";
if (level > 0) {
prefix += " ".repeat(level - 1); // 前の階層のインデント
prefix += isLastChild ? "└─ " : "├─ ";
}
// 強調表示する部分(スタイルが適用された部分)を特定
let innerContent = element.tagName.toLowerCase();
let isHighlighted = false;
for (const rule of styles) {
if (element.matches(rule.selectorText)) {
innerContent = `<div class="highlight">${innerContent}</div>`; // 強調表示isHighlighted = true;
break;
}
}
// プレフィックスと内容をHTMLに追加
treeItem.innerHTML = prefix + innerContent;
// スタイルが適用されている要素を強調
parent.appendChild(treeItem);
const children = Array.from(element.children);
children.forEach((child, index) => {
generateTree(
child,
parent,
styles,
level + 1,
index === children.length - 1 // 最後の子要素かどうか
);
});
}
// CSSスタイルをパースする関数
function parseCSS(cssText) {
try {
const styleSheet = new CSSStyleSheet();
styleSheet.replaceSync(cssText);
return Array.from(styleSheet.rules);
} catch (error) {
console.error("CSSのパースに失敗しました:", error.message);
return [];
}
}
// メイン処理document.getElementById("generateTree").addEventListener("click", () => {
const htmlInput = document.getElementById("htmlInput").value.trim();
const cssInput = document.getElementById("cssInput").value.trim();
const treeContainer = document.getElementById("tree");
// ツリーコンテナをクリア
treeContainer.innerHTML = "";
// 入力HTMLを解析してツリー生成
try {
const parser = new DOMParser();
const doc = parser.parseFromString(htmlInput, "text/html");
const rootElement = doc.body.firstElementChild;
// 入力CSSを解析
const styles = parseCSS(cssInput);
if (rootElement) {
generateTree(rootElement, treeContainer, styles);
} else {
treeContainer.textContent = "正しいHTMLを入力してください。";
}
} catch (error) {
treeContainer.textContent = "エラー: " + error.message;
}
});
![](https://assets.st-note.com/img/1739518753-cFYxDHBgUPEyqSMbWheO7tzp.png?width=1200)