关于CSS的相关问题 | 青训营笔记

95 阅读4分钟

文章第一句话为“这是我参与「第四届青训营 」笔记创作活动的的第2天

今天学习了css,在我个人看来这些都是很好理解的,我也另外学习并总结了一些关于css的知识。

CSS的盒子模型

  • 标准盒子模型(box-sizing:content-box):包括margin、border、padding、content
  • IE盒子模型(box-sizing:border-box):包括margin、content(border+padding+content)content已经包括边框、内边距和内容

line-height与height的区别

  • height:元素的高度值,是一个固定值,盒子高度不会随文字换行而增大
  • line-height:每一行文字的高度,如果文字换行,则整个盒子高度增大

CSS选择符有哪些?哪些CSS的属性可以实现继承?

  • CSS选择符:

    • 通配符(*
    • id选择器(#
    • 类选择器(.
    • 标签选择器(divph1...)
    • 相邻选择器(+)(下一个)
    • 后代选择器(空格
    • 子元素选择器(>
    • 属性选择器(a[href]
    • 伪类选择器(:first:last
  • 可以继承的CSS属性:

    • 文字系列:font-size、color、line-height、text-align、、、
  • 不可继承的:

    • border,padding、margin、、、

CSS优先级算法

  • 优先级比较:!important > 内联样式 > id > class > 标签 > 通配符

  • CSS权重计算:相加

    • !important:无限大
    • 内联样式:1000
    • id:100
    • class:10
    • 标签&伪元素:1
    • 通配、+、>:0

用CSS样式画一个三角形

使用边框border

div{
  width:0;
  height:0;
  border-left:100px solid transparent;
  border-right:100px solid transparent;
  border-top:100px solid transparent;
  border-buttom:100px solid #000000;
}

给div的宽高都为0,在给各个方向一个边框,其中三个方向的边框为透明。

一个盒子不给宽高怎么水平垂直居中

  • 父元素设置弹性布局

    .father{
      display:flex;
      justify-content:center;
      align-items:center;
    }
    
  • 使用定位

    div{
      position:absolute;
      left:50%;
      top:50%;
      transform:translate(-50%.-50%);
    }
    

display有哪些值?有什么作用?

  • none:隐藏元素
  • block:将元素转化为块元素
  • inline:将元素转化为行内元素
  • inline-block:将元素转化为行内块元素

BFC规范的理解

BFC规范:块级格式化上下文(block formatting context

  • BFC就是页面上一个隔离的独立容器,容器里的子元素不会影响到外边的元素。

  • BFC的原则:如果一个元素具有BFC,则内部元素不管怎样,也不会影响到外部的元素。

  • 如何触发BFC:

    • float的值非none
    • overflow的值非visible
    • display的值为:inline-block、table-cell、、、
    • position的值为:absoute,fixed

清除浮动有哪些方式

  1. 触发BFC
  2. 多创建一个盒子,添加样式clear:both;
  3. 父元素:after{content:"";display:block;clear:both;}

position有哪些值?分别是根据什么定位的?

  • static[默认]:没有定位。
  • fixed固定定位:相对于浏览器窗口进行定位。
  • relative:相对自身定位,不脱离文档流;当left、right、top、bottom同时存在时,只有left、top生效。
  • absolute:相对于第一个relative的父元素定位,脱离文档流;当left、right、top、bottom同时存在时,都会生效。

写一个左中右布局占满屏幕,其中左右两块固定200,中间自适应宽度,要求先加载中间块,请写出结构及样式。(双飞翼布局)

<div class='container'>
  <div class='c'>
    <div class='main'></div>
  </div>
  <div class='l'></div>
  <div class='r'></div>
</div>
.container > div{
  float:left;
}
.l{
  margin-left:-100%;
  width:200px;
  height:100vh;
  background-color:#f00;
}
.c{
  width:100%;
  height:100vh;
  background-color:#0f0;
}
.r{
  margin-left:-200px;
  width:200px;
  height:100vh;
  background-color:#00f;
}
.main{
  padding:0 200px;
}

什么是CSS reset?

  • reset.css:是一个css文件,用来重置css样式的。
  • normalize.css:为了增强跨浏览器渲染的一致性的层叠样式表。

display:none;与visiblity:hidden;有什么区别

  • display:none;不占用位置;visiblity:hidden;会占用位置。

  • 重绘与回流的问题:

    • display:none;与visiblity:hidden;都会产生重绘
    • display:none;还会产生一次回流
  • 产生回流一定会造成重绘,但是重绘不一定会产生回流。

  • 产生回流的情况:改变元素的位置(left,top ...)、显示影藏元素...

  • 产生重绘的情况:样式细微改变(换颜色background,color)

opacityrgba的区别

  • 都能实现透明效果
  • opacity:取值范围0-1,0表示完全透明,1表示不透明,子元素会继承父元素的opacity
  • rgba:r、g、b取值整数或百分数,子元素不会继承

怎么让Chrome支持小于12px的文字?

使用缩放

  • Chrome默认字体大小16px
  • 使用缩放:-webkit-transform:scale();

单位remem区别

  • 都是相对于font-size属性
  • em相对于父元素的font-size
  • rem是相对于根元素(html)的font-size

萌新上路,相互帮助。