CSS基础学习第二章

本篇文章适合基础薄弱想笼统学习的童靴们,因为我就是从零自学开始的,把我学习中常用到的知识点整理一下以后常常温故一下。

案例地址: https://github.com/pengjunshan/WebPJS/HtmlCss

其它Web文章
HtmlCss基础学习第一章
CSS浮动的使用和解决浮动的五种方法
CSS定位relative、absolute、fixed使用总结
原生开发WebApi知识点总结
开发中常用jQuery知识点总结
C3动画+H5+Flex布局使用总结
ES6常用知识总结
Vue学习知识总结
开发环境到生产环境配置webpack
待续......

本编文章会讲到的知识点
  • 引入CSS样式表
  • 标签显示模式
  • CSS复合选择器
  • CSS 背景(background)
  • CSS 三大特性
  • 盒子模型
引入CSS样式表
行内式(内联样式)

通过 标签style属性 设置样式。
语法中,style是标签的属性,属性和值的书写规范与CSS相同,行内式只对 其所在的标签 及嵌套在其中的子标签起作用。

<标签名 style="属性1:属性值1; 属性2:属性值2; 属性3:属性值3;"> 内容 
内嵌式(内部样式表)

内嵌式是将CSS代码集中写在HTML文档的head头部标签中,并且用style标签定义。语法中,style标签一般位于head标签中title标签之后,也可以把他放在HTML文档的任何地方。

 


外链式(外部样式表)

链入式是将所有的样式放在一个或多个以.CSS为扩展名的外部样式表文件中,通过link标签将外部样式表文件链接到HTML文档中


  

三种样式表总结
样式表 优点 缺点 使用情况 控制范围
行内式 书写方便 权重高 没有实现样式和结构相分离 较少 控制一个标签(少)
内嵌式 一定程度的实现了 结构样式分离 没有彻底分离 较多 控制一个页面(中)
外链式 完全实现结构样式分离 需要引入 最多,强烈推荐 可控制多个页面(多)
CSS样式表案例代码



    
    Document
    


    

我是行内式css

我是内嵌式css

我是外链式css

标签显示模式(display)

在html中,元素主要分为行内元素和块级元素、行内块元素。

块级元素(block-level)

每个块元素通常都会独自占据一整行,可设宽度、高度、对齐等,常用于网页布局结构搭建。

常见的块元素有

~

    1. 等,其中
      标签是最典型的块元素。

块级元素的特点:

  • 独占一整行
  • 可设宽高,行高、外边距以及内边距都可设。
  • 宽度默认撑满父级
  • 可以容纳任何其他标签
行内元素(inline-level)

行内元素(内联元素)由内容撑开,一般不可以设置宽度、高度、对齐等属性,常用于控制页面中文本的样式。

常见的行内元素有等,
其中标签最典型的行内元素。

行内元素的特点:

  • 一行排多个。
  • 不能设宽高,但水平的padding和margin可以设置,垂直的无效。
  • 被内容撑开
  • 行内元素只能容纳文本或则其他行内元素。(a特殊)

注意

  1. 只有 文字才 能组成段落,因此 p 里面不能放块级元素,
    同理还有这些标签h1,h2,h3,h4,h5,h6,dt,他们都是文字类块级标签,里面不能放其他块级元素。
  2. 链接里面不能再放链接。

#######行内块元素(inline-block)

在行内元素中有几个特殊的标签——、,

可以对它们设置宽高和对齐属性,有些资料可能会称它们为行内块元素。

行内块元素的特点:

  • 一行多个
  • 默认宽高内容撑开
  • 宽高,外边距以及内边距都可设
三种显示模式转换
  • 块 => 行内 display: inline;
  • 行内 => 块 display: block;
  • 行内 => 行内块 display: inline-block;
标签显示模式案例代码



    
    Document
    


    
我是div
我是块级span 我是行内span
CSS复合选择器

复合选择器是由 两个 或 多个基础选择器 组合而成的,目的是为了可以更准确的选择目标元素。

交集选择器

交集选择器由两个选择器构成,两个选择器之间不能有空格。
交集选择器 是 并且的意思,即...又...的意思。
必须两个条件同时满足,才能作用。
如果有 标签选择器 要放在最前面!

        /* 类名既有tall 又有mm */
        .tall.mm {
            background-color: red;
        }

        /* 首先是p标签 并且类名是sg */
        p.sg{
            color: red
        }
并集选择器

并集选择器(CSS分组选择器),逗号连接。
任何形式的选择器(包括标签选择器、class类选择器id选择器等),都可以作为并集选择器的一部分。
如果某些选择器定义的样式完全相同,或部分相同,就可以利用并集选择器为它们定义相同的CSS样式。
并集选择器的意思, 就是说,只要逗号隔开的,所有选择器都会执行后面样式。

        /* 
        * p标签选择器 zxy类选择器 gfc ID选择器,
        * 这三个选择器都会执行颜色为红色 
        */
        p, .zxy, #gfc{
            color: red;
        }
后代选择器

后代选择器,用来选择元素的后代。.father .son。
写法就是把 外层标签写在前面,内层标签写在后面,中间用空格分隔。
子孙后代都可以选中。

        /* ul下子孙li都会变红 */
        ul li {
            color: red;
        }
        /* ul下类名为other的li变黑 */
        ul li .other{
            color: #000000;
        }
子元素选择器

子元素选择器,只能 作用于 子元素。 父 > 子
规范:> 左右两侧各保留一个空格。
白话: 这里的子 指的是 亲儿子 不包含孙子 重孙子之类。

    /* 
        * box下子一级(儿子)的p标签才会变蓝色,
        * 一级以下的都不会变(孙子) 
        */
        .box > p {
            color: blue;
        }
属性选择器

属性选择器可以根据元素的属性及属性值来选择元素。

    /*  选择器[属性名] : 只要包含该属性即可被选中; */
        li[type] {
                color: blue;
            }
        /* 
            选择器[属性名="属性值"]: 
            属性值必须完全相同才会被选中 */
            li[type="meat"] {
            color: red;
        }
        /* 
            选择器[属性名*="属性值"]     
            只要包含该属性值就可以被选中
        */          
            li[type*="hot"] {
                color: green;
            }   
        /*
            选择器[属性名^="val"]
            当该元素属性值以这个 val 开头时作用

            ^: 表示以 .... 开头 ;
        */
            li[type^="dr"] {
                color: blue;
            }       
        /*
            $:表示以 ... 结尾
            选择器[属性名$="val"]
            当该元素属性值 以 val 结尾时起作用
        */
        li[type$="t"] {
            color: red;
        }       
        /*
            找到 type,对属性值进行分析,按照空格分隔匹配,
            必须与分隔出来的属性值完全相等,才起作用
        */
        li[type~="hot"] {
            color: blue;
        }
        /* 跟 * 区别, *是只要包含,就能生效,不管有没空格,不管什么位置 */

        /* 
            推测:
                先找 price,根据空格分隔所有的属性值,
                中间只要有类似于 very 和 very- 就可以被选中
                可以选中 very  very-...  
                这是不对的
                
            结果:
                E[属性|="val"]  必须以 val 开头
                1. 只是 val 可以被选中
                2. val-...
        */
伪元素选择器
  1. E::first-letter文本的第一个单词或字(如中文、日文、韩文等)
  2. E::first-line 文本第一行;
  3. E::selection 可改变选中文本的样式;
  4. E::before和E::after



    
    Document
    


    

英语词汇,一般指即兴的、随性的随意的发挥,例如HIPHOP说唱中的freestyle就是即兴说唱的意思。2017年6月,因吴亦凡屡次提起而火遍网络。 吴亦凡爆红的freestyle,其实是嘻哈选手的基本功,也是《中国有嘻哈》节目中的一个环节名称。 发展经过编辑 从吴亦凡口里说出来,freestyle就变得很魔性了,因为他见人都会问一句,你有freestyle吗?两个选手难以选择,还是这句,“你们有freestyle吗”?

CSS 背景(background)

CSS 可以添加背景颜色和背景图片,以及来进行图片设置。

  • 背景颜色: background-color
  • 背景图片地址: background-image
  • 是否平铺: background-repeat
  • 背景位置: background-position
  • 背景固定还是滚动: background-attachment
背景图片(image)

语法:background-image : none | url (url)
参数:
none :  无背景图(默认的)
url :  使用绝对或相对地址指定背景图像
图片覆盖不到地地方都会被背景色填充。

背景平铺(repeat)

语法:background-repeat : repeat | no-repeat | repeat-x | repeat-y
默认就是 repeat
参数:
repeat :  背景图像在纵向和横向上平铺(默认的)
no-repeat :  背景图像不平铺
repeat-x :  背景图像在横向上平铺
repeat-y :  背景图像在纵向平铺

背景位置(position)

语法:

  • background-position : length || length
  • background-position : position || position
    参数:
    length :  百分数 | 由浮点数字和单位标识符组成的长度值。请参阅长度单位
    position :  top | center | bottom | left | center | right
    说明:
    设置或检索对象的背景图像位置。必须先指定background-image属性。默认值为:(0% 0%)。
    如果只指定了一个值,该值将用于横坐标。纵坐标将默认为50%。第二个值将用于纵坐标。
    注意:
  1. position 后面是x坐标和y坐标。 可以使用方位名词或者 精确单位。
  2. 如果和精确单位和方位名字混合使用,则必须是x坐标在前,y坐标后面。比如 background-position: 15px top; 则 15px 一定是 x坐标 top是 y坐标。
    实际工作用的最多的,就是背景图片居中对齐了。
    background-position: center center;
背景附着

语法:background-attachment : scroll | fixed
参数:
scroll :  背景图像是随对象内容滚动
fixed :  背景图像固定

背景简写

background 属性值的书写顺序,没有强制标准的。
但为了可读性,建议大家如下写:
background:背景颜色 背景图片地址 背景平铺 背景滚动 背景位置
background: transparent url(image.jpg) repeat-y scroll 50% 0 ;

背景透明

CSS3支持背景半透明的写法语法格式是:
background: rgba(0,0,0,0.3);
最后一个参数是alpha 透明度 取值范围 0~1之间
注意: 背景半透明是指盒子背景半透明, 盒子里面的内容不受影响。
同样, 可以给 文字和边框透明 都是 rgba 的格式来写。
color:rgba(0,0,0,0.3);
border: 1px solid rgba(0,0,0,0.3);

背景缩放

通过background-size设置背景图片的尺寸,就像我们设置img的尺寸一样,在移动Web开发中做屏幕适配应用非常广泛。
其参数设置如下:

  1. 可以设置长度单位(px) 或 百分比(设置百分比时,参照盒子的宽高)
  2. 设置为cover时,必须填满。覆盖整个父容器,不会失去原来的比例,按照原来比例撑满整个父容器
  3. 设置为contain, 必须完整。必须保证原有比例的前提,进行尽可能的放大。默认会居中
  div {
          height: 400px;
          background: url("0 8.gif") no-repeat center top;
          background-color: rgba(0,0,0, 0.7);
          /* background-size: 100% 400px; */

          /*覆盖整个父容器,不会失去原来的比例,按照原来比例撑满整个父容器*/
          /* background-size: cover; */

          /* 必须保证原有比例的前提,进行尽可能的放大。默认会居中 */
          /* background-size: contain; */
      }
多背景

以逗号分隔可以设置多背景,可用于自适应布局
background-image: url('images/a.jpg'), url('images/b.png');

CSS 背景(background)案例代码



    
    Document
    


    
CSS 三大特性

CSS 三大特性:层叠性 继承性 优先级

层叠性

层叠性 指 CSS样式冲突产生的 叠加现象,出现样式冲突,才会触发层叠。

  1. 样式冲突,就近原则。
  2. 样式不冲突,不会层叠
继承性

继承性:子标签 继承 父标签的某些样式,如文本颜色和字号等。恰当地使用继承可以简化代码,降低CSS样式的复杂性。

哪些样式可继承?: text-,font-,line-开头,以及color,可继承

CSS优先级

两个或更多规则应用于同一元素上,会出现优先级问题。

考虑权重时,应注意:

  1. 继承权重为0。
  2. 行内优先。大于所有选择器,小于!important
  3. 权重相同,就近原则。
  4. !important 最大优先级

CSS权重计算公式(0, 0, 0, 0) :

  1. !important 1,0,0,0
  2. id 选择器 0,1,0,0
  3. 类选择器,伪元素,伪类选择器 0,0,1,0
  4. 标签选择器 0,0,0,1
  5. 行内样式不参与权重计算,比选择器大,比 !important小

发生样式冲突时,比较权重:
先比第一个:谁大,优先级就高
第一个一样,就比第二个:谁大,优先级就高
第二个一样,就比第三个:谁大,优先级就高
第三个一样,就比第四个:谁大,优先级就高
比完发现都一样,权重相同,就近原则(层叠性)

注意:

  1. 继承的 权重是 0。
  2. 基本优先级: !important > 行内样式 > id选择器 > 类选择器 > 标签选择器 > 通配符选择器 > 继承
  3. 权重相同,就近原则
盒子模型

盒子模型就是把 页面元素 看作是一个矩形的盒子。
每个盒子 由 内容(content)、内边距(padding)、边框(border)和外边距(margin)四大部分组成。
每一个盒子都由四部分组成: content padding border margin。

盒子边框(border)

设置盒子在外层的一层皮,可以设置皮的宽度、样式、颜色。

语法:

border : border-width || border-style || border-color 
border: 1px solid red;

border-style 边框样式常用属性:

  1. none:没有边框
  2. solid:单实线(常用)
  3. dashed:虚线
  4. dotted:点线
  5. double:双实线

盒子边框写法总结:
上边框: 
border-top-style 样式
border-top-width 宽度
border-top-color 颜色
连写:
border-top: 宽度 样式 颜色
border-top: 1px solid blue;

下边框 border-bottom-...
左边框 border-left- ...
右边框 border-right- ...

合并边框border-collapse:

当边框重叠时,会增加边框的宽度、颜色重度。可以使用border-collapse属性合并边框。

border-collapse:collapse; //表示边框合并在一起。

圆角边框
语法:

border-radius: 左上  右上  右下  左下;
border-radius: **px;
border-radius: **%;
  1. 可以分别为左上 右上 右下 左下设置圆角。
  2. 可以简写一次性设置四条边。
  3. 可以写百分比。

内边距(padding)

padding: 内边距。 指 边框与内容之间的距离。

  • padding-top:上内边距
  • padding-right:右内边距
  • padding-bottom:下内边距
  • padding-left:左内边距
  • padding: 上 右 下 左;

外边距(margin)

margin属性用于设置外边距。设置外边距会在元素之间创建“空白”, 这段空白通常不能放置其他内容。

  • margin-top: 上外边距
  • margin-right: 右外边距
  • margin-bottom:下外边距
  • margin-left: 左外边距
  • margin:上 右 下 左;

注意:

给行内元素  设置 垂直外边距margin 会无效
所以不要给 行内 设 margin-top 和 margin-bottom
给行内元素 设置 垂直 内边距 padding 也会有问题
所以不要给 行内 设 padding-top 和 padding-bottom

如果想设置上下内外边距,先转为块级元素。

外边距实现盒子居中

左右外边距设 auto, 实现盒子水平居中

需要满足两个条件:

  1. 必须是块级元素。
  2. 设了宽度(width)
.header{ width:660px; margin:0 auto;}

图片在盒子中居中的两种方式

  1. 方式一:父盒子,设置 text-align: center
  2. 方式二:转成块, display:block; 设宽 , margin: 0 auto;

文字盒子居中区别,图片和背景区别

  1. 文字内容居中是 text-align: center
  2. 盒子居中 左右margin 改为 auto (块级元素,要有宽度)
  3. 插入img,用的最多。比如产品展示类
  4. background-image 小图标或者 超大背景可以用到

清除元素的默认内外边距
为更方便控制网页元素,可清除默认内外边距:

* {
  padding:0;         /* 清除内边距 */
  margin:0;          /* 清除外边距 */
}

外边距合并

margin定义 块元素 垂直外边距时,很可能出现 外边距合并。

相邻块元素垂直外边距的合并:

上下相邻两个块元素相遇,若上面设margin-bottom,下面设  margin-top。
他们垂直间距不是  margin-bottom 与  margin-top 之和,而是较大者。

嵌套块元素垂直外边距的合并:

嵌套关系的块元素,父元素 margin-top 可能会与子元素的 margin-top 合并,合并成较大者。
且子元素并没和父元素 margin开。

解决方案:

  1. 为父元素定义 1px 的上边框。
  2. 为父元素定义 1px 上内边距。
  3. 父元素添加 overflow:hidden (触发BFC 后再会讲)。
  4. 浮动,定位(触发BFC 后再会讲)。

盒子实际宽度和高度

在页面中占据的空间 margin + border + padding + content

注意:
1、width 和 height 对块级有效,对行内无效( img 标签和 input除外,因为他们是行内块)。
2、计算总高度时,应考虑 垂直外边距 合并问题。
3、如果盒子没给宽度, 继承父亲的宽度,则 padding 一般不会影响盒子大小。

你可能感兴趣的:(CSS基础学习第二章)