CSS3(Web前端开发笔记第二期)

p.s.这是萌新自己自学总结的笔记,如果想学习得更透彻的话还是请去看大佬的讲解

目录

CSS:层叠样式表,是一种样式表 语言,用来描述HTML文档的呈现(美化内容)

书写位置:title标签下方添加style双标签,style标签里面书写CSS代码

.

选择器

作用:查找标签,设置样式

基础选择器:

标签选择器

类选择器

id选择器

通配符选择器

标签选择器

使用标签名作为选择器,即选中同名标签设置相同的样式

例如p、h1、div、a、img

举例

html 复制代码
    <title>Title</title>

    <!-- 特点:选中同名标签设置相同的格式,无法差异化同名标签 -->
    <style>
        p{
            color: red;
        }
    </style>

</head>
<body>

<p>这是第一个段落</p>
<p>这是二个段落</p>

</body>

类选择器

查找标签,差异化设置标签的显示效果

html 复制代码
    <title>Title</title>

    <!--一个类选择器可以给多个标签使用-->
    <style>
        .red{
            color: red;
        }

        .size{
            font-size: 35px;
        }
    </style>

</head>
<body>

<!--一个标签可以使用多个类名-->
<p class="red size">这是第一个段落</p>
<p class="red">这是二个段落</p>

</body>

id选择器

查找标签,差异化设置标签的显示效果

id选择器一般配合js使用,很少用来设置CSS样式

同一个id选择器在一个页面只能使用一次

html 复制代码
    <title>Title</title>

    <style>
        #red{
            color: red;
        }
    </style>

</head>
<body>

<p id="red">这是第一个段落</p>
<p>这是二个段落</p>

</body>

通配符选择器

查找页面所有标签,设置相同样式

不需要调用,浏览器查找页面所有标签,设置相同样式

html 复制代码
    <title>Title</title>

    <style>
        *{
            color: red;
        }
    </style>

</head>
<body>

<p>这是第一个段落</p>
<p>这是二个段落</p>

</body>

复合选择器

由两个或多个基础选择器,通过不同的方式组合而成

作用:更准确、更高效的选择目标元素(标签)

后代选择器

后代选择器:选中某元素的后代元素

语法:父选择器 子选择器{CSS属性}

举例

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div span{
            color: skyblue;
        }
        div p span{
            color: fuchsia;
        }
    </style>

</head>
<body>

<span>span 标签</span>

<div>
    <span>div标签中的span标签</span>

    <p>
        <span>div标签中的p标签中的span标签</span>
    </p>
</div>

</body>

结构伪类选择器

作用:根据标签的结构关系查找元素

:nyh-child(公式)

作用:根据元素的结构关系查找多个元素

举例

html 复制代码
 <style>
        li:first-child{
            color: aqua;
        }
        li:last-child{
            color: red;
        }
        li:nth-child(2){
            color: blue;
        }

        li:nth-child(2n){
            background-color: green;
        }
        li:nth-child(5n){
            background-color:pink;
        }
        li:nth-child(n+5){
            font-family: 楷体;
        }
    </style>

</head>
<body>

<ul>
    <li>li 1</li>
    <li>li 2</li>
    <li>li 3</li>
    <li>li 4</li>
    <li>li 5</li>
    <li>li 6</li>
    <li>li 7</li>
</ul>

伪元素选择器

作用:创建虚拟元素(伪元素),用来摆放装饰性的内容

注意点:

content:"",用来设置伪元素的内容,如果没有内容,则引号留空即可

伪元素默认是行内显示模式 (宽高属性)

权重和标签选择器相同

举例

html 复制代码
<style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        div:before{
            content: "伪元素";
        }

        div:after{
            content: "伪元素";
        }
    </style>



</head>
<body>

<div>真元素</div>

</body>

子代选择器

子代选择器:选中某元素的子代元素(最近的子级)

语法:父选择器>子选择器{CSS属性}

举例

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div>span{
            color: skyblue;
        }

    </style>

</head>
<body>

<span>span 标签</span>

<div>
    <span>div标签中的span标签</span>
    <p>
        <span>div标签中的p标签中的span标签</span>
    </p>
</div>

</body>
并集选择器

并集选择器:选中多组标签设置相同的样式

语法:选择器1,选择器2,...,选择器n

举例

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div,
        span,
        p{
            color: skyblue;
        }

    </style>

</head>
<body>

<span>span标签</span>
<div>div标签</div>
<p>p标签</p>

</body>
交集选择器

交集选择器:选中同时满足多个条件的元素

语法:选择器1选择器2{CSS属性}

举例

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p.box{
            color: skyblue;
        }
    </style>

</head>
<body>

<p class="box">p+box类标签</p>
<div class="box">div+box标签</div>
<p>p标签</p>

</body>
伪类选择器

伪类选择器:伪类表示元素状态,选中元素的某个状态设置样式

鼠标悬停状态:选择器:hover{CSS属性}

举例

html 复制代码
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div:hover{
            color: skyblue;
        }
        .box:hover{
            color: fuchsia;
        }
    </style>

</head>
<body>

<div>div标签</div>
<div class="box">div+box标签</div>

</body>

画盒子

html 复制代码
  <title>Title</title>
  <style>
    .box1{
      width: 100px;
      height: 100px;
      background-color: aqua;
    }
    .box2{
      width: 150px;
      height: 150px;
      background-color: fuchsia;
    }
  </style>

</head>
<body>

<div class="box1">div1</div>

<div class="box2">div2</div>

</body>

字体

字体大小

html 复制代码
  <title>Title</title>
  <style>
    p{
      /* 必须有单位,否则不生效 */
      font-size:30px;
    }
  </style>

</head>
<body>

<p>测试字体大小</p>

</body>

字体加粗

字体倾斜

html 复制代码
  <title>Title</title>
  <style>
    p{
      font-style: italic;/* 倾斜 */
    }
    div{
      font-style: normal;/* 清除倾斜 */
    }
  </style>

</head>
<body>

<p>测试字体倾斜</p>
<div>测试字体</div>

</body>

行高

设置多行文本的间距


html 复制代码
  <title>Title</title>
  <style>
    p{
      line-height: 30px;
    }

  </style>

</head>
<body>

<p>《泰拉瑞亚》是冒险之地!是神秘之地!是可让你塑造、捍卫、享受的大地。在《泰拉瑞亚》,你有无穷选择。手指发痒的动作游戏迷?建筑大师?收藏家?探险家?每个人都能找到自己想要的。
  从建造基本的藏身之处开始,接着挖掘矿石及其他资源。探索并制作超过 500 种各式魔法、远程、近战、和召唤武器,以及盔甲,借助它们与数百种不同的敌怪战斗。很快,你将直面十多个巨大的 Boss。
  还可以去钓鱼、骑上坐骑、找寻漂浮岛、为 NPC 建造房屋,有很多很多事情可以做。</p>


</body>

当行文字垂直居中(不是水平居中):使行高属性值等于盒子高度属性值

html 复制代码
  <title>Title</title>
  <style>
    div{
      height: 100px;
      background-color: skyblue;

      line-height: 100px;
    }

  </style>

</head>
<body>

<div>《泰拉瑞亚》</div>

</body>

字体族

html 复制代码
  <title>Title</title>
  <style>
    div{
      font-family: 楷体;
    }
  </style>

</head>
<body>

<div>测试字体楷体</div>
<p>测试字体</p>

</body>

font属性

通常在设置网页文字公共样式时使用

font是一个复合属性,即属性的简写方式,一个属性对应多个值的写法,各个属性值之间用空格隔开

语法:(必须按顺序书写!)

html 复制代码
div {
    font:是否倾斜 是否加粗 字号/行高 字体;
}

字号和字体值必须书写,否则font属性不生效

html 复制代码
  <title>Title</title>
  <style>
    div{
      /* 文字倾斜、文字加粗、字体大小、行高、字体类型 */
      font: italic 700 20px 楷体;
    }
  </style>

</head>
<body>

<div>测试字体楷体</div>
<p>测试字体</p>

</body>

文本缩进

html 复制代码
  <title>Title</title>
  <style>
    p{
      text-indent: 2em;
    }

  </style>

</head>
<body>

<p>《泰拉瑞亚》是冒险之地!是神秘之地!是可让你塑造、捍卫、享受的大地。在《泰拉瑞亚》,你有无穷选择。手指发痒的动作游戏迷?建筑大师?收藏家?探险家?每个人都能找到自己想要的。
  从建造基本的藏身之处开始,接着挖掘矿石及其他资源。探索并制作超过 500 种各式魔法、远程、近战、和召唤武器,以及盔甲,借助它们与数百种不同的敌怪战斗。很快,你将直面十多个巨大的 Boss。
  还可以去钓鱼、骑上坐骑、找寻漂浮岛、为 NPC 建造房屋,有很多很多事情可以做。</p>

</body>

文本、图片对齐

html 复制代码
  <title>Title</title>
  <style>
    p{
      text-align: right;
    }

    div{
      text-align: center;
    }

  </style>

</head>
<body>

<p>《泰拉瑞亚》</p>
<hr>
<div>《泰拉瑞亚》</div>

<div>
  <img src="kirara.jpg">
</div>

</body>

文本修饰线

html 复制代码
  <title>Title</title>
  <style>
    p{
      text-decoration: underline;
    }
  </style>

</head>
<body>

<p>测试文字下划线</p>
<div>测试文字</div>

</body>

文字颜色

CSS三大特性

CSS特性:化简代码/定位问题,并解决问题

继承性、层叠性、优先级



背景属性

网页中,使用背景图实现装饰性的图片效果

注意:关键字取值方式写法,可以颠倒取值顺序

可以只写一个关键字,另一个方向默认为居中;数字只写一个值表示水平方向,垂直方向为居中

举例

html 复制代码
<style>
        div {
            width: 400px;
            height: 400px;
            background-color: fuchsia;
            /*背景图默认是平铺的效果*/
            background-image: url("background.png");

            /*在盒子上方显示背景图*/
            background-repeat: no-repeat;

            /*background-repeat: repeat;*/
            /*background-repeat: repeat-x;*/
            /*background-repeat: repeat-y;*/

            /* 左上角 */
            /*background-position: left top;*/
            /* 右下角 */
            background-position: right bottom;
            /*也可以用xy坐标进行位置选定*/
        }
    </style>



显示模式

显示模式:标签(元素)的显示模式

作用:布局网页的时候,根据标签的显示模式选择合适的标签摆放内容

块级元素:

独占一行

宽度默认是父级的100%

添加宽高属性生效

.

如div标签
行内元素

一行可以共存多个元素

尺寸由内容长度决定

添加宽高属性不生效

.

如span标签
行内块元素

一行可以共存多个元素

尺寸由内容大小决定

添加宽高属性生效

.

如img标签

盒子模型

作用:布局网页,摆放盒子和内容

盒子模型一般由一下部分组成

  1. 内容区域:width & height
  2. 内边距:padding(出现在内容与盒子边缘之间)
  3. 边框线:border
  4. 外边距:margin(出现在盒子外面)
    举例
html 复制代码
    <style>
        div{
            width: 200px;
            height: 200px;
            background-color: pink;

            padding: 10px;
            border: 1px solid blue;
            margin: 50px;
        }

    </style>

</head>
<body>

<div>div标签</div>

</body>

边框线

属性名:border

属性值:边框线粗细 线条样式 颜色(不区分顺序)

设置单方向边框

属性名:border-方位名词

属性值:边框线粗细 线条样式 颜色(不区分顺序)

内边距

作用:设置内容与盒子边缘之间的距离

属性名:padding/padding-方位名词

外边距

作用:拉开两个盒子之间的距离

属性名:margin

与padding属性值写法、含义相同

尺寸计算

默认情况:

盒子尺寸 = 内容尺寸+border尺寸+内边距尺寸

结论:给盒子加border/padding会撑大盒子

使用内减模式解决:box-sizing:border-box

清楚默认样式

清楚标签默认的样式,比如默认的外边距

元素溢出

作用:控制溢出的元素的内容的显示方式

属性名:overflow

圆角

作用:设置元素的外边框为圆角

属性:border-radius

属性值:数字+px/百分比

属性值即为圆角半径

常见应用

正圆形状:给正方形盒子设置圆角属性值为宽高的一半

胶囊形状:给长方形盒子设置圆角的属性值为盒子高度的一半

阴影

作用:给元素设置阴影效果

属性名:box-shadow

属性值:x轴偏移量 y轴偏移量 模糊半径 扩散半径 颜色 内外阴影

举例

html 复制代码
    <style>

        *{
            /*清楚默认内外边距*/
            margin: 0;
            padding: 0;

            /*内减模式*/
            box-sizing: border-box;
        }
        #div1{
            width: 200px;
            height: 200px;
            background-color: pink;

            /*内边距*/
            padding: 10px;
            /*padding-top: 50px;*/

            /*边框线*/
            border: 1px solid blue;
            /*border-left: pink;*/

            /*外边距*/
            margin: 50px;

            /*设置圆角*/
            /*border-radius: 10px;*/
            /*分别设置四个圆角*/
            border-radius: 10px 20px 10px 20px;

        }

        li{
            /*去除列表的项目符号*/
            list-style: none;
        }

        #div2{
            width: 200px;
            height: 200px;
            background-color: red;

            overflow: scroll;
        }

    </style>

</head>
<body>

<div id = "div1">div标签</div>

<div id = "div2">fbudsifagiufgeabfjsdkfalheuhfuvbfjdkhfieryiqgffbduvbsjkhfurhfsjk
fehufhuiefyiwuahfeuawihfeuwifhaweuifheaufheiabnvfcoJDi
    eowhfalfjieoahbzlfuaeiwl</div>

</body>

外边距问题--合并现象

场景:垂直排列的兄弟元素,上下margin会合并

现象:取两个margin中的较大值生效

外边距问题--塌陷问题

场景:父子级的标签,子级的添加上外边距会产生塌陷问题

现象:导致父级一起向下运动

解决方法:

取消子级margin,父级设置padding

父级设置overflow:hidden

父级设置border-top

行内元素-内外边距问题

场景:行内元素添加margin和padding,无法改变元素垂直位置

解决方法:给行内元素添加line-height可以改变垂直位置




浮动

标准流也叫文档流,指的是标签在页面中默认的排布规则,例如块元素独占一行,行内元素可以一行显示多个

浮动的本质作用是实现图文混排效果

浮动:让块元素水平排列

属性值:float

属性值

left:左对齐

right:右对齐

举例

html 复制代码
<style>
        /*特点:顶对齐,具备行内块显示模式特点;浮动的盒子会脱离标准流(即脱标)*/
        .one{
            width: 100px;
            height: 100px;
            background-color: red;

            float: left;
        }
        .two{
            width: 200px;
            height: 200px;
            background-color: orange;

            /*float: right;*/
        }
    </style>

</head>
<body>

<div class="one">第一个盒子</div>
<div class="two">第二个盒子</div>


</body>

清除浮动

场景:浮动元素会脱标,如果父级没有高度,子级无法撑开父级高度(可能导致页面布局错乱)

解决方法:清除浮动(清除浮动带来的影响)

.

方法一:额外标签法

在父级元素内容的最后一个添加一个块级元素,设置CSS属性clear:both

.

方法二:单伪元素法

html 复制代码
.clearfix ::after{
          content: "";
           display: block;
           clear: both;
       }

.

方法三:双伪元素法(推荐)

html 复制代码
.clearfix ::before
       .clearfix ::after{
           content: "";
           display: table;
       }
       .clearfix ::after{
            clear: both;
        }

方法四:overflow

父元素添加CSS属性overflow:hidden

Flex布局

Flex布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力

Flex模型不会产生浮动布局中脱标现象,布局页面更简单、更灵活

设置方式:给父元素设置display:flex。子元素可以自动挤压或拉伸

  1. 组成部分:
  2. 弹性容器
  3. 弹性盒子
  4. 主轴:默认在水平方向
  5. 侧轴/交叉轴:默认在垂直方向

主轴对齐方式

侧轴对齐方式

修改主轴方向

相关推荐
梦想CAD控件7 分钟前
在线CAD开发包结构与功能说明
前端·javascript·vue.js
张拭心11 分钟前
春节后,有些公司明确要求 AI 经验了
android·前端·人工智能
时光不负努力12 分钟前
typescript常用的dom 元素类型
前端·typescript
小怪点点17 分钟前
大文件切片上传
前端
时光不负努力18 分钟前
TS 常用工具类型
前端·javascript·typescript
SuperEugene19 分钟前
Vue状态管理扫盲篇:Vuex 到 Pinia | 为什么大家都在迁移?核心用法对比
前端·vue.js·面试
张拭心22 分钟前
Android 17 来了!新特性介绍与适配建议
android·前端
徐小夕26 分钟前
pxcharts-vue:一款专为 Vue3 打造的开源多维表格解决方案
前端·vue.js·github
Hilaku26 分钟前
我会如何考核一个在简历里大谈 AI 提效的高级前端?
前端·javascript·面试
青青家的小灰灰1 小时前
React 反模式(Anti-Patterns)排查手册:从性能杀手到逻辑陷阱
前端·javascript·react.js