第一节:字体、文本、居中、选择器、背景和img、块级/行内元素、继承性和层叠性

一. 字体

1. 字体大小:font-size

    数字+px,谷歌浏览器默认文字大小是16px

2. 字体粗细:font-weight

  (1). normal(对应400)、bold(对应700)

  (2). 100--900的整百数

3. 字体样式:font-style

   (1). 正常(默认值):normal

   (2). 倾斜:italic

4. 字体类型:font-family

  (1). 常见取值:

       具体字体:"Microsoft YaHei"、微软雅黑、黑体、宋体、楷体等……

       字体系列:sans-serif、serif、monospace等……

   (2). 渲染规则

       从左往右按照顺序查找,如果电脑中未安装该字体,则显示下一个字体

       如果都不支持,此时会根据操作系统,显示最后字体系列的默认字体

5. 字体类型:font属性连写

  (1). 取值:

        font : style weight size family;

        swsf (稍微舒服)

  (2). 省略要求

       只能省略前两个,如果省略了相当于设置了默认值

<style>
    div {
        font-size: 30px;
        font-style: italic;
        font-weight: bold;
        font-family: 'Courier New', Courier, monospace;
        /* 合并写法 */
        /* font: italic bold 30px 楷体, 宋体, 隶书, sans-serif; */
    }
</style>

<body>
    <div>
        哈哈哈哈
    </div>
</body>

 

二. 文本

1. 文本缩进:text-indent

 (1) 数字+px

 (2) 数字+em(推荐:1em = 当前标签的font-size的大小)

2. 文本对齐:text-align

  取值:left、center、right

  注:如果需要让文本水平居中,text-align属性给(文本的父元素)设置

3. 文本修饰:text-decoration

   (1). 下划线 underline

   (2). 删除线 line-through

   (3). 上划线 overline

   (4). 无装饰线:常用于去除a标签的默认下划线【重点】

     /* text-decoration: none; */

 

三. 居中(重点)

(一). 水平居中

1. text-align:center

    对于文本、span、a标签、input、img而言,如果想让其水平居中,需要设置给【其父元素】设置 text-align : center

<head>
    <style>
        .box1 {
            width: 400px;
            height: 250px;
            background-color: pink;
            margin-bottom: 5px;
            text-align: center;
            /* 写法2 */
            /* display: flex;
            justify-content: center;  
            align-items: center; */
        }
    </style>
</head>

<body>
    <div class="box1">
        哈哈哈
    </div>
    <div class="box1">
        <span>哈哈哈</span>
    </div>
    <div class="box1">
        <input type="text">
    </div>
    <div class="box1">
        <img src="./images/1.jpg" alt="">
    </div>
</body>

运行效果: 

2. margin: 0 auto

   想让某个div (或者p、h)居中, 首先该div需要有width和height,然后给其【自身】设置 margin:0 auto   【分析:0代表竖直方向,可以不为零的,auto代表水平居中】

   注意:这里的效果是该div居中了,并不是div中的内容居中了,如果让div中的文字居中,还是要借助text-aligin:center

 <style>
        .box2 {
            width: 400px;
            height: 250px;
            background-color: green;
        }

        .boxSon2 {
            width: 100px;
            height: 100px;
            background-color: antiquewhite;
            margin: 0 auto;
        }
</style>
<div class="box2">
   <div class="boxSon2">哈哈哈</div>
</div>

运行效果:

3. flex布局

   display: flex;

   justify-content: center;   //主轴的排列方式,居中

(二). 竖直居中

1. line-height: 等于height

   可以通过设置标签的行高line-height=height,可以使用标签内的单行文本竖直居中


<style>
        .box3 {
            width: 400px;
            height: 250px;
            background-color: palegoldenrod;
            line-height: 250px;
        }
</style>
<div class="box3">哈哈哈</div>

运行结果:

2. flex布局

    display: flex;

    align-items: center;  //侧轴上的排列方式, 居中

 

四. 选择器

1. 后代选择器

   选择器与选择器之前通过 "空格" 隔开

   (1).语法:选择器1 选择器2 { css }

   (2).结果:在选择器1所找到标签的后代(儿子、孙子、重孙子…)中,找到满足选择器2的标签,设置样式

2. 子代选择器

    选择器和选择器之间通过  >  隔开

    (1).语法:选择器1 > 选择器2 { css }

    (2).结果:在选择器1所找到标签的子代(儿子)中,找到满足选择器2的标签,设置样式

3. 并集选择器

    同时选择多组标签,设置相同的样式

    (1).语法:选择器1 , 选择器2 { css }

    (2).结果:找到 选择器1 和 选择器2 选中的标签,设置样式

4. 交集选择器

    选中页面中 同时满足 多个选择器的标签

    (1).语法:选择器1选择器2 { css }

    (2).结果:(既又原则)找到页面中 既 能被选择器1选中,又 能被选择器2选中的标签,设置样式

5. 伪类选择器

    (1).语法:选择器:hover { css }

    (2).结果:选中鼠标悬停在元素上的状态,设置样式

补充:4个伪类选择符,分别是link、visited、hover、active,分别代表没有点击过、访问过、鼠标悬浮在上面、鼠标点击不松手

代码分享:

<style>
    /*  1.后代选择器 */
    .c1 div {
      color: red;
    }

    /*2. 子代选择器  */
    .c2>div {
      color: red;
    }

    /*3.并集选择器  */
    .c3 .c31,
    .c3 .c32 {
      color: pink;
    }

    /* 4.交集选择器*/
    p.red {
      color: red;
    }

    /* 5.伪类选择器  */
    .c5 a:hover {
      color: yellow;
    }
  </style>
</head>

<body>
  <!-- 1.后代选择器 -->
  <div class="c1">
    <div>
      <div>后代选择器</div>
    </div>
  </div>
  <!-- 2. 子代选择器 -->
  <div class="c2">
    <div>子代选择器</div>
  </div>
  <!--3.并集选择器  -->
  <div class="c3">
    <div class="c31">并集选择器1</div>
    <div class="c32">并集选择器2</div>
  </div>
  <!-- 4.交集选择器 -->
  <div>
    <div class="red">小姐姐不变色</div>
    <p>小帅哥不变色</p>
    <p class="red">小可爱不变色</p>
  </div>
  <!-- 5. 伪类选择器 -->
  <div class="c5">
    <a href="">伪类选择器 </a>
  </div>

</body>

 

五. 背景和img

(更详细的background介绍详解:https://www.cnblogs.com/yaopengfei/p/16284945.html)

(一). 背景相关

1. 背景颜色 background-color

    (1). 取值:关键字、rgb表示法、rgba表示法、十六进制

    (2). 背景颜色默认值是透明: rgba(0,0,0,0) 、transparent

2. 背景图片 background-image

    (1). 取值:url('路径....')

注:

      背景图片中url中可以省略引号

      背景图片默认是在水平和垂直方向平铺的

      背景图片仅仅是指给盒子起到装饰效果,类似于背景颜色,是不能撑开盒子的!!

3. 背景平铺 background-repeat 【重点,需要看各种效果】

     取值:

      repeat:   默认值,水平竖直方向都平铺

      no-repeat: 不平铺

      repeat-x: 水平方向平铺

      repeat-y: 竖直方向平铺

特别注意:背景平铺并不能撑开盒子,比如height为500px,图片自身高度为200px,竖直方向平铺,则为两个多一点

4. 背景位置 background-position

      取值: background-position:水平方向位置  竖直方向位置

      每个位置的取值为:left center right

5. 组合写法

      background:color image repeat position

代码分享:

<style>
    .c1 {
        width: 800px;
        height: 500px;
        background-color: pink;
        background-image: url(./images/1.jpg);
        background-repeat: no-repeat;
        background-position: center right;
        /* 下面是组合写法 */
        /* background: pink url(./images/1.jpg) no-repeat center right; */
    }

</style>

<body>
    <div class="c1"></div>
</body>

运行效果:

 如果把 /* background-repeat: no-repeat; */        /* background-position: center right; */  都注释掉,则水平和竖直方向都平铺

如果改为  background-repeat: repeat-x; 水平方向平铺

(二).  img和背景图片的区别

1. img

   img标签是一个标签,不设置宽高默认会以原尺寸显示,可以对其直接设置宽、高

2. background-image

   需要设置div的宽高,因为背景图片只是装饰的CSS样式,不能撑开div标签,背景图片默认就是图片自身的大小 

   设置div的宽高,让其和图片的宽高相同

<style>
    /* img标签可以直接对其设置宽高 */
    .myImg1 {
        width: 350px;
        height: 350px;
    }

    /* div+背景,需要将div的宽高设置成和图片的宽高相同 */
    .c2 {
        width: 200px;
        height: 200px;
        background-image: url(./images/1.jpg);
        background-repeat: no-repeat;
    }
</style>
<body>
    <img src="./images/1.jpg" class="myImg1">
    <div class="c2"></div>
</body>

运行效果:

 

六. 块级/行内元素

1. 块级元素

(1).属性: display:block

(2).特点:

       A. 独占一行,即一行只能显示一个

       B. 可以设置width和height

       C. width默认是父元素的宽度,height默认由内容撑开

(3). 代表标签

       div、p、h系列、ul、li (dl、dt、dd、form、header、nav、footer……)

2. 行内元素

(1). 属性: display : inline

(2). 特点:

       A. 一行可以显示多个

       B. 不可以设置width和height,即设置无效

       C. width和height默认由内容撑开

(3). 代表标签

       a标签、span标签 (b、u、i、s、strong、ins、em、del……)

3. 行内块元素

(1). 属性: display:inline-block

(2).  特点:

       A. 一行可以显示多个

       B. 可以设置width和height

(3).  代表标签

     img、 input、textarea、button、select……

注意:img标签有行内块元素特点,但是Chrome调试工具中显示结果是inline

总结:上述块级元素、行内元素、行内块元素的特点也就是标准文档流的特点。

4. 相互转换

    (1). xxx转换成块级元素,设置为:display:block

    (2). xxx转换成行内块元素,设置为:display:inline-block

    (3). xxx转换成行内元素, 设置为:display:inline  【使用频率低】

代码分享

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .c1 {
            width: 100px;
            height: 100px;
            background-color: antiquewhite;
        }

        .c2 {
            background-color: aqua;
            /* 注意:块级元素设置宽度和高度是无效的 */
            width: 100px;
            height: 100px;
        }

        .c3 {
            width: 180px;
            height: 50px;
        }

        .c4 {
            width: 280px;
            height: 250px;
        }

        .c5 {
            background-color: aqua;
            display: block;
            /* 注意:转换为块级元素后,设置高度和宽度就有效了 */
            width: 100px;
            height: 100px;
        }

        .c6 {
            background-color: pink;
            /* float: left; */
            display: flex;
            /* 注意:设置浮动、固定/绝对定位、flex布局,设置高度和宽度就有效了 */
            width: 100px;
            height: 100px;
        }
    </style>
</head>

<body>
    <!-- 1.块级元素 -->
    <div class="c1">我是块级元素</div>
    <div class="c1">我是块级元素</div>
    <div class="c1">我是块级元素</div>
    <!-- 2. 行内元素 -->
    <span class="c2">我是行内元素</span>
    <span class="c2">我是行内元素</span>
    <span class="c2">我是行内元素</span>
    <br>
    <!-- 3. 行内块元素 -->
    <input type="text" placeholder="我是行内块元素" class="c3">
    <input type="text" placeholder="我是行内块元素" class="c3">
    <input type="text" placeholder="我是行内块元素" class="c3">
    <br>
    <img src="./images/1.jpg" class="c4">
    <img src="./images/1.jpg" class="c4">
    <img src="./images/1.jpg">

    <!-- 4. 行内元素转换成块级元素 -->
    <span class="c5">我是行内元素</span>
    <span class="c5">我是行内元素</span>
    <span class="c5">我是行内元素</span>
    <br>

    <!-- 5. 行内元素想让宽度和高度生效 -->
    <span class="c6">我是行内元素</span>
    <span class="c6">我是行内元素</span>
    <span class="c6">我是行内元素</span>

</body>
View Code

效果

 

七. 继承性和层叠性

1. 继承性

(1). 说明:子元素有默认继承父元素样式的特点(子承父业)

(2). 范围:

     A. color

     B. text-xx 开头:text-indent、text-align

     C. line-xx 开头:line-height

     D. font-xx 开头:font-style、font-weight、font-size、font-family

注意:关于盒子的、定位的、布局的都不能继承

(3). 好处

     可以在一定程度上减少代码

(4). 常见应用场景:

     A. 可以直接给ul设置 list-style:none 属性,从而去除列表默认的小圆点样式

     B. 直接给body标签设置统一的font-size,从而统一不同浏览器默认文字大小

(5). 继承失效的特殊情况

  如果元素有浏览器默认样式,此时继承性依然存在,但是优先显示浏览器的默认样式

  A. a标签的color会继承失效

        其实color属性继承下来了,但是被浏览器默认设置的样式给覆盖掉了

  B. h系列标签的font-size会继承失效

      其实font-size属性继承下来了,但是被浏览器默认设置的样式给覆盖掉了

 C. div的高度不能继承,但是宽度有类似于继承的效果

<style>
  .father {
    color: red;
    font-size: 20px;
    width: 400px;
    height: 400px;
    background-color: skyblue;
  }

  .son {
    /* width: 100px; */
    height: 100px;
    background-color: orange;
  }
</style>

<body>
  <div class="father">
    <!-- 1、a标签的文字颜色会继承失效 -->
    <a href="#">我是一个a标签</a>

    <!-- 2、h系列标签的font-size会继承失效 -->
    <h1>我是一个h1标签</h1>

    <!-- 3、div标签的高度不能继承,但是宽度有类似于继承的效果 -->
    <div class="son">son</div>
  </div>
</body>

运行效果: 

 

2. 层叠性

(1). 给同一个标签设置不同的样式 → 此时样式会层叠叠加 → 会共同作用在标签上

(2). 给同一个标签设置相同的样式 → 此时样式会层叠覆盖 → 最终写在最后的样式会生效

注意点:当样式冲突时,只有当选择器优先级(权重)相同时,才能通过层叠性判断结果

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 

 

posted @ 2022-05-05 21:21  Yaopengfei  阅读(291)  评论(1编辑  收藏  举报