css

作者: jiahzhon | 来源:发表于2020-12-18 18:17 被阅读0次

三种引入方式

  • 行间样式:style。里面直接写的就是css
  • 页面级css <head>中的<style>
  • 外部css文件<link rel = "stylesheet" type="text/css" href = "css文件名">

css选择器

  • id : #id {}
  • class : .class{}
  • 标签选择器:直接写标签
  • 通配符

CSS权重

  • !important > 行间样式style > id > class | 属性选择器 | 伪类 > 标签 | 伪元素 > 通配符*

复杂的父子选择器

<div>
    <em>
    </em>
    <span>
        <em>
        </em>
    </span>
</div>
  • 父子选择器
    • div em{}
    • 不一定限制是标签选择器
    • 不一定是直接的父子关系, div em{}两个em都会命中
    • 系统是自右向左找的
  • 直接元素选择器
    • div>em
    • 只命中直接的子元素
  • 并列选择器
    • div.demo
    • 没有空格
    • 如果有标签选择器要写在最前面
    • 下图如果只想要命中2就要用并列选择器
Snipaste_2020-12-19_11-36-11.png
  • 分组选择器

    • 逗号隔开,共享一个css样式


      Snipaste_2020-12-19_11-43-27.png
  • 伪类选择器

    • a:hover
    • 实现鼠标移到元素时改变样式


      Snipaste_2020-12-19_17-38-04.png

css属性

  • 文本对齐方式: text-align
  • 单行文本高度:line-height
  • 单行文本垂直居中:、line-height = 容器高度 ,水平居中 text-align = center就行了
  • 首行缩进:text-indent : 2em 缩进两个文本 1em = 1 font-size

盒子模型

1608631165(1).png
  • <body>经常自带8px的margin,所以初始化css的时候经常把它去掉

层模型

  • 这个概念是由css的一个属性position引出来的,position是用来定位元素的,配合up,right,left,down。
  • posiition: absolute
    • 脱离原来的位置进行定位,(进入到另外一层了)。
    • 以最近的有定位的父级进行定位,如果没有,那么相对于文档定位。
  • posiition: relative
    • 保留原来位置进行定位(即使自己移动了,原来的位置也不会让给别人)
    • 相对自己原来的位置进行定位
  • 依据他们的特性。所以经常在做定位时以relative的元素作为定位的依据。以absolute来定位。
  • 还有一种posiition: fix。与absolute相似,但是可以固定(拉滚动条也会固定住的广告)
  • 居中在页面


    image.png

经典bug:

  • margin塌陷:设置子元素垂直方向的margin,父元素也具有与子元素相同的margin值,称之为塌陷现象
    • 解决方法,让父元素触发bfc
      • position: absolute
      • display: inline-block;
      • float: left/right;
      • overflow:hidden(溢出部分隐藏)
  • margin合并:两个兄弟关系的元素垂直方向margin会以margin较大的为准。解决方法为套父元素,把父元素触发bfc,但这种做法不妥,为了解决bug而添加元素。所以我们一般容许margin合并bug。

浮动模型

  • 浮动模型是由css的float:left,right形成的。
  • 浮动元素产生了浮动流。所有产生了浮动流的元素,块级元素看不到他们。产生了bfc的元素和文本类元素(inline)的元素以及文本都能看到浮动元素。
  • 清除元素周围的浮动流:clear:both;
    • 注意:clear只有在块级元素中才能生效
  • 包裹浮动元素(让最后一个子元素clear就行了,这样父块元素就能发现浮动子元素)


    image.png
  • 利用伪元素去除浮动流(上面的解决办法还是增加了标签去解决)
    • 伪元素是每个标签都有的元素,div::after和div::before


      image.png
  • 改变父元素来包裹
    • 父标签设置position:absolute; float:left/right
      • 这种做法会打内部把元素转换成inline-block;inline-block由内部元素大小决定自身大小,所以只能实现紧紧包裹。(冷知识)
  • 用float实现报纸排版(文字包裹着图片,这是float最初的用法)
  • 图片没有使用float,不能实现报纸那种效果


    image.png
  • 使用float后


    image.png

文字溢出处理

  • 单行文字实现多出部分省略号


    image.png
  • 多行不能这么处理,一般直接做截断

图片背景处理(加载不出css时候展示文字)

  • 利用padding也会展示背景图片的特性


    image.png
  • margin: 0 auto可以让元素水平居中

相关文章

网友评论

      本文标题:css

      本文链接:https://www.haomeiwen.com/subject/ngrxnktx.html