小白web前端开发--学习笔记三

css基础知识

css简介

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。

要深刻理解层叠样式表,样式表说明css是负责美化网页的;而层叠表示网页可以定义多层样式,样式可以被覆盖而不会被干掉。

css样式的3种用法

  1. 在标签中使用style属性,如下:

    <h1 style="color:red;">Hello,World</h1>

  2. 在头部的style标签中定义:

    <style>
    p {
    color: blue;
    }
    </style>

  3. 在头部通过link标签引用外部css文件,如:

    <link rel="stylesheet" href="01.css">

css的3种基础选择器

1. html选择器

用法:在style属性中直接利用标签进行设置,如下:

p {
    color: red;
}

需要注意的点:

通过html标签名来选择元素

  1. 所有的html标签都可以当做选择器

  2. 无论标签藏多深都会被选中

  3. 选择的是所有的标签而不是具体某个标签。所以说我们通过html标签选择器来设置的都是一些共性问题。

2.      . class选择器

用法:对标签的class名进行设定。

.class{
    color:blue;
}

需要注意的点:

1.任何的标签都可以使用class属性(class属性也是一个全局属性)

2.class属性名可以重复使用

3.一个class属性中,可以有多个class属性值。

3. id选择器

用法:利用标签的id属性进行设定:

#id{
    color:blue;
}

需要注意的点:

  1. 任何的标签都可以有id属性和属性值(因为id是一个全局属性)。id命名不能随意的命名。
    大小写敏感 ,id的名字中可以有数字字母下划线,但是要以字母开头。
    驼峰命名法分为小驼峰命名和大驼峰命名 。
    testHeader是小驼峰,TestHeader是大驼峰,或test-header也行

  2. id名不能重复,id名是唯一的。

综合选择器

后代选择器

如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        /*后代选择器,选中所有的后代的span标签*/
        .d1 span {
            color: blue;
        }
    </style>
</head>
<body>
    <div class="d1">
        <span>我是儿子span</span>
        <div class="son">
            <span>我是孙子span</span>
            <div class="d2">
                <span>我是重孙span</span>
            </div>
        </div>
    </div>
</body>
</html>

设定div标签的所有p标签为红色。

交集选择器

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        /*选中div,并且这个div的class名叫d1*/
        div.d1 {
            color: red;
        }
    </style>
</head>
<body>
    <div class="d1">我是第一个div</div>
    <div class="d1">我是第二个div</div>
</body>
</html>

选中div标签中有特定名字的div标签

并集选择器

例:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .d1,p,em {
            color: red;
        }
    </style>
</head>
<body>
    <div class="d1">我是div标签</div>
    <em>我是em标签</em>
    <p>我是p标签</p>
</body>
</html>

选定需要设置相同样式的所有标签

子元素选择器

例:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        #fa>em {
            color: red;
        }
    </style>
</head>
<body>
    <div id="fa">
        <em>我是二级em</em>
        <div class="son">
            <em>我是三级em</em>
            <div>
                <em>我是四级em</em>
            </div>
        </div>
    </div>
</body>
</html>

序列选择器

例:

<!DOCTYPE html>
<html lang="en">
<head>
    meta charset="UTF-8">
    title>Document</title>
    <style>
        ul li:first-child {
            color: red;
        }
        ul li:last-child {
            color: blue;
        }
    </style>
</head>
<body>
    <ul>
        <li>li1</li>
        <li>li2</li>
        <li>li3</li>
        <li>li4</li>
        <li>li5</li>
    </ul>
</body>
</html>

相邻兄弟选择器和普通兄弟选择器

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
    /*相邻兄弟选择器*/
        div + p {
            color: red;
        }
    /*普通兄弟选择器*/
        div ~ p {
            color: red;
        }
    </style>
</head>
<body>
    <div>我是div</div>
    <p>我是p标签</p>
    <p>我是第二个p标签</p>
</body>
</html>

继承和层叠

  1. .继承:父元素的某些css属性会被子元素无条件的继承过去。
    关于文字的css属性都可以进行继承,如color,text-,line-,font-等
  2. 层叠:层叠解决的是css冲突的问题。
    比较权重来解决层叠问题。
    !important 能够把”单独属性”的权重变为无限大。 尽量少用。

选择器冲突

  1. html选择器,class选择器,id选择器的权重是id>class>html。因此单个的这3中选择器发生冲突时以id属性定义的样式为准。如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
        /*谁更精确就听谁的*/
            div {
                color: blue;
            }
            #test {
                color: green;
            }
            .d1 {
                color: red;
            }
        </style>
    </head>
    <body>
        <div class="d1" id="test">我是div标签</div>
    </body>
    </html>
    

    此时显现的颜色为green。

  2. 当这3种选择器的数量不一样,则将id,class,html这3种选择器的数量依次进行比较,权重大者获胜。如:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
        /*id  class html选择器的权重比较*/
            #box1 .hei2 p {  /* 1   1   1*/
                color: red;
            }
            div div #box3 p {  /*1  0  3*/ 
                color: green;
            }
            div.he1 div.he2 div.he3 p { /*0 3 4 */ 
                color: blue;
            }
        </style>
    </head>
    <body>
        <div class="he1" id="box1">
            <div class="he2" id="box2">
                <div class="he3" id="box3">
                    <p>文字颜色</p>
                </div>
            </div>
        </div>
    </body>
    </html>
    

    经过权重比较后,文字颜色为red。

  3. 若权重相同,则采用覆盖原理,写在后面的样式会覆盖前面的样式。
    如:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            /*两种样式的权重一样,后面的会覆盖前面的*/
            #box1 .he2 p {
                color: red;
            }
            #box2 .he3 p {
                color: blue;
            }
        </style>
    </head>
    <body>
        <div class="he1" id="box1">
            <div class="he2" id="box2">
                <div class="he3" id="box3">
                    <p>文字颜色</p>
                </div>
            </div>
        </div>
    </body>
    </html>
    

    此时文字颜色为blue。

  4. 若选择器没有直接选中,则谁描述的详细谁获胜,如:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            #he3 {
                color: blue;
            }
            #he1 #he2 {
                color: red;
            }
        </style>
    </head>
    <body>
        <div class="box" id="he1">
            <div class="box" id="he2">
                <div class="box" id="he3">
                    <p>猜猜这是什么颜色?</p>
                </div>
            </div>
        </div>
    </body>
    </html>
    

    此时虽然#he1 #he2的权重大于#he3,但#he3描述的更详细。因此文本颜色为blue。

综上:选择器的选择问题可以用下图表示:

权重比较

块级元素和行内元素

  1. 行内元素部不能够设置宽度和高度。行内元素的宽度和高度是标签内容的宽度和高度。块级元素可以设置宽度和高度。
  2. 块级元素会独占一行。而行内元素却不能够独占一行,只能和其他的行内元素共用一行。
  3. 如果块级元素不设置宽度,那么块级元素会自动的占满父元素的全部宽度。
  4. 常用的块级元素有div, form, table, header, aside, section, article, figure, figcaption, h1~h6, nav, p, pre, blockqoute, canvas, ol, ul, dl。常用的行内元素有span, a, img, label, input, select, textarea, br, i, em, strong, small, button, sub, sup, code。
  5. 行内元素和块级元素之间的转换

    • 行转块–>block
    • 块转行–>inline
    • 行内块元素–>inlin-block
      如下代码:

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Document</title>
          <style>
              .d0 {
                  width: 300px;
                  height: 300px;
                  background-color: red; /*背景颜色*/
                  display: inline; /*把块级元素变成了行内元素*/ 
              }
              .s1 {
                  width: 300px;
                  height: 300px;
                  background-color: blue;
                  display: block;/*将行内元素变成块级元素*/
              }
      
              em {
                  width: 300px;
                  height: 300px;
                  background-color: green;
                  display: inline-block; /*行内块元素*/
              }
      
              .d1 {
                  width: 300px;
                  height: 300px;
                  background-color: red;
                  display: inline-block;
                  /*float: left;浮动*/
              }
              .d2 {
                  width: 300px;
                  height: 300px;
                  background-color: blue;
                  display: inline-block;
                  /*float: left;*/
              }
              body {
                  background-color: #000;
              }
          </style>
      </head>
      <body>
          <div class="d0">Hello,Div</div>
          <span class="s1">hello,Span</span>
          <em>hello,Em</em>  
           <a href="##">百度</a>
          <hr>
          <div class="d1"></div> 
          <div class="d2"></div>
      
      </body>
      </html>
      
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值