CSS之选择器、优先级、继承

1.CSS选择器

常用的选择器

 <body>
    <div class="parent">
      <div id="one" style="background: blue" class="child">
        1
        <div class="one_one">11</div>
        <div style="background-color: blueviolet" class="one_two">12</div>
      </div>
      <div id="two" class="child">2</div>
      <div class="child three">3</div>
      <div class="child" data-dachao="daChao">4</div>
    </div>
  </body>
  <style>
    div {
      display: inline-block;
      font-size: 18px;
    }

    * {
      box-sizing: content-box;
      font-size: 30px;
    }

    #one,
    #two {
      background-color: red;
    }

    .parent div {
      background-color: yellow;
    }

    .parent > div {
      background-color: black;
    }

    .parent #two {
      background-color: purple;
    }

    #two + div {
      background-color: lightpink;
    }

    .three {
      display: inline;
    }

    div[data-dachao] {
      background-color: cyan;
      margin-left: 20px;
      position: relative;

      &::before {
        content: "^";
        color: brown;
        position: absolute;
        left: -10px;
        top: 0px;
      }

      &::after {
        content: "~";
        color: brown;
        position: absolute;
        right: -10px;
        top: 0px;
      }
    }

    .parent .child .one_two {
      background-color: darkslategray !important;
    }

    .parent {
      width: 400px;
      height: 200px;
      background-color: lightgray;
      box-sizing: border-box;
    }

    .child {
      width: 100px;
      height: 100px;
      background-color: green;
      margin: 0 10px 10px 0;
      box-sizing: border-box;
    }
  </style>

在这里插入图片描述

  • id选择器(#one): 选择id为one的元素;
  • 类选择器(.child): 选择类名为child的所有元素;
  • 标签选择器(div):选择标签为div的所有元素;
  • 后代选择器( .parent div):选择parent元素内部所有的div元素;
  • 子选择器( .parent > div):选择父元素为.parent的所有子div的元素,第一层的div不是所有的div;
  • 相邻同胞选择器( #two + div):选择紧接在#two 之后的div元素;
  • 属性选择器(div[data-dachao] ),选择属性有data-dachao的元素。
常用的伪元素

::before:在元素内容的前面插入新内容。常用于添加装饰性内容。
::after:在元素内容的后面插入新内容。同样常用于添加装饰性内容。
::first-letter:用于选取文本块的第一个字母,并可对其进行样式化。常用于排版设计,如"首字下沉"效果。
::first-line:用于选取文本块的第一行,并可对其进行样式化。常用于设置文章首行的文字特性,如字体、颜色等。
::selection:用于改变用户选中文字时的背景颜色和文字颜色等样式。
::placeholder:用于自定义输入框占位符的样式,比如更改文字颜色或字体大小。

常用的伪类

:hover:用于定义鼠标指针悬停在元素上时的样式。
:active:定义激活状态的元素样式(例如,鼠标点击链接或按钮时)。
:focus:用于定义元素获得焦点时(如通过tab键选中)的样式,常用于表单控件。
:checked:用于选中的单选按钮(radio)或复选框(checkbox)的样式。
:first-child:选择父元素的第一个子元素。
:last-child:选择父元素的最后一个子元素。
:nth-child(n):选择父元素的第n个子元素,n可以是数字、关键词或公式。
:not(selector):用于选择非特定项的元素,selector是任何有效的CSS选择器。
:link 和 :visited:分别用于定义未被访问过的链接和已被访问过的链接的样式。

当然还一些其他的伪类,伪元素,后续再总结。

2.优先级

!Important>行内样式>ID 选择器>类选择器>标签>继承>浏览器默认属性
  1. !Important优先级高于行内样式
  .parent .child .one_two {
      background-color: darkslategray !important;
    }
<div style="background-color: blueviolet" class="one_two">12</div>

.one_two颜色是darkslategray。

  1. 行内样式优先级高于ID 选择器
   <div id="one" style="background: blue" class="child">
    #one,
    #two {
      background-color: red;
    }

#one的颜色是blue。

  1. ID 选择器优先级高于类选择器
<div id="two" class="child">2</div>
 .parent #two {
      background-color: purple;
 }
.child {
      width: 100px;
      height: 100px;
      background-color: green;
      margin: 0 10px 10px 0;
}  

颜色是purple。

  1. 类选择器优先级高于标签
.three {
    display: inline;
}

div {
    display: inline-block;
}

.three行内元素。

  1. 标签优先级高于通配符
 * {
      box-sizing: content-box;
    }
 .parent {
      width: 400px;
      height: 200px;
      background-color: lightgray;
      box-sizing: border-box;
    }

    .child {
      width: 100px;
      height: 100px;
      background-color: green;
      margin: 0 10px 10px 0;
      box-sizing: border-box;
    }    

.parent .child的box-sizing: border-box。

  1. 继承优先级高于浏览器默认属性
div {
    display: inline-block;
    font-size: 18px;
}

* {
    box-sizing: content-box;
    font-size: 30px;
}

div {
    display: block;
}

浏览器默认属性优先级比较低, display: inline-block。

3.继承

可继承属性

这些属性常常与文本格式设置相关,例如:

color:文本的颜色。
font-family:字体系列。
font-size:字体大小。
font-style:字体样式(例如,斜体)。
font-variant:字体变体(例如,小型大写字母)。
font-weight:字体的粗细。
letter-spacing:字符间距。
line-height:行高。
text-align:文本对齐方式。
text-indent:文本缩进。
text-transform:文本转换(大写、小写、首字母大写等)。
visibility:元素的可见性(注意:即使父元素设置为visibility: hidden,子元素依然可以通过设置visibility: visible来显示自己)。
white-space:如何处理元素内的空白。

不可继承的CSS属性

这些属性大多与布局和盒模型相关,例如:

background:背景设置(包含background-color、background-image等)。
border:边框设置(包含border-width、border-style、border-color等)。
height:元素的高度。
width:元素的宽度。
margin:外边距。
padding:内边距。
position:定位方式(如absolute,relative)。
display:元素的显示类型(例如block,inline,flex)。
overflow:超出元素框的内容如何处理。
z-index:堆叠顺序。

特例和注意事项

有些属性虽然默认不继承,但可以通过明确设置inherit值来实现继承,如margin: inherit。

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSS选择器是用于选择HTML文档中的元素的模式。常见的CSS选择器包括: 1. 元素选择器:通过元素的标签名选择元素,如`p`选择所有的段落元素。 2. 类选择器:通过元素的class属性选择元素,使用`.`符号,如`.container`选择class为"container"的元素。 3. ID选择器:通过元素的id属性选择元素,使用`#`符号,如`#header`选择id为"header"的元素。 4. 属性选择器:通过元素的属性选择元素,如`[type="text"]`选择所有type属性值为"text"的元素。 5. 后代选择器:通过元素的后代关系选择元素,使用空格分隔,如`.container p`选择class为"container"的元素内部的所有段落元素。 6. 子元素选择器:通过元素的直接子元素关系选择元素,使用`>`符号,如`.container > p`选择class为"container"的元素下的直接子元素中的所有段落元素。 7. 相邻兄弟选择器:通过元素的相邻兄弟关系选择元素,使用`+`符号,如`h2 + p`选择紧接在h2元素后面的p元素。 8. 伪类选择器:通过元素的状态或位置选择元素,如`:hover`选择鼠标悬停的元素。 CSS选择器优先级表示了当多个选择器同时应用于同一个元素时,哪个选择器的样式规则会被应用。通常,优先级的计算规则如下: 1. ID选择器优先级最高,为100。 2. 类选择器、属性选择器和伪类选择器优先级为10。 3. 元素选择器和伪元素选择器优先级为1。 4. 通配符选择器继承的样式没有优先级,其优先级为0。 如果多个选择器具有相同的优先级,则后面出现的选择器会覆盖前面出现的选择器。如果多个选择器具有不同的优先级,则优先级高的选择器的样式规则会被应用。 需要注意的是,使用`!important`声明可以提升样式规则的优先级,但是过度使用会导致样式难以维护和调试,应尽量避免滥用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值