HTML+CSS+JS 学习笔记(二)———CSS

简介: HTML+CSS+JS 学习笔记(二)———CSS

 🌱博客主页:大寄一场.

🌱系列专栏:

目录

  概念

引入方式

1- 内部(内联)样式表

2- 行内样式(嵌入样式)

3- 外部样式

常用CSS选择器:

1- 元素(标签)名选择器:

2- 类别选择器:

3-ID选择器

4- 包含关系选择器

5- 子元素选择器

6- 属性选择器

7- 伪类选择器

CSS三大特性

层叠性

继承性

优先级

单位基础

尺寸

颜色

常用属性

内容 content

内边距 padding

外边距 margin

边框 border

display

元素分类:

CSS背景样式属性

background-color ( 背景颜色 )

background-image (背景图片)

background-repeat (控制背景平铺)

background-size (控制背景图片大小)

文本相关属性

text-indent ( 缩进文本 )

text-align ( 文本对齐方式 )

color ( 文本颜色 )

line-height (行高)

字体相关

font-family ( 字体系列 )

font-style ( 字体风格 )

font-weight ( 字体加粗 )

font-size ( 字体大小 )

概念

CSS是:层叠样式表,作用是将HTML组件,的内容和样式分开,由HTML标签定义显示内容,由CSS 定义显示样式。

css定义语法:

/*
CSS语法:
选择器 {
样式属性: 属性值;
[样式属性: 属性值;]
...
}
*/
p {
background-color: lightblue;
}

image.gif

引入方式

1- 内部(内联)样式表

内部(内联)样式表:在页面中使用<style>标签定义样式信息

作用域:本页面

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <style>
            p {
                 background-color: lightblue;
              }
        </style>
    </head>
    <body>
        <p> 段落文本1 </p>
        <p> 段落文本2 </p>
        <div> div 文本</div>
    </body>
</html>

image.gif

2- 行内样式(嵌入样式)

行内样式(嵌入样式):在标签中指定style属性,从而指定标签的样式

作用域:本标签

<p style="color:red;"> 段落文本1 </p>

image.gif

3- 外部样式

外部样式:在页面面引入外部定义的*.css文件

作用域:所有引入了css文件的页面

<head>
    <link rel="stylesheet" href="./css/main.css" />
</head>

image.gif

以上三种引入样式优先级:就近原则。

如果样式有冲突,谁的设置离标签越近,则生效越优先,没有样式则会叠加(层叠的意义)

常用CSS选择器:

CSS样式选择方式,决定了CSS属性样式为谁(标签组件)设定

1- 元素(标签)名选择器:

元素(标签)名选择器:使用标签名称作为选择

p, div {
        background-color: lightblue;
        }

image.gif

2- 类别选择器:

类别选择器: .类别 的格式进行选择

/*类别选择器,选择: 指定了标签的class属性 */
.even {
background-color: lightblue;
}
.odd{
background-color: lightgray;
}

image.gif

3-ID选择器

ID选择器:#ID值 的格式进行选择

/* id选择器,选择: 指定了标签的id属性 优先于别的选择器*/
#div4 {
background-color: red;
}

image.gif

4- 包含关系选择器

包含关系选择器: 根据元素的关系进行选择

/* 包含关系: 设定div 包含的 span标签的样式 */
div span{
color: red;
}

image.gif

5- 子元素选择器

子元素选择器:指定子元素的选择器

/* 直接子元素关系 */
div > span{
color: blue;
}

image.gif

6- 属性选择器

/* 属性选择器 */
/* 含有name属性的 */
[name] {
background-color: red;
}
/* 选择name属性='input2'的 */
[name='input2'] {
background-color: red;
}
/* 选择那么属性值包含3字符的 */
[name*='3'] {
background-color: red;
}

image.gif

7- 伪类选择器

伪类选择器:元素自带的状态类型

/* 当鼠标在input组件上悬停时样式 */
input:hover{
background-color: blue;
}
/* 当input组件得到焦点时样式 */
input:focus{
background-color: green;
}

image.gif

CSS三大特性

层叠性

    • 层叠性是指当一个标签被设置了多个重复的样式时,一个属性会覆盖另外一个属性。
    • 主要遵循的原则是就近原则,在不考虑优先级情况下,在多个样式中最终生效的样式是离标签最近的样式。
    • 注意只覆盖同样的不可重复的样式属性,不会覆盖不重复的属 性,不重复的属性会进行合并。

    继承性

      • 继承性是指当子标签没有设置样式时,会继承父标签的样式。
      • 比如一个子标签没有设置背景颜色,那么子标签会继承父标签的 背景颜色。
      • 可继承的属性:字体系列属性(字体系列、字体颜色、字体大 小、字体粗细、字体风等...)、文本系列属性(文本缩进、文本水平对齐、行高、字间隔、字符间距、文本颜色[a元素除外]等...)
      • 注意:子标签不会继承父标签的宽度、高度、边距属性

      优先级

      ! important 关键字 > 行内样式 (元素自身style设置属性) > id选择器 > 伪类选择器 > 类选择器 (class) >

      标签名选择器 > 通配符选择器 > 继承的样式 。(按照从左到右的顺序,优先级是从高到低)

      优先级高的规则会忽视层叠性,忽视就近原则去定义样式。比如定 义!important,即使行内样式离得 近,最终生效的还是! important  标注的属性。

      单位基础

      尺寸

      %百分比是元素相对于父元素在对应尺寸上的百分比值

      px:px (pixel,像素)是一个相对单位,相对的是设备像素(device pixel)。通过设备像素比可以获取1px 在设备上真实的使用的设备像素。

      颜色

      (颜色名) 颜色名称 (比如: red、blue、pink)

      rgb(red, green, blue) rgb颜色函数,此函数接受以下所述的三个参数:

      red:此参数用于定义红色的强度。它是介于0到255之间的整数值,或者是介于0%到100%之间的百分

      比值。

      green:此参数用于定义绿色的强度。它是介于0到255之间的整数值,或者是介于0%到100%之间的百

      分比值。

      blue:此参数用于定义蓝色的强度。它是介于0到255之间的整数值,或者是介于0%到100%之间的百分

      比值。

      rgba(red, green, bluealpha) rgba颜色函数是 rgb 颜色值的扩展,此函数接受以下所述的四个参数:

      RGBA 是代表Red(红色) Green(绿色) Blue(蓝色)和 Alpha(不透明度)三个单词的缩写。RGBA 颜 色值是 RGB 颜色值的扩展,带有一个 alpha 通道 - 它规定了对象的不透明度。

      red:此参数用于定义红色的强度。它是介于0到255之间的整数值。

      green:此参数用于定义绿色的强度。它是介于0到255之间的整数值。

      blue:此参数用于定义蓝色的强度。它是介于0到255之间的整数值。

      alpha此参数用于定义颜色的不透明度。它介于0到1之间(0为完全透明1为完全不透明)。

      十六进制值颜色 十六进制值其实就是将rgb函数中,red、green、blue 0到255的取值转化为00到FF。例

      #ff00ee。

      .box {
      color: #00aaee;
      }

      image.gif

      注意:若十六进颜色r、g、b的值全都两位相等则可以进行缩写:例 #ff00aa 可缩写为 #f0a;#ffffff

      可缩写为 #fff。

      常用属性

      盒子模型:每个元素都有的模型结构

      当对一个文档进行布局(layout)的时候,浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型(CSS

      basic box model,将所有元素表示为一个个矩形的盒子(box)。CSS 决定这些盒子的大小、位置以及

      属性(例如颜色、背景、边框尺寸…)。

      每个盒子由四个部分:边距(margin),边框(border),填充(padding),和实际内容(content)

      我们可以通过浏览器的开发者工具观察页面的元素,会发现每个元素都是一个盒子

      image.gif编辑

      内容 content

      概念:由内容边界限制,容纳着元素的“真实”内容,例如文本、图像,或是一个视频播放器。它的尺寸为内

      容宽度(或称 content-box 宽度)和内容高度(或称 content-box 高度)。它通常含有一个背景颜色(默认

      颜色为透明)或背景图像。

      如果 box-sizing 为 content-box(默认),则内容区域的大小可明确地通过 width、min-width、

      max-width、height、min-height,和 max-height 控制。

      内边距 padding

      概念:由内边距边界限制,扩展自内容区域,负责延伸内容区域的背景,填充元素中内容与边框的间距。它

      的尺寸是 padding-box 宽度 和 padding-box 高度。

      内边距的粗细可以由 padding-top、padding-right、padding-bottom、padding-left,和简写属性

      padding 控制。

      div {
      padding: 5px;
      padding-top: 5px;
      padding-left: 5px;
      padding-right: 5px;
      padding-bottom: 5px;
      }

      image.gif

      外边距 margin

      由外边距边界限制,用空白区域扩展边框区域,以分开相邻的元素。它的尺寸为 margin-box 宽度 和

      margin-box 高度。

      外边距区域的大小由 margin-top、margin-right、margin-bottom、margin-left,和简写属性

      margin 控制。在发生外边距合并的情况下,由于盒之间共享外边距,外边距不容易弄清楚

      div {
      margin: 5px ;
      margin-top: 5px;
      margin-left: 5px;
      margin-right: 5px;
      margin-bottom: 5px;
      }

      image.gif

      边框 border

      概念:由外边距边界限制,内间距外部区域,是容纳边框的区域。

      边框的粗细由 border-width 和简写的 border 属性控制。如果 box-sizing 属性被设为 border-box,

      那么边框区域的大小可明确地通过 width、min-width, max-width、height、min-height,和 max

      height 属性控制。

      假如盒子上设有背景(background-color 或 background-image),背景颜色将会一直延伸至边框的

      外沿,背景图片在边框的内沿。此默认表现可通过 CSS 属性 background-clip 来改变。

      div {
      /* border: 5px solid black; */
      border-top: 5px solid black;
      border-bottom: 5px solid black;
      border-left: 5px solid black;
      border-right: 5px solid black;
      }

      image.gif

      display

      概念:display 属性可以设置元素的内部和外部显示类型。元素的外部显示类型将决定该元素在流式布局中的 表现(块级或内联元素);元素的内部显示类型可以控制其子元素的布局(例如:grid 或 flex)。

             1. 【块级元素】block 元素生成一个块元素作用域,在正常流中生成元素前后的换行符(独占一行)。可

      以设置 width、 height、 margin 和 padding 属性。

             2. 【行内元素】inline 该元素是个内联元素,这些元素不会在其前后生成换行符(不会独占一行)。在正常流中,如果有空间,下一个元素将位于同一行上。设置width,height属性无效。内联元素的margin属 性只在水平方向会生效而padding(除了padding-top)都会生效。

             3. 【行内块元素】inline-block 元素生成一个行内块元素。它将与周围的内容一起流动,元素不再独占一 行但元素具有block的属性,可设置width、 height、 margin 和 padding 属性。

      请注意,对于行内元素来说,尽管内容周围存在内边距与边框,但其占用空间(每一行文字的高度)

      则由 line-height 属性决定,即使边框和内边距仍会显示在内容周围。

      元素分类:

      1- 块级元素(block):自动占满一行,可以设定其大小

      例如:div、p、h1~h6、ul、ol、dl、li、dd、table、hr、table、header、section、footer

      2- 行内元素(inline):不会充满一行,宽度由内容多少决定,高度由字体大小决定,不能设定其大小;

      例如:span、img、a、lable、input、abbr(缩写)、em(强调)、big、cite(引用)、i(斜体)、q (短引用)、textarea、select、small、sub、sup,strong、u(下划线)、button(默认display:inline-block)

      3- 行内块级元素(inline-block): 不会占满一行,而且可以设定其大小;

      例如:img 、input 、td

      可以通过 display属性设置一个元素的分类;

      原则:块级元素可以包含行内元素,而行内元素不能包含块级元素;

      div {
      /* inline、blick、inline-block、none */
      display: inline-block;
      width: 200px;
      height: 200px;
      }

      image.gif

      CSS背景样式属性

      background-color ( 背景颜色 )

      属性定义了 CSS 中任何元素的背景颜色。属性接受任何有效的 <color> 值。背景色扩展到元素的内容和内边距的中

      div {
      background-color: red;
      }
      div {
      background-color: rgb(0, 160, 220);
      }
      div {
      background-color: rgba(0, 160, 220, 0.6);
      }
      div {
      background-color: #FFCC00;
      }
      div {
      background-color: #FC0;
      }

      image.gif

      background-image (背景图片)

      通过 background-image 属性允许在元素的背景中显示图像。

      默认情况下,大图不会缩小以适应元素,因此我们只能看到它的一部分,而小图则是平铺以填充方 框。

      背景颜色和背景图片可以同时设置,背景图片会在背景颜色上方

      .box {
      background-image: url(balloons.jpg);
      }

      image.gif

      background-repeat (控制背景平铺)

      使用 background-repeat 属性可以控制图像的平铺行为

      .box {
      background-image: url(balloons.jpg);
      background-repeat: no-repeat | repeat-x | repeat-y | repeat;
      }

      image.gif

        • no-repeat:不重复平铺图片。
        • repeat-x:水平重复平铺图片。
        • repeat-y:垂直重复平铺图片。
        • repeat (默认):在两个方向重复平铺图片。

        background-size (控制背景图片大小)

        通过 background-size属性,它可以设置长度或百分比值,来调整图像的大小以适应背景.

        .box {
        background-image: url(balloons.jpg);
        background-size: <width> <height> | cover | contain;
        }

        image.gif

          • <width> <height> 分别设置图片的宽度高度可以是长度或百分比值,如果只设置一个值该值将会设
          • 置图片宽度,高度按图片比例进行缩放。
          • cover: 保证宽高比的情况下放大图片占满盒子区域。在这种情况下,有些图像可能会跳出盒子外。
          • contain: 保证宽高比的情况下适应盒子区域。在这种情况下,有些可能在图像的任何一边或顶部和底部 出现间隙。

          文本相关属性

          介绍:在 CSS 中可以通过设置文本属性定义文本的外观。如:改变文本的颜色、字符间距,对齐文本,装饰

          文本,对文本进行缩进,等等。

          text-indent ( 缩进文本 )

          通过使用 text-indent 属性,所有元素的第一行都可以缩进一个给定的长度,甚至该长度可以是负值。

          这个属性最常见的用途是将段落的首行缩进,下面的规则会使所有段落的首行缩进 5 em:

          p {
          text-indent: 5em;
          }

          image.gif

          注意:一般来说,可以为所有块级元素应用 text-indent,但无法将该属性应用于行内元素,图像之类的替换

          元素上也无法应用 text-indent 属性。不过,如果一个块级元素(比如段落)的首行中有一个图像,它会随

          该行的其余文本移动。

          提示:如果想把一个行内元素的第一行“缩进”,可以用左内边距或外边距创造这种效果。

          text-align ( 文本对齐方式 )

          该属性通过指定行框与哪个点对齐,从而设置块级元素内文本的水平对齐方式。

          p {
          text-align: center;
          }

          image.gif

            • left(默认):把文本排列到左边。
            • right: 把文本排列到右边。
            • center: 把文本排列到中间。
            • justify: 实现两端对齐文本效果。(常用于打印输出)
            • inherit: 规定应该从父元素继承 text-align 属性的值。

            color ( 文本颜色 )

            这个属性设置了一个元素的前景色(在 HTML 表现中,就是元素文本的颜色)

            p {
            color: #fc0
            }

            image.gif

              • color_name: 规定颜色值为颜色名称的颜色(比如 red)。
              • hex_number: 规定颜色值为十六进制值的颜色(比如 #ff0000)。
              • rgb_number: 规定颜色值为 rgb 代码的颜色(比如 rgb(255,0,0))。
              • hsl_number: 规定颜色值为 rgb 代码的颜色(比如 hsl(180,100%,50%))。
              • inherit: 规定应该从父元素继承颜色。

              line-height (行高)

              该属性设置行间的距离(行高)。该属性会影响行框的布局。在应用到一个块级元素时,它定义了该元素中

              基线之间的最小距离而不是最大距离。不允许使用负值。

              image.gif编辑

              .small {
              line-height:90%
              }

              image.gif

                • normal(默认):设置合理的行间距。
                • number:设置数字,此数字会与当前的字体尺寸相乘来设置行间距。
                • length:设置固定的行间距。
                • %:基于当前字体尺寸的百分比行间距。
                • inherit: 规定应该从父元素继承 line-height 属性的值。

                字体相关

                font-family ( 字体系列 )

                font-family 规定元素的字体系列。

                p {
                font-family:"Times New Roman",Georgia,Serif;
                }

                image.gif

                有两种类型的字体系列名称:

                指定的系列名称:具体字体的名称,比如:“times”、“courier”、“arial”。

                通常字体系列名称:比如:“serif”、“sans-serif”、“cursive”、“fantasy”、“monospace”

                字体优雅降级:

                使用某种特定的字体系列(Geneva)完全取决于用户机器上该字体系列是否可用;这个属性没有指示

                任何字体下载。因此,强烈推荐使用一个通用字体系列名作为后路。

                所有浏览器都有几种默认字体。这些通用字体包括monospace,serif和sans-serif。

                当字体不可用,你可以告诉浏览器通过 “降级” 去使用其他字体。

                例如,如果你想将一个元素的字体设置成Helvetica,当Helvetica不可用时,降级使用sans-serif字

                体,那么可以这样写:

                p {
                font-family: Helvetica, sans-serif;
                }
                image.gif

                通用字体名字不区分大小写。同时,也不需要使用引号,因为它们是 CSS 关键字。

                font-style ( 字体风格 )

                font-style 属性定义字体的风格,设置使用斜体、倾斜或正常字体。斜体字体通常定义为字体系列中的一个单独的字体

                p.normal {
                font-style:normal;
                }
                p.italic {
                font-style: italic;
                }
                p.oblique {
                font-style: oblique;
                }

                image.gif

                  • normal (默认):浏览器显示一个标准的字体样式。
                  • italic: 浏览器会显示一个斜体的字体样式。
                  • oblique: 浏览器会显示一个倾斜的字体样式。
                    • inherit: 规定应该从父元素继承字体样式。

                    注意:Italic是使用了文字本身的斜体字体,oblique是让没有斜体字体的文字做倾斜处理。所以有少量

                    的不常用字体没有斜体属性,如果我们使用Italic则会没有效果。

                    font-weight ( 字体加粗 )

                    font-weight 属性设置文本的粗细。该属性用于设置显示元素的文本中所用的字体加粗。

                    p.normal {
                    font-weight: normal;
                    }
                    p.thick {
                    font-weight: bold;
                    }
                    p.thicker {
                    font-weight: 900;
                    }

                    image.gif

                      • normal(默认值):定义标准的字符。
                      • bold: 定义粗体字符。
                      • bolder: 定义更粗的字符。
                      • lighter: 定义更细的字符。
                      • 100~900: 定义由粗到细的字符。400 等同于 normal,而 700 等同于 bold。(该属性值只有整百)
                      • inherit: 规定应该从父元素继承字体的粗细。

                      字体粗细属性是根据用户电脑上安装的字体相应匹配改变的。在很多情况下,由于系统作了最相近的

                      匹配,因此看不出不同的 font-weight 值有什么区别

                      font-size ( 字体大小 )

                      该属性设置元素的字体大小。注意,实际上它设置的是字体中字符框的高度;实际的字符字形可能比这些框

                      高或矮(通常会矮)。

                      h1 {
                      font-size: 250%;
                      }
                      h2 {
                      font-size: 2rem;
                      }
                      p {
                      font-size: 18px;
                      }

                      image.gif

                        • length:把 font-size 设置为一个固定的值。
                        • %: 把 font-size 设置为基于父元素的一个百分比值。


                        相关文章
                        |
                        3天前
                        |
                        前端开发 JavaScript UED
                        CSS顶部与JS后写:网页渲染的奥秘
                        CSS顶部与JS后写:网页渲染的奥秘
                        |
                        4天前
                        |
                        移动开发 HTML5
                        HTML5/CSS3粒子效果进度条代码
                        HTML5/CSS3进度条应用。这款进度条插件在播放进度过程中出现粒子效果,就像一些小颗粒从进度条上散落下来
                        19 0
                        HTML5/CSS3粒子效果进度条代码
                        |
                        4天前
                        |
                        前端开发 JavaScript 索引
                        CSS常见用法 以及JS基础语法
                        CSS常见用法 以及JS基础语法
                        14 0
                        |
                        4天前
                        |
                        JavaScript 前端开发
                        js和css以及js制作弹窗
                        js和css以及js制作弹窗
                        12 1
                        |
                        4天前
                        |
                        移动开发 前端开发 JavaScript
                        :掌握移动端开发:HTML5 与 CSS3 的高效实践
                        :掌握移动端开发:HTML5 与 CSS3 的高效实践 “【5月更文挑战第6天】”
                        27 1
                        |
                        4天前
                        |
                        缓存 移动开发 前端开发
                        【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
                        【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
                        |
                        4天前
                        |
                        前端开发 JavaScript 开发者
                        【专栏:HTML与CSS前端技术趋势篇】前端框架(React/Vue/Angular)与HTML/CSS的结合使用
                        【4月更文挑战第30天】前端框架React、Vue和Angular助力UI开发,通过组件化、状态管理和虚拟DOM提升效率。这些框架与HTML/CSS结合,使用模板语法、样式管理及组件化思想。未来趋势包括框架简化、Web组件标准采用和CSS在框架中角色的演变。开发者需紧跟技术发展,掌握新工具,提升开发效能。
                        |
                        4天前
                        |
                        前端开发 JavaScript UED
                        【专栏:HTML 与 CSS 前端技术趋势篇】Web 性能优化:CSS 与 HTML 的未来趋势
                        【4月更文挑战第30天】本文探讨了CSS和HTML在Web性能优化中的关键作用,包括样式表压缩、选择器优化、DOM操作减少等策略。随着未来趋势发展,CSS模块系统、自定义属性和响应式设计将得到强化,HTML新特性也将支持复杂组件构建。同时,应对浏览器兼容性、代码复杂度和性能功能平衡的挑战是优化过程中的重要任务。通过案例分析和持续创新,我们可以提升Web应用性能,创造更好的用户体验。
                        |
                        4天前
                        |
                        移动开发 前端开发 UED
                        【专栏:HTML与CSS前端技术趋势篇】渐进式增强与优雅降级在前端开发中的实践
                        【4月更文挑战第30天】前端开发中的渐进式增强和优雅降级是确保跨浏览器、跨设备良好用户体验的关键策略。渐进式增强是从基础功能开始,逐步增加高级特性,保证所有用户能访问基本内容;而优雅降级则是从完整版本出发,向下兼容,确保低版本浏览器仍能使用基本功能。实践中,遵循HTML5/CSS3规范,使用流式布局和响应式设计,检测浏览器特性,并提供备选方案,都是实现这两种策略的有效方法。选择合适策略优化网站,提升用户体验。
                        |
                        4天前
                        |
                        前端开发 开发者 UED
                        【专栏:HTML与CSS前端技术趋势篇】网页设计中的CSS Grid与Flexbox之争
                        【4月更文挑战第30天】本文对比了CSS Grid和Flexbox两种布局工具。Flexbox擅长一维布局,简单易用,适合导航栏和列表;CSS Grid则适用于二维布局,能创建复杂结构,适用于整个页面布局。两者各有优势,在响应式设计中都占有一席之地。随着Web标准发展,它们的结合使用将成为趋势,开发者需掌握两者以应对多样化需求。