- Objective: - Breadcrumb: # 概念阐释 ## 语义 利用选择器之间的关系更加准确的指向要渲染的HTML内容。 ## 语法 ### 元素标签与属性或标签 更加准确的定位到要修改的内容 ```css p.big {}/*属性为big且标签为p的样式修改*/ p#unique{}/*这种情况不会出现,因为一个页面只能有一个id*/ ``` ### 同时修改多种选择器 ```css p,.big { } ``` ### 属性和属性 一个属性内会有多个属性名称的可能,没有空格 ```html <p class=".mainpoint highlight"> ``` ```css .mainpoint.highlight { } ``` ### 后代选择器 父元素内的所有子元素,两个选择器中有空格 ```css .box p { color: red; } /*box属性下的p元素*/ #hello p { color:yellow; } /*hello ID下的p元素*/ ``` ```html <div class="box"> <p>Text in .box</p> </div> <p>Text not in .box</p> ``` 但必须是子元素,如果再下一级就必须写全 ```html .published-container .markdown-rendered h2 { border: none; } ``` ![](https://image.harryrou.wiki/2023-11-13-CleanShot%202023-11-13%20at%2012.11.58%402x.png) ### 子代关系选择器 父级元素下的直系子元素会发生改变,孙系没变化 ``` css article > p { color:blue; } ``` ```html <article> ... <p>...</p>/*有变化*/ </article> <p>...</p> /*无变化*/ <article> <div> <p>...</p>/*无变化*/ </div> </article> ``` ### 临接兄弟 处于同级别的紧挨着的元素会发生改变 ```css h1 + p { font-weight: bold; background-color: #333; color: #fff; padding: .5em; } ``` ```html <article> <h1>A heading</h1> <p>Veggies es bonus vobis, proinde vos postulo essum magis kohlrabi welsh onion daikon amaranth tatsoi tomatillo melon azuki bean garlic.</p> /*样式化*/ <p>Gumbo beet greens corn soko endive gumbo gourd. Parsley shallot courgette tatsoi pea sprouts fava bean collard greens dandelion okra wakame tomato. Dandelion cucumber earthnut pea peanut soko zucchini.</p> /*样式无变化*/ </article> ``` ### 通用兄弟 处于同级别的所有元素会发生改变 ```css h1 ~ p { font-weight: bold; background-color: #333; color: #fff; padding: .5em; } ``` ```html <article> <h1>A heading</h1> <p>I am a paragraph.</p> /*样式化*/ <div>I am a div</div>/*样式无变化*/ <p>I am another paragraph.</p> /*样式化*/ </article> ``` # 实例 除了通过标签、class 和 id 来获取 HTML 标签外,还有一些特殊属性 ### data-属性 在[[HTML 属性|HTML]]5中加入了`data-*`数据属性 ```css h1[data-heading="章序号/节序号/节/笔记序号"] { display: none; } ``` ```html <h1 data-heading="章序号/节序号/节/笔记序号">...<h1> ``` ```css .metadata-property[data-property-key="tags"] .multi-select-pill { background: orange; color: blue; } ``` ```html <element class="metadata-property" data-property-key="tags"> … <element class="multi-select-pill"> ``` ### input 的 type 属性 ```html <input type="checkbox"> ``` ```css .todoist-p4 > input[type='checkbox'] { border: 1px solid #b4c2f0 !important; background-color: rgba(180, 194, 240, 0.25) !important; } ``` # 相关内容 ### 选择器种类 ```css h1 { } .box { } #unique { } * { margin:0;} /*全局选择器*/ ``` # 参考资料 - [关系选择器-MDN](https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Building_blocks/Selectors/Combinators)