CSS知识点

CSS定义:层叠样式表(Cascading Style Sheets,缩写为CSS),是一种样式表语言,用来描述HTML文档的呈现美化内容)。

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

书写规则:选择器{属性名:属性值;}

代码示例

<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>初识 CSS</title>
  <style>
    /* CSS 代码 */
    /* 选择器 { CSS 属性} */
    /* 属性名和属性值成对出现 → 键值对 */
    p {
      /* 文字颜色 */
      color: red;
      /* 字号 */
      font-size: 30px;
    }
  </style>
</head>
<body>
  <p>体验 CSS</p>
</body>

 CSS引入方式

内部样式表:学习使用

  • CSS代码写在style 标签里面

外部样式表开发使用

  • CSS代码写在单独的CSS文件中(.css)
  • 在HTML使用link标签引入

行内样式:配合JavaScript使用

  • CSS 写在标签的 style 属性值里

代码示例:

.html

<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>CSS 引入方式</title>
  <!-- link 引入外部样式表; rel:关系,样式表 -->
  <link rel="stylesheet" href="./my.css">
</head>
<body>
  <p>这是 p 标签</p>
  <!-- 行内,style=" CSS" -->
  <div style="color: green; font-size: 30px;">这是 div 标签</div>
</body>

.css

/* 这个文件放 CSS 代码 */
/* 选择器 { CSS 属性 } */
p {
  color: red;
}

 选择器

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

基础选择器 : 标签选择器 、选择器 、 id选择器 、 通配符选择器

标签选择器

标签选择器:使用标签名作为选择器→选中同名标签设置相同的样式无法差异化

例如:p,h1,div,a,img......

代码示例:

<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>标签选择器</title>
  <style>
    /* 特点:选中同名标签设置相同的样式,无法差异化同名标签的样式 */
    p {
      color: red;
    }
  </style>
</head>
<body>
  <p>这是 p 标签</p>
  <p>1111</p>
  <p>2222</p>
</body>

效果图:

类选择器

作用:查找标签,差异化设置标签的显示效果。

步骤:

定义类选择器→.类名

使用类选择器→标签添加class="类名"

代码示例:

<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>类选择器</title>
  <style>
    /* 定义 */
    .red {
      color: red;
    }

    .size {
      font-size: 50px;
    }
  </style>
</head>
<body>
  <!-- 使用 -->
  <!-- 一个类选择器可以给多个标签使用 -->
  <p class="red">111111</p>
  <p>222222</p>
  <!-- 一个标签可以使用多个类名,class属性值写多个类名,类名用空格隔开 -->
  <div class="red size">div 标签</div>
</body>

效果图:

注意:

  • 类名自定义,不要用纯数字或中文,尽量用英文命名
  • 一个类选择器可以供多个标签使用 .
  • 一个标签可以使用多个类名,类名之间用空格隔开

id选择器

作用:查找标签,差异化设置标签的显示效果。

场景:id选择器一般配合JavaScript使用,很少用来设置CSS样式

步骤:

. 定义id选择器→#id名

. 使用id选择器→标签添加id="id名"

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

代码示例:

<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>id选择器</title>
  <style>
    /* 定义 */
    #red {
      color: red;
    }
  </style>
</head>
<body>
  <!-- 使用 -->
  <div id="red">div 标签</div>
</body>

通配符选择器

作用:查找页面所有标签设置相同样式。(多用于开发初期,清除标签样式)

通配符选择器:*,不需要调用,浏览器自动查找页面所有标签,设置相同的样式

代码示例:

<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>通配符选择器</title>
  <style>
    * {
      color: red;
    }
  </style>
</head>

练手案例:画盒子

预实现效果:

代码实现:

<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>画盒子</title>
  <style>
    .red {
      /* 宽度 */
      width: 100px;
      /* 高度 */
      height: 100px;
      /* 背景色 */
      background-color: brown;
    }

    .orange {
      width: 200px;
      height: 200px;
      background-color: orange;
    }
  </style>
</head>
<body>
  <div class="red">div1</div>
  <div class="orange">div2</div>
</body>

 文字控制属性

字体大小

属性名: font-size

属性值: 最常用的单位px,文字尺寸

代码示例:

<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>字体大小</title>
  <style>
    /* 经验:谷歌浏览器文字有默认大小 16px */
    p {
      /* font-size 属性必须有单位,否则属性不生效 */
      font-size: 30px;
    }
  </style>
</head>
<body>
  <p>测试字体大小</p>
  <div>测试默认字体大小</div>
</body>

效果图:

字体粗细

属性名:font-weight

属性值:

数字开发使用

正常 400      加粗 700

关键字

正常 normal 加粗 bold

代码示例:

<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>字体粗细</title>
  <style>
    h3 {
      font-weight: 400;
    }

    div {
      font-weight: 700;
    }
  </style>
</head>
<body>
  <h3>h3 标题</h3>
  <div>div 标签</div>
</body>

效果图:

字体样式(倾斜)

作用:清除文字默认的倾斜效果

属性名:font-style

属性值:

正常(不倾斜):normal

倾斜:italic

代码示例:

<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>字体倾斜</title>
  <style>
    em {
      font-style: normal;
    }

    div {
      font-style: italic;
    }
  </style>
</head>
<body>
  <em>em 标签</em>
  <div>div 标签</div>
</body>

行高

行高的测量方法:从一行文字的最顶端(最底端)量到下一行文字的最顶端(最底端)。

作用:设置多行文本的间距

属性名:line-height

属性值:

  • 数字+px
  • 数字(当前标签font-size属性值的倍数)

代码示例:

<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>行高</title>
  <style>
    p {
      font-size: 20px;
      /* line-height: 30px; */
      /* 行高值是数字,表示是当前标签字体大小的倍数 */
      line-height: 2;
    }
  </style>
</head>
<body>
  <p>今年受成本驱动、需求拉动以及全球粮价上涨等各种因素叠加影响,我国粮食价格整体上扬,小麦、玉米、大豆价格高位波动,水稻价格运行平稳,优质优价特征明显,农民择机择时售粮,实现种粮收益最大化。但种粮成本持续攀升成为影响农民增收的“拦路虎”。</p>
</body>

字体族

属性名:font-family

属性值:字体名

font-family:楷体;

拓展(了解):font-family属性值可以书写多个字体名,各个字体名用逗号隔开,执行顺序是从左向右依次查找

注:font-family属性最后设置一 个字体族名 网页开发建议使用无衬线字体

代码示例:

<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>字体族</title>
  <style>
    div {
      font-family: 楷体;
    }
  </style>
</head>
<body>
  <div>测试文字</div>
</body>

font复合属性

使用场景:设置网页文字公共样式

复合属性:属性的简写方式,一个属性对应多个值的写法,各个属性值之间用空格隔开。 font:是否倾斜 是否加粗 字号/行高 字体(必须按顺序书写

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

代码示例:

<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>font 属性</title>
  <style>
    /* 文字倾斜、文字加粗、字体大小是30px、行高2倍、楷体 */ 
    div {
      /* font: italic 700 30px/2 楷体; */

      /* font 属性必须写字号和字体,否则 属性不生效 */
      font: 30px 楷体;
      /* font: italic 700 30px/2; */
    }
  </style>
</head>
<body>
  <div>测试 font 属性</div>
</body>

文本缩进

属性名:text-indent

属性值:

. 数字+px

. 数字+em (推荐:1em=当前标签的字号大小)

代码示例:

<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>文本缩进</title>
  <style>
    p {
      text-indent: 2em;
      font-size: 30px;
    }
  </style>
</head>
<body>
  <p>今年受成本驱动、需求拉动以及全球粮价上涨等各种因素叠加影响,我国粮食价格整体上扬,小麦、玉米、大豆价格高位波动,水稻价格运行平稳,优质优价特征明显,农民择机择时售粮,实现种粮收益最大化。但种粮成本持续攀升成为影响农民增收的“拦路虎”。这是因为,在去年高粮价的刺激下,今年土地租金以及化肥、农药、柴油等农资价格大幅上涨,种粮成本随之增加。加之今年粮食生产遭遇去年北方罕见秋雨秋汛、今年“南旱北涝”等极端天气,虽然没有带来灾害性后果,但一些农户为抗灾付出更多生产成本,种粮农户收益空间进一步收窄。</p>
</body>

文本对齐方式

作用:控制内容水平对齐方式

属性名:text-align

代码示例:

<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>文本对齐方式</title>
  <style>
    h1 {
      /* 本质:居中的是文字内容,不是标签 */
      /* text-align: left; */
      text-align: center;
      /* text-align: right; */
    }
  </style>
</head>
<body>
  <h1>标题文字</h1>
</body>
练手案例:图片居中

预实现效果:

代码实现:

<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>图片对齐方式</title>
  <style>
    div {
      text-align: center;
    }
  </style>
</head>
<body>
  <div>
    <img src="./雷神.png" alt="">
  </div>
</body>

文本修饰线

属性名:text-decoration

代码示例:

<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>文本修饰线</title>
  <style>
    a {
      /* 无,去掉修饰线 */
      text-decoration: none;
    }

    div {
      /* 下划线 */
      text-decoration: underline;
    }

    p {
      text-decoration: line-through;
    }

    span {
      text-decoration: overline;
    }
  </style>
</head>
<body>
  <a href="#">a 标签,去掉下划线</a>
  <div>div 标签,添加下划线</div>
  <p>p 标签,添加删除线</p>
  <span>span 标签,添加顶划线</span>
</body>

效果图:

文字颜色

属性名:color

代码示例:

<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>文字颜色</title>
  <style>
    h1 {
      background-color: aqua;
      /* color: red; */
      /* color: rgb(0,255,0); */
      /* color: rgba(0,0,0,0.8); */
      /* color: #0000ff; */
      color: #00f;
    }
  </style>
</head>
<body>
  <h1>h1 标签</h1>
</body>

复合选择器

后代选择器

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

选择器写法:父选择器 子选择器{CSS属性},父子选择器之间用空格隔开

代码示例:

<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>后代选择器</title>
  <style>
    /* div 里面的 span 文字颜色是红色 */
    /* 后代选择器,选中所有后代,包含儿子、孙子、重孙子... */
    div span {
      color: red;
    }
  </style>
</head>
<body>
  <span>span 标签</span>
  <div>
    <span>这是div 的儿子 span</span>
    <p>
      <span>孙子 span</span>
    </p>
  </div>
</body>

效果图:

子代选择器

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

选择器写法:父选择器>子选择器{CSS属性},父子选择器之间用>隔开。

代码示例:

<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>子代选择器</title>
  <style>
    /* div 的儿子 span 文字颜色是红色 */
    div > span {
      color: red;
    }
  </style>
</head>
<body>
  <div>
    <span>儿子 span</span>
    <p>
      <span>孙子 span</span>
    </p>
  </div>
</body>

效果图:

并集选择器

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

选择器写法:选择器1,选择器2,…选择器N{CSS属性},选择器之间用,隔开

代码示例:

<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>并集选择器</title>
  <style>
    /* div、p、span 文字颜色是红色 */
    div,
    p,
    span {
      color: red;
    }
  </style>
</head>
<body>
  <div>div 标签</div>
  <p>p 标签</p>
  <span>span 标签</span>
</body>

注:最后一个选择器span后没有逗号","

效果图:

交集选择器

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

选择器写法:选择器1选择器2{CSS属性},选择器之间连写(例如下图的p.box),没有任何符号。

注:如果交集选择器中有标签选择器,标签选择器必须书写在最前面

代码示例:

<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>交集选择器</title>
  <style>
    /* 第一个 p 标签文字颜色是红色 */
    /* 既又的关系:既是 p 标签,又是有 box 类 */
    p.box {
      color: red;
    }
  </style>
</head>
<body>
  <p class="box">p 标签,使用了类选择器 box</p>
  <p>p 标签</p>
  <div class="box">div 标签,使用了类选择器</div>
</body>

效果图:

伪类选择器

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

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

代码示例:

<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>伪类选择器</title>
  <style>
    /* 任何标签都可以设置鼠标悬停的状态 */
    a:hover {
      color: red;
    }

    /* div:hover */
    .box:hover {
      color: green;
    }
  </style>
</head>
<body>
  <a href="#">a 标签,超链接</a>
  <div class="box">div 标签</div>
</body>
伪类超链接

四个超链接状态:

注:如果要给超链接设置以上四个状态,需要按LVHA的顺序书写

代码示例
 

<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>超链接伪类</title>
  <style>
    /* a:link {
      color: red;
    }

    a:visited {
      color: green;
    }

    a:hover {
      color: blue;
    }

    a:active {
      color: orange;
    } */
    /* 工作中,一个 a 标签选择器设置超链接的样式, hover状态特殊设置 */
    a {
      color: red;
    }

    a:hover {
      color: green;
    }
  </style>
</head>
<body>
  <a href="#">a 标签,测试伪类</a>
</body>

结构伪类选择器

作用:根据元素的结构关系查找元素。(E为标签名

代码示例:

<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>结构伪类选择器-基本使用</title>
  <style>
    /* 第一个 */
    li:first-child {
      background-color: red;
    }

    /* 最后一个 */
    li:last-child {
      background-color: pink;
    }

    /* 任意个 */
    li:nth-child(3) {
      background-color: gold;
    }

    /* li:nth-child(1) {
      background-color: green;
    } */
  </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>
    <li>li 8</li>
  </ul>
</body>

效果图:

:nth-child(公式)

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

代码示例:

<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>结构伪类选择器-公式用法</title>
  <style>
    /* 偶数 */
    /* li:nth-child(2n) {
      background-color: green;
    } */

    /* 奇数 */
    /* li:nth-child(2n+1) {
      background-color: green;
    } */

    /* 倍数 */
    /* li:nth-child(5n) {
      background-color: green;
    } */

    /* n 从0开始 */
    /* 第5个以后的标签 */
    /* li:nth-child(n+5) {
      background-color: green;
    } */

    /* 第5个以前的标签 */
    li:nth-child(-n+5) {
      background-color: green;
    }
  </style>
</head>

伪元素选择器

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

注:

  • 必须设置 content:" "属性,用来设置伪元素的内容,如果没有内容,则引号留空即可
  • 伪元素默认是行内显示模式
  • 权重标签选择器相同

代码示例:

<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>伪元素选择器</title>
  <style>
    div {
      width: 300px;
      height: 300px;
      background-color: pink;
    }

    div::before {
      content:"I";
      width: 100px;
      height: 100px;
      background-color: brown;
      display: block;
    }

    div::after {
      content:"You";
      width: 100px;
      height: 100px;
      background-color: orange;
      display: inline-block;
    }
  </style>
</head>
<body>
  <!-- 标签内容:I爱You -->
  <div>爱</div>
</body>

效果图:

 CSS三大特性

继承性

继承性:子级默认继承父级文字控制属性

特殊点:如果子级标签有自己的样式则不继承父级的

代码示例:

<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>CSS特性-继承性</title>
  <style>
    body {
      font-size: 30px;
      color: red;
      font-weight: 700;
    }
  </style>
</head>
<body>
  <div>div 标签</div>
  <p>p 标签</p>
  <span>span 标签</span>

  <!-- 如果标签自己有样式则生效自己的样式,不继承 -->
  <a href="#">a 标签</a>
  <h1>h1 标签</h1>
</body>

效果图:

层叠性

特点:

  • 相同的属性会覆盖:后面的CSS属性覆盖前面的CSS属性
  • 不同的属性会叠加:不同的CSS属性都生效

代码示例:

<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>CSS特性-层叠性</title>
  <style>
    /* 覆盖;叠加 */

    div {
      color: green;
      font-size: 30px;
    }

    div {
      color: red;
      font-weight: 700;
    }
  </style>
</head>
<body>
  <div>div 标签</div>
</body>

效果图:

优先级

优先级:也叫权重,当一个标签使用了多种选择器时,基于不同种类的选择器的匹配规则

规则:选择器优先级高的样式生效

公式:通配符选择器<标签选择器<类选择器<id选择器<行内样式< !important (选中标签的范围越大,优先级越低

代码示例:

<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>CSS 特性-优先级</title>
  <style>
    /* 技巧:选择器选中标签的范围越大,优先级/权重 越低 */
    div {
      color: green;
    }

    /* !important 提权功能,提高权重/优先级到 最高,慎用 */
    * {
      color: red !important;
    }

    .box {
      color: blue;
    }

    #test {
      color: orange;
    }
  </style>
</head>
<body>
  <div class="box" id="test" style="color: purple;">div 标签</div>
</body>
优先级-叠加计算规则

叠加计算:如果是复合选择器,则需要权重叠加计算。

公式:(每一级之间不存在进位) (行内样式,id选择器个数,类选择器个数,标签选择器个数)

规则:

  • 从左向右依次比较选个数,同一级个数的优先级,如果个数相同,则向后比较 !important 权重最高
  • 继承权重最低

 背景属性

背景图

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

属性名:background-image(bgi)

属性值:url(背景图URL)

代码示例:
 

<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>背景图</title>
  <style>
    /* 盒子是 400 * 400 */
    div {
      width: 400px;
      height: 400px;

      /* 背景图默认是平铺(复制)的效果 */
      background-image: url(./images/1.png);
    }
  </style>
</head>
<body>
  <div>div 标签</div>
</body>

效果图:

背景图平铺方式

属性名: background-repeat (bgr)

代码示例:

<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>背景图平铺方式</title>
  <style>
    div {
      width: 400px;
      height: 400px;
      background-color: pink;

      background-image: url(./images/1.png);

      /* 不平铺:盒子的左上角显示一张背景图 */
      background-repeat: no-repeat;
      /* background-repeat: repeat; */
      /* background-repeat: repeat-x; */
      /* background-repeat: repeat-y; */
      
    }
  </style>
</head>
<body>
  <div>div 标签</div>
</body>

背景图位置

属性名:background-position(bgp)

属性值:水平方向位置  垂直方向位置

坐标(数字+px,正负都可以)

代码示例:

<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>背景图位置</title>
  <style>
    div {
      width: 400px;
      height: 400px;
      background-color: pink;

      background-image: url(./images/1.png);
      background-repeat: no-repeat;

      /* 左上角 */
      /* background-position: 0 0; */
      /* background-position: left top; */

      /* background-position: right bottom; */

      /* 水平:正数向右,负数向左 */
      /* background-position: 50px 0; */
      /* background-position: -50px 0; */

      /* 垂直:正数向下,负数向上 */
      /* background-position: 0 100px; */
      /* background-position: 0 -100px; */

      /* background-position: 50px center; */

      /* 特殊写法 */
      /* background-position: bottom left; */

      /* 关键字可以只写一个,另一个方向居中 */
      /* background-position: bottom; */

      /* 只写一个数字表示水平方向,垂直方向居中 */
      background-position: 50px;
    }
  </style>
</head>
<body>
  <div>div 标签</div>
</body>

背景图缩放

作用:设置背景图大小

属性名:background-size(bgz)

常用属性值:

关键字

  • cover:  等比例缩放背景图片以完全覆盖背景区,可能背景图片部分看不见
  • contain:等比例缩放背景图片以完全装入背景区,可能背景区部分空白 

百分比:根据盒子尺寸计算图片大小

数字+单位(例如:px)

代码示例:

<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>背景图缩放</title>
  <style>
    div {
      width: 500px;
      height: 300px;
      background-color: pink;
      
      background-image: url(./images/1.png);
      background-repeat: no-repeat;

      /* contain:如果图的宽高跟盒子尺寸相等停止缩放,可能导致盒子有露白 */
      /* background-size: contain; */

      /* cover:图片完全覆盖盒子,可能导致图片显示不全 */
      /* background-size: cover; */

      /* 100% 图片的宽度跟盒子宽度一样,图片的高度按照图片比例等比缩放 */
      background-size: 100%;
    }
  </style>
</head>
<body>
  <div>div 标签</div>
</body>

背景图固定

作用: 背景不会随着元素的内容滚动

属性名:background-attachment (bga)

属性值:fixed

代码示例:

<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>背景图固定</title>
  <style>
    body {
      background-image: url(./images/bg.jpg);
      background-repeat: no-repeat;
      background-position: center top;

      background-attachment: fixed;
    }
  </style>
</head>
<body>
  <p>测试文字,撑开body,让浏览器有滚动条</p>
  <p>测试文字,撑开body,让浏览器有滚动条</p>
   ......
  <p>测试文字,撑开body,让浏览器有滚动条</p>
</body>

背景复合属性

属性名:background(bg)

属性值:背景色 背景图 背景图平铺方式 背景图位置/背景图缩放 背景图固定(空格隔开各个属性值,不区分顺序

代码示例:

<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>background属性</title>
  <style>
    div {
      width: 400px;
      height: 400px;

      /* background: pink url(./images/1.png) no-repeat center bottom/cover; */
      background: pink url(./images/1.png) no-repeat center bottom/contain;
    }
  </style>
</head>
<body>
  <div>div 标签</div>
</body>

 显示模式

块级元素

特点:独占一行 ; 宽度默认是父级的100% ;添加宽高属性生效

行内元素

特点:一行共存多个;宽高由内容撑开;添加宽高属性不生效

行内块元素

特点:一行共存多个;宽高默认由内容撑开;添加宽高属性生效

代码示例:

<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>显示模式</title>
  <style>
    /* 块级:独占一行;宽度默认是父级的100%;加宽高生效 */
    div {
      width: 100px;
      height: 100px;
    }

    .div1 {
      background-color: brown;
    }

    .div2 {
      background-color: orange;
    }

    /* 行内:一行共存多个;尺寸由内容撑开;加宽高 不 生效 */
    span {
      width: 200px;
      height: 200px;
    }

    .span1 {
      background-color: brown;
    }

    .span2 {
      background-color: orange;
    }

    /* 行内块:一行共存多个;默认尺寸由内容撑开;加宽高生效 */
    img {
      width: 100px;
      height: 100px;
    }
  </style>
</head>
<body>
  <!-- 块元素 -->
  <div class="div1">div 标签1</div>
  <div class="div2">div 标签2</div>

  <!-- 行内元素 -->
  <span class="span1">span11111111</span>
  <span class="span2">span1</span>

  <!-- 行内块元素 -->
  <img src="./images/1.png" alt="">
  <img src="./images/1.png" alt="">
  
</body>

效果图:

转换显示模式

属性名:display

代码示例:

<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>显示模式转换</title>
  <style>
    /* 块级:独占一行;宽度默认是父级的100%;加宽高生效 */
    div {
      width: 100px;
      height: 100px;

      /* display: inline-block; */

      display: inline;
    }

    .div1 {
      background-color: brown;
    }

    .div2 {
      background-color: orange;
    }

    /* 行内:一行共存多个;尺寸由内容撑开;加宽高 不 生效 */
    span {
      width: 200px;
      height: 200px;

      /* display: block; */
      display: inline-block;
    }

    .span1 {
      background-color: brown;
    }

    .span2 {
      background-color: orange;
    }

    /* 行内块:一行共存多个;默认尺寸由内容撑开;加宽高生效 */
    img {
      width: 100px;
      height: 100px;

      display: block;
    }
  </style>
</head>

效果图:

盒子模型

盒子模型-组成

盒子模型重要组成部分:

. 内容区域-width & height

. 内边距-padding(出现在内容与盒子边缘之间)

. 边框线-border

. 外边距-margin(出现在盒子外面)

代码示例:

<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>盒子模型-组成</title>
  <style>
    div {
      width: 200px;
      height: 200px;
      background-color: pink;

      /* 内容与盒子边缘之间 */
      padding: 20px;
      border: 1px solid #000;
      /* 出现在盒子外面,拉开两个盒子之间的距离 */
      margin: 50px;
    }
  </style>
</head>
<body>
  <div>div 标签</div>
</body>

效果图:

盒子模型-边框线

属性名:border(bd)

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

代码示例:

<style>
    div {
      width: 200px;
      height: 200px;
      background-color: pink;

      /* 实线 */
      /* border: 1px solid #000; */

      /* 虚线 */
      /* border: 2px dashed red; */

      /* 点线 */
      border: 3px dotted green;
    }
 </style>
单方向边框线

属性名:border-方位名词(bd+方位名词首字母,例如,bdl)

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

代码示例:

<style>
    div {
      width: 200px;
      height: 200px;
      background-color: pink;

      border-top: 1px solid #000;
      border-right: 2px dashed red;
      border-bottom: 5px dotted green;
      border-left: 10px solid orange;
    }
  </style>

效果图:

盒子模型-内边距

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

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

代码示例:

<style>
    div {
      width: 200px;
      height: 200px;
      background-color: pink;

      /* padding: 20px; */

      padding-top: 10px;
      padding-right: 20px;
      padding-bottom: 40px;
      padding-left: 80px;
    }
  </style>
padding的多值写法

代码示例:

  <style>
    div {
      width: 200px;
      height: 200px;
      background-color: pink;

      /* 四值:上  右  下  左 */
      /* padding: 10px 20px 40px 80px; */

      /* 三值:上  左右  下 */
      /* padding: 10px 40px 80px; */

      /* 两值:上下  左右 */
      padding: 10px 80px;

      /* 记忆方法:从上开始顺时针转一圈,如果当前方向没有数值,取值跟对面一样 */
    }
  </style>

盒子模型-尺寸计算

默认情况:

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

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

解决方法:

手动做减法,减掉border/padding的尺寸

内减模式:box-sizing:border-box

代码示例:

 <style>
    div {
      width: 200px;
      height: 200px;
      /* 手动减法 */
      /* width: 160px;
      height: 160px; */
      background-color: pink;

      padding: 20px;

      /* 內减模式:不需要手动减法,加padding和border不会撑大盒子 */
      box-sizing: border-box;
    }
  </style>

盒子模型-外边距

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

属性名:margin

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

代码示例:

<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>版心居中</title>
  <style>
    div {
      /* 版心居中要求:盒子要有宽度 */
      width: 1000px;
      height: 200px;
      background-color: pink;

      /* 外边距 不会 撑大盒子 */
      /* margin: 50px; */
      /* margin-left: 100px; */
      /* margin: 50px 100px; */

      margin: 0 auto;
    }
  </style>
</head>
<body>
  <div>版心内容</div>
</body>

效果图:

清除默认样式

代码示例:

<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>清除默认样式</title>
  <style>
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
    }

    /* 去掉列表的项目符号 */
    li {
      list-style: none;
    }
  </style>
</head>
<body>
  <h1>标题</h1>
  <p>ppppp</p>
  <ul>
    <li>li</li>
  </ul>
</body>

效果图:

盒子模型-元素溢出

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

属性名:overflow

代码示例:

<style>
    div {
      width: 200px;
      height: 200px;
      background-color: pink;

      overflow: hidden;

      /* overflow: scroll; */

      /* overflow: auto; */
    }
  </style>

外边距问题-合并现象

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

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

代码示例:

<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>外边距-合并现象</title>
  <style>
    .one {
      width: 100px;
      height: 100px;
      background-color: brown;
      margin-bottom: 80px;
    }

    .two {
      width: 100px;
      height: 100px;
      background-color: orange;
      margin-top: 50px;
    }
  </style>
</head>
<body>
  <div class="one">one</div>
  <div class="two">two</div>
</body>

外边距问题-塌陷问题

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

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

解决方法:

  • 取消子级margin,级设置padding 
  • 级设置 overflow:hidden (原理:先固定父级盒子的位置)
  • 级设置 border-top(原理:先固定父级盒子的位置)

代码示例:

<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>外边距-塌陷问题</title>
  <style>
    .father {
      width: 300px;
      height: 300px;
      background-color: pink;
      /* padding-top: 50px;
      box-sizing: border-box; */

      /* 溢出隐藏 */
      /* overflow: hidden; */

      border-top: 1px solid #000;
    }

    .son {
      width: 100px;
      height: 100px;
      background-color: orange;

      margin-top: 50px;
    }
  </style>
</head>
<body>
  <div class="father">
    <div class="son">son</div>
  </div>
</body>

行内元素-内外边距问题

场景:行内元素添加margin和padding,无法改变元素垂直位置(水平位置可以改变)

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

代码示例:

<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>行内元素的垂直内外边距</title>
  <style>
    span {
      margin: 50px;
      padding: 20px;
      line-height: 100px;
    }
  </style>
</head>
<body>
  <span>span标签</span>
  <span>span标签</span>
</body>

效果图:

盒子模型-圆角

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

属性名:border-radius

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

代码示例:

<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>圆角-基本使用</title>
  <style>
    div {
      margin: 50px auto;
      width: 200px;
      height: 200px;
      background-color: orange;

      /* border-radius: 20px; */

      /* 记忆:从左上角顺时针赋值,没有取值的角与对角取值相同 */

      /* 四值:左上  右上  右下  左下 */
      /* border-radius: 10px 20px 40px 80px; */

      /* 三值:左上  右上+左下  右下 */
      /* border-radius: 10px 40px 80px; */

      /* 两值:左上+右下  右上+左下 */
      border-radius: 10px 80px;
    }
  </style>
</head>
<body>
  <div></div>
</body>

效果图:

常见应用 - 正圆、胶囊形状

正方形盒子设置圆角属性值为宽高的一半/50%

长方形盒子设置圆角属性值为盒子高度的一半

代码示例:

<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>圆角-特殊场景</title>
  <style>
    img {
      width: 200px;
      height: 200px;

      /* border-radius: 100px; */

      /* 最大值是50%。超过50%没有效果 */
      border-radius: 50%;
    }

    div {
      width: 200px;
      height: 80px;
      background-color: orange;

      border-radius: 40px;
    }
  </style>
</head>
<body>
  <!-- 正圆形 -- 头像 -->
  <img src="./images/1.jpg" alt="">

  <!-- 胶囊状 -->
  <div></div>
</body>

盒子模型-阴影

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

属性名: box-shadow(复合属性

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

注意:

  • X轴偏移量 和 Y 轴偏移量 必须书写
  • 默认是外阴影内阴影需要添加 inset 

代码示例:

  <style>
    div {
      margin: 50px auto;
      width: 200px;
      height: 80px;
      background-color: orange;

      box-shadow: 2px 5px 10px 1px rgba(0,0,0,0.5) inset;
    }
  </style>

效果图:

标准流

标准流也叫文档流,指的是标签在页面中默认的排布规则

例如:块元素独占一行,行内元素可以一行显示多个。
 

 浮动

基本使用

作用:让块元素水平排列

属性名:float

属性值

left:左对齐

right:右对齐

特点:

浮动后的盒子顶对齐

浮动后的盒子具备行内块特点

浮动后的盒子脱标,不占用标准流的位置

代码示例:

<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>浮动-基本使用</title>
  <style>
    /* 特点:顶对齐;具备行内块显示模式特点;浮动的盒子会脱标 */
    .one {
      width: 100px;
      height: 100px;
      background-color: brown;

      float: left;
    }

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

      /* float: left; */
    }
  </style>
</head>
<body>
  <div class="one">one</div>
  <div class="two">two</div>
</body>

效果图:

区域布局

预实现效果:

代码实现:

<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>浮动-产品布局</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    li {
      list-style: none;
    }

    .product {
      margin: 50px auto;
      width: 1226px;
      height: 628px;
      background-color: pink;
    }

    .left {
      float: left;
      width: 234px;
      height: 628px;
      background-color: skyblue;
    }

    .right {
      float: right;
      width: 978px;
      height: 628px;
      background-color: brown;
    }

    .right li {
      float: left;
      margin-right: 14px;
      margin-bottom: 14px;
      width: 234px;
      height: 300px;
      background-color: orange;
    }

    /* 第四个li和第八个li 去掉右侧的margin */
    .right li:nth-child(4n) {
      margin-right: 0;
    }

    /* 细节:如果父级宽度不够,浮动的盒子会掉下来 */
  </style>
</head>
<body>
  <!-- 版心:左右,右面:8个产品 → 8个 li -->
  <div class="product">
    <div class="left"></div>
    <div class="right">
      <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
      </ul>
    </div>
  </div>
</body>

清除浮动

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

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

方法一:额外标签法

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

代码示例:

<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>清除浮动-额外标签法</title>
  <style>
    .father {
      margin: 10px auto;
      width: 1200px;
      /* height: 300px; */
      background-color: pink;
    }

    .left {
      float: left;
      width: 200px;
      height: 300px;
      background-color: skyblue;
    }

    .right {
      float: right;
      width: 950px;
      height: 300px;
      background-color: orange;
    }

    .bottom {
      height: 100px;
      background-color: brown;
    }
    /* 额外标签法 */
    .clearfix {
      clear: both;
    }
  </style>
</head>
<body>
  <div class="father">
    <div class="left"></div>
    <div class="right"></div>
    <div class="clearfix"></div>
  </div>
  <div class="bottom"></div>
</body>

方法二:单伪元素法

代码示例:

<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>清除浮动-单伪元素法</title>
  <style>
    .father {
      margin: 10px auto;
      width: 1200px;
      /* height: 300px; */
      background-color: pink;
    }

    .left {
      float: left;
      width: 200px;
      height: 300px;
      background-color: skyblue;
    }

    .right {
      float: right;
      width: 950px;
      height: 300px;
      background-color: orange;
    }

    .bottom {
      height: 100px;
      background-color: brown;
    }

    /* 单伪元素法 */
  .clearfix::after {
    content: "";
    display: block;
    clear: both;
  }
  </style>
</head>
<body>
  <div class="father clearfix">
    <div class="left"></div>
    <div class="right"></div>
  </div>
  <div class="bottom"></div>
</body>

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

代码示例:

<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>清除浮动-双伪元素法</title>
  <style>
    .father {
      margin: 10px auto;
      width: 1200px;
      /* height: 300px; */
      background-color: pink;
    }

    .left {
      float: left;
      width: 200px;
      height: 300px;
      background-color: skyblue;
    }

    .right {
      float: right;
      width: 950px;
      height: 300px;
      background-color: orange;
    }

    .bottom {
      height: 100px;
      background-color: brown;
    }

    /* before 解决外边距塌陷问题 */
    /* 双伪元素法 */
    .clearfix::before,
    .clearfix::after {
      content: "";
      display: table;
    }

    /* after 清除浮动 */
    .clearfix::after {
      clear: both;
    }
  </style>
</head>
<body>
  <div class="father clearfix">
    <div class="left"></div>
    <div class="right"></div>
  </div>
  <div class="bottom"></div>
</body>

方法四:overflow

元素添加CSS属性overflow:hidden

代码示例:

<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>清除浮动-overflow</title>
  <style>
    .father {
      margin: 10px auto;
      width: 1200px;
      /* height: 300px; */
      background-color: pink;

      overflow: hidden;
    }

    .left {
      float: left;
      width: 200px;
      height: 300px;
      background-color: skyblue;
    }

    .right {
      float: right;
      width: 950px;
      height: 300px;
      background-color: orange;
    }

    .bottom {
      height: 100px;
      background-color: brown;
    }

  </style>
</head>
<body>
  <div class="father">
    <div class="left"></div>
    <div class="right"></div>
  </div>
  <div class="bottom"></div>
</body>

 flex布局

Flex布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力。 Flex模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活

Flex-组成

设置方式:元素设置display:flex(df),元素可以自动挤压或拉伸

组成部分:

  • 弹性容器
  • 弹性盒子
  • 主轴:默认在水平方向
  • 侧轴/交叉轴:默认在垂直方向

代码示例:

<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>flex布局-组成</title>
  <style>
    /* 弹性容器 */
    .box {
      display: flex;

      height: 300px;
      border: 1px solid #000;
    }

    /* 弹性盒子:沿着主轴方向排列 */
    .box div {
      width: 200px;
      /* height: 100px; */
      background-color: pink;
    }
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
</body>

效果图:

主轴对齐方式

属性名:justify-content

代码示例:

<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>flex布局-主轴对齐方式</title>
  <style>
    .box {
      display: flex;
      /* justify-content: flex-start; */

      /* justify-content: flex-end; */

      /* 居中 */
      /* justify-content: center; */

      /* 父级剩余的尺寸分配成间距 */

      /* 弹性盒子之间的间距相等 */
      /* justify-content: space-between; */

      /* 间距出现在弹性盒子两侧 */
      /* 视觉效果:弹性盒子之间的间距是两端间距的2倍 */
      /* justify-content: space-around; */

      /* 各个间距都相等 */
      justify-content: space-evenly;

      height: 300px;
      border: 1px solid #000;
    }

    .box div {
      width: 200px;
      height: 100px;
      background-color: pink;
    }
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
</body>

侧轴对齐方式

属性名

align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置)

align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)

代码示例:

<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>flex布局-侧轴对齐方式</title>
  <style>
    .box {
      display: flex;
      /* 弹性盒子在侧轴方向没有尺寸才能拉伸 */
      /* align-items: stretch; */

      /* align-items: center; */

      /* align-items: flex-start; */

      align-items: flex-end;

      height: 300px;
      border: 1px solid #000;
    }

    /* 第二个div,侧轴居中对齐 */
    .box div:nth-child(2) {
      align-self: center;
    }

    .box div {
      width: 200px;
      height: 100px;
      background-color: pink;
    }
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
</body>

效果图:

修改主轴方向

主轴默认在水平方向,侧轴默认在垂直方向

属性名: flex-direction

代码示例:

<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>flex布局-修改主轴方向</title>
  <style>
    .box {
      display: flex;

      /* 修改主轴方向 垂直方向;侧轴自动变换到水平方向 */
      flex-direction: column;

      /* 主轴在垂直,视觉效果:垂直居中 */
      justify-content: center;

      /* 侧轴在水平,视觉效果:水平居中 */
      align-items: center;

      width: 150px;
      height: 120px;
      background-color: pink;
    }

    img {
      width: 32px;
      height: 32px;
    }
  </style>
</head>
<body>
  <div class="box">
    <img src="./images/1.png" alt="">
    <span>媒体</span>
  </div>
</body>

效果图:

弹性伸缩比

作用:控制弹性盒子的主轴方向的尺寸

属性名:flex

属性值:整数数字,表示占用剩余尺寸的份数

代码示例:

<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>flex布局-弹性伸缩比</title>
  <style>
    /* 默认情况下,主轴方向尺寸是靠内容撑开;侧轴默认拉伸 */
    .box {
      display: flex;
      flex-direction: column;

      height: 300px;
      border: 1px solid #000;
    }

    .box div {
      /* height: 100px; */
      background-color: pink;
    }

    .box div:nth-child(1) {
      width: 200px;
    }

    .box div:nth-child(2) {
      flex: 1;
    }

    .box div:nth-child(3) {
      flex: 2;
    }
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
  </div>
</body>

弹性盒子换行

弹性盒子可以自动挤压或拉伸 默认情况下,所有弹性盒子都在一行显示

属性名:flex-wrap

属性值

wrap:换行 

nowrap:不换行(默认)
代码示例:

<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>flex布局-弹性换行</title>
  <style>
    .box {
      display: flex;
      flex-wrap: wrap;

      /* 不换行 */
      /* flex-wrap: nowrap; */

      justify-content: space-between;

      height: 300px;
      border: 1px solid #000;
    }

    .box div {
      width: 450px;
      height: 100px;
      background-color: pink;
    }
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
    <div>9</div>
    <div>10</div>
    <div>11</div>
    <div>12</div>
  </div>
</body>

效果图:

行对齐方式

属性名:align-content

代码示例:

<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>flex布局-行对齐方式</title>
  <style>
    .box {
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;

      /* 调整 行对齐方式:对单行弹性盒子不生效 */
      /* align-content: flex-start; */
      /* align-content: flex-end; */

      /* align-content: center; */

      /* align-content: space-between; */
      /* align-content: space-around; */

      /* 没有代码提示 */
      align-content: space-evenly;


      height: 400px;
      border: 1px solid #000;
    }

    .box div {
      width: 200px;
      height: 100px;
      background-color: pink;
    }
  </style>
</head>
<body>
  <div class="box">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
  </div>
</body>

  • 31
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关于HTMLCSS知识点,我可以给你提供一些基本的信息。HTML(超文本标记语言)用于描述网页的结构和内容,而CSS(层叠样式表)用于定义网页的样式和布局。 以下是一些常见的HTML知识点: 1. HTML标签:HTML由一系列标签组成,例如`<html>、<head>、<body>`等。每个标签用于定义不同的元素。 2. 元素:HTML中的元素由开始标签、结束标签和内容组成。例如`<p>这是一个段落。</p>`。 3. 属性:HTML标签可以包含属性,属性提供有关元素的附加信息。例如`<img src="image.jpg" alt="图片">`中的`src`和`alt`是属性。 4. 常见的HTML元素:包括标题标签(`<h1> - <h6>`)、段落标签(`<p>`)、链接标签(`<a>`)、图像标签(`<img>`)等。 以下是一些常见的CSS知识点: 1. CSS选择器:用于选择要应用样式的HTML元素。常见的选择器包括类选择器(`.class`)、ID选择器(`#id`)、元素选择器(`element`)等。 2. 样式属性:CSS使用样式属性来定义元素的外观。例如`color`用于设置文本颜色,`font-size`用于设置字体大小等。 3. 盒模型:CSS中的每个元素都被视为一个矩形的盒子,由内容、内边距、边框和外边距组成。 4. 布局:CSS可以用于控制元素的位置和大小,例如使用`position`属性来设置元素的定位方式,使用`display`属性来设置元素的显示方式等。 这只是HTMLCSS的一小部分知识点,如果你有其他问题或需要更详细的信息,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值