深入CSS01-0729|青训营笔记

67 阅读2分钟

选择器优先级问题

多条选择器匹配同一语句

判断下列语句哪条规则生效?

通过特异度确定

<artical>
    <h1 class="title">嘻嘻嘻哈哈哈</h1>
   </article>
   
<style>
    .title{
        color:blue;
    }
    article h1{
        color:red;
    }
</style>

image.png

覆盖

举例,有两个style分别为.btn和.btn.primary,则多一个.primary的.btn特异度高,可以覆盖单纯.btn中的设置。

因此可以通过定义基础类,再定义额外的class样式去覆盖。

继承 某些属性会自动继承其父元素的计算值,除非显式指定一个值。

<p>This is a <red>test</red>of <strong>inherit</strong> 

<style>
    body{
    font-size:20px;}
    p{
    color:blue;}
    red{
    color:red;}
    }</style>

运行结果如下:

image.png

显式继承

*{
    box-sizing:inherit;
    }
 html{
     box-sizing:border-box;
 }
 .some-widget{
     box-sizing:content-box;
  } 

上述代码含义为:

*为通配符,box-sizing为显式继承;html中box-sizing均为border-box,而在some-widget里的box-sizing为特殊设置的content-box.

初始值

CSS中每个属性都有一个初始值,可以使用initial关键字显式重置为初始值

例如:background-color:initial即把背景色设置为初始值transparent透明的

image.png

image.png

image.png

布局

确定内容的大小和位置的算法

依据元素、容器、兄弟节点和内容等信息来计算

布局相关技术
浮动
绝对定位
常规流
  • 行级
  • 块级
  • 表格布局
  • FlexBox
  • Gird布局

盒模型

image.png

width

  • 指定content box宽度
  • 取值为长度、百分数、auto
  • auto由浏览器根据其他属性确定
  • 百分数相对于容器的content box宽度

height

  • 指定content box高度
  • 取值为长度、百分数、auto
  • auto取值由内容计算而来
  • 百分数相对于容器的content box高度
  • 容器有指定的高度时,百分数才生效

padding

  • 指定元素四个方向的内边距
  • 百分数相对于容器宽度

image.png

image.png

border边框

  • 三种属性:
    • border-width
    • border-style
    • border-color
  • 四个方向:
    • border-top
    • border-right
    • border-bottom
    • border-left

属性与方向通常结合使用,例如border-left-width

其中可以使用边框制作各类图形。例如边框完全填充然后取消左右下三个边框可以设置三角形

image.png image.png image.png

margin

  • 指定元素四个方向的外边距
  • 取值可以是长度、百分数、auto
  • 百分数相对于容器宽度

当margin-left和margin-right均取auto时,会产生居中效果

image.png

overflow

可以考虑到内容超出box之后的形式

  • visible
  • hidden
  • scroll

image.png