首页 前端知识 HTML5和CSS3新增的使用

HTML5和CSS3新增的使用

2024-05-13 10:05:29 前端知识 前端哥 424 726 我要收藏

        学习了一些通用的基础知识之后,我们对HTML5 CSS3的补充内容加以学习。这里新增的内容大大简化了一些代码的书写。是十分有意义的。

一、 HTML5 新增的语义化标签

        我们在书写html文件时的时候大多都是div去做,虽然可以解决问题,但是div没有语义。所以为了更有语义,增加了语义化标签,让编程更易理解,结构更加清晰。

        比如为了更有语义:新增了 header头部 nav导航栏 articel内容 section文档某个区域 aside侧边栏 footer尾部。注意:新增的存在兼容性问题,IE9以上才支持。

    <style>
        header {
            height: 120px;
            width: 800px;
            background-color: aquamarine;
            border-radius: 10px;
            margin: 15px auto;
        }

        nav {
            height: 120px;
            width: 800px;
            background-color: aquamarine;
            border-radius: 10px;
            margin: 15px auto;
        }
    </style>

二、 HTML5新增的视频标签

2.1 视频标签的属性

        1、autoplay 自动播放(谷歌禁用了,但是增加muted就可以使用了)。

        2、controls 显示播放控件。

        3、width 播放器宽度。

        4、height 播放器高度。

        5、loop 是否循环播放。

        6、preload 是否预加载(有了autoplay 就不用设置了)。

        7、src 路径。

        8、poster 等待加载时显示的图片。

        9、muted 静音播放。

2.2 视频标签的使用

        1、<video src="" 属性 属性 属性 >;当前 <video> 元素支持三种视频格式:MP4 WEBM Ogg。 尽量使用 mp4格式,因为都兼容。

        2、 设置一个video大的盒子,再标签内对video直接设置属性,然后在大盒子内部添加资源,依次执行找到可以执行的文件格式,如果没找到,添加提示语。

<video width="1400" height="500" autoplay="autoplay" muted="muted" loop="loop" poster="media/mi9.jpg">
        <source src="media/mi.mp4" type="video/mp4">
        <source src="media/mi.ogg" type="video/ogg">
        您的浏览器暂不支持video标签
</video>

三、 HTML5新增的音频标签

.1 音频标签的属性

        1、autoplay 自动播放(谷歌禁用了)

        2、controls 显示播放控件

        3、loop 是否循环播放

        4、src 路径

3.2 音频标签的使用

        1、<audio src="" 属性 属性 属性 >;当前 <audio> 元素支持三种视频格式:MP3 Wav Ogg。 尽量使用 mp3格式,因为都兼容。

        2、 设置一个audio大的盒子,再标签内对audio直接设置属性,然后在大盒子内部添加资源,依次执行找到可以执行的文件格式,如果没找到,添加提示语。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>HTML5新增音频标签</title>
</head>

<body>
    <h1>HTML5新增视频标签</h1>
    <ul>
        <li>1、音频 audio</li>
        <li>2、视频 video</li>
        <li>3、当前 <audio> 元素支持三种视频格式:MP3 Wav Ogg。 尽量使用 mp3格式,因为都兼容。</li>
    </ul>
    <h1>音频标签使用 </h1>

    <audio controls="controls" autoplay="autoplay">
        <source src="media/music.mp3" type="audio/mp3">
        <source src="media/music.ogg" type="audio/ogg">
        您的浏览器暂不支持video标签
    </audio>

    <h1>音频标签的属性</h1>
    <ul>
        <li>1、autoplay 自动播放(谷歌禁用了)</li>
        <li>2、controls 显示播放控件</li>
        <li>3、loop 是否循环播放</li>
        <li>4、src 路径</li>
    </ul>
</body>

</html>

四、 HTML5新增的input标签

        如果要验证,将input所有的内容添加到form表单域,在点击提交以后就会自动验证。

        1、<input type="search" name="" id="">search 搜索框,代替以前的text,语义更强。

        2、<input type="email" name="" id="">email 邮箱。

        3、<input type="url" name="" id="">url 。

        4、<input type="date" name="" id="">date 日期。

        5、<input type="time" name="" id="">time 时间。

        6、<input type="month" name="" id="">month 月份。

        7、<input type="week" name="" id="">week 周。

        8、<input type="number" name="" id="">number 数字。

        9、<input type="tel" name="" id="">tel 电话。

        10、<input type="color" name="" id="">color 颜色选择菜单。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <h1>HTML5新增input标签</h1>
    如果要验证,必须添加form表单域,在点击提交以后就会自动验证
    <form action="">
        <ul>
            <li>1、<input type="search" name="" id="">search 搜索框,代替以前的text,语义更强</li>
            <li>2、<input type="email" name="" id="">email 邮箱</li>
            <li>3、<input type="url" name="" id="">url </li>
            <li>4、<input type="date" name="" id="">date 日期</li>
            <li>5、<input type="time" name="" id="">time 时间</li>
            <li>6、<input type="month" name="" id="">month 月份</li>
            <li>7、<input type="week" name="" id="">week 周</li>
            <li>8、<input type="number" name="" id="">number 数字</li>
            <li>9、<input type="tel" name="" id="">tel 电话</li>
            <li>10、<input type="color" name="" id="">color 颜色选择菜单</li>
            <!-- 在点击提交以后就会自动验证 -->
            <li><input type="submit"></li>
        </ul>
    </form>

</body>

</html>

五、 HTML5新增的表单属性

        何为表单属性,就是表单类型标签在使用时,可以设置的属性。我们以前学习<input>一般使用的只有 name id type value。现在新增了如下内容:

        1、required 必填。

        2、placeholder 提示文本。

        3、autofocus 自动聚焦,页面加载后光标自动定位到指定位置。

        4、autocomplete 用户正确提交过有些内容后时,基于输入过的值,显示可填写的内容.前提,这个input必须有name,且成功提交过。默认是on。

        5、multiple 多文件提交,一般和type="file"一起使用。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>HTML5新增表单属性</title>
    <style>
        /* ::叫做伪元素 */
        input::placeholder {
            color: red;
        }
    </style>
</head>

<body>
    <h1>HTML5新增表单属性</h1>
    <ul>
        <li>1、required 必填</li>
        <li>2、placeholder 提示文本</li>
        <li>3、autofocus 自动聚焦,页面加载后光标自动定位到指定位置</li>
        <li>4、autocomplete 用户正确提交过有些内容后时,基于输入过的值,显示可填写的内容.前提,这个input必须有name,且成功提交过。默认是on11</li>
        <li>5、multiple 多文件提交</li>
    </ul>
    <h1>HTML5新增表单属性测试</h1>
    <form action="">
        <input name="box1" type="search" required="required" placeholder="用户输入了,这里不显示了" autofocus autocomplete>*必填<br>
        <input type="file" name="" id="" multiple><br>

        <input type="submit" name="" id="">
    </form>


</body>

</html>

六、 CSS3新增的选择器--属性选择器

6.1 什么是属性选择器

        属性选择器可以根据元素特定属性的来选择元素。 这样就可以不用借助于类或者id选择器。

        一般是多个同种类的标签在一起,按照某个属性的内容,进行某些标签的选择。

        注意:类选择器、属性选择器、伪类选择器,权重为 10

6.2 如何使用

        1、 想要挑选的指定标签类型[ 属性 = ”指定内容“]        这样选择的是:属性的值完全是指定内容的指定标签类型。

        2、 想要挑选的指定标签类型[ 属性 ^= ”指定内容“]        这样选择的是:属性的值以指定内容开头的指定标签类型。

        3、 想要挑选的指定标签类型[ 属性 $= ”指定内容“]        这样选择的是:属性的值以指定内容结尾的指定标签类型。

        4、 想要挑选的指定标签类型[ 属性 *= ”指定内容“]        这样选择的是:属性的值只要包含指定内容的指定标签类型。

        为了更好的理解写了如下的代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS3新增属性选择器</title>
    <style>
        input[value] {
            color: blue;
        }

        input[type=password] {
            border-color: blue;
        }

        div[class^="cl"] {
            color: blueviolet;
            font-weight: 700;
            font-size: xx-large;
        }

        div[class$="ss"] {
            color: aqua;
            font-weight: 700;
            font-size: xx-large;
        }

        /* 此时的权重是10+1 */
        div[class*="bb"] {
            color: red;
            font-weight: 700;
            font-size: xx-large;
        }
    </style>
</head>

<body>
    <h1>CSS3现状介绍</h1>
    <ul>
        <li>1、新增的CSS3特性有兼容性问题,ie9+才支持
        </li>
        <li>2、移动端支持优于 PC 端</li>
        <li>3、不断改进中</li>
        <li>4、应用相对广泛</li>
        <li>5、后续主要学习:新增选择器和盒子模型以及其他特性
        </li>
    </ul>
    <h1>CSS3 新增选择器</h1>
    <ul>
        <li>1、属性选择器</li>
        <li>2、结构伪类选择器</li>
        <li>3、伪元素选择器</li>
    </ul>
    <h1>CSS3 属性选择器</h1>
    属性选择器可以根据元素特定属性的来选择元素。 这样就可以不用借助于类或者id选择器
    <div>选择某一类标签下含有某个属性的部分标签</div>
    <div>注意:类选择器、属性选择器、伪类选择器,权重为 10。</div>
    <h1>CSS3 属性选择器测试</h1>
    <!-- 1、利用属性选择器:选择某一类标签下含有某个属性的部分标签 -->
    <input type="text">
    <input type="text" value="你好哈哈哈哈呵呵"><br>
    <!-- 2、利用属性选择器:选择属性=特定值的元素-->
    <input type="time" name="" id="">
    <input type="password" name="" id="">
    <!-- 3、利用属性选择器:选择类名以某些值开头(^=)的元素-->
    <div class="cl class1">1</div>
    <div class="cl class2">2</div>
    <div class="cl class3">3</div>
    <div class="cl class4">4</div>
    <!-- 4、利用属性选择器:选择类名以某些值结尾($=)的元素 -->
    <div class="cl class1 ss">1</div>
    <div class="cl class2 ss">2</div>
    <div class="cl class3 ss">3</div>
    <div class="cl class4 ss">4</div>
    <!-- 5、利用属性选择器: 选取属性中含有某个内容的标签 -->
    <div class="xxx aaa bbb">1</div>
    <div class="xxx aaa bbb">2</div>
    <div class="xxx aaa bbb">3</div>
    <div class="xxx aaa bbb">4</div>

</body>

</html>

七、 CSS3新增的选择器--结构伪类选择器

7.1 结构伪类选择器使用情况

        根据父级选择器里面的子元素,一个父级有多个子元素,不用起太多名字了,直接使用这个方法,可以针对性选取。选取某一个,某几个,或者按照某个规律选取。

7.2 如何使用结构伪类选择器

        父亲 想要选取的子标签类型:挑选规则

        1、父亲 想要选取的子标签类型:first-child         选取第一个子标签

        2、父亲 想要选取的子标签类型:last-child         选取最后一个子标签

        3、父亲 想要选取的子标签类型:nth-child(数值 或者 n的表达式 或者 关键字)         选取某个子标签、或者以n的表达式和关键字选取某些子标签

        1、2 使用起来很简单,第三个使用起来比较灵活后面主要讨论。

7.3 如何使用nth-child(n)

        1、n 可以是数字,关键字和公式

        2、n 如果是数字,就是选择第 n 个子元素, 里面数字从1开始…

        3、 n 可以是关键字:even 偶数,odd 奇数

        4、n 可以是公式:常见的公式如下 ( 如果n是公式,则从0开始计算,但是第 0 个元素或者超出了元素的个数会被忽略 )

        注意:这里的n是从开始迭代的!但是第一个标签是从1开始增加的。

        5、2n 偶数;2n+1 奇数;5n 5的倍数;n+5 从第五个开始(包含第5个);-n+5 取前五个(包含第5个)。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS3新增结构伪类选择器</title>
    <style>
        /* 结构伪类选择器选取第一个子标签 */
        .box1 li:first-child {

            color: aquamarine;
        }

        .box2 li:nth-child(5) {

            color: aquamarine;
        }

        .box3 li:nth-child(odd) {

            background-color: blue;
        }

        .box3 li:nth-child(even) {

            background-color: red;
        }

        .box4 li:nth-child(-n+4) {
            /* n从0开始,每次加1 */

            background-color: red;
        }

        .box4 li:nth-child(n+5) {
            /* n从0开始,每次加1 */

            background-color: green;
        }
    </style>
</head>

<body>

    <h1>结构伪类选择器场景</h1>
    <div>根据父级选择器里面的子元素,一个父级有多个子元素,不用起太多名字了,直接使用这个方法,可以针对性选取。</div>
    <h1>结构伪类选择器场景</h1>
    <div>父类 想要选取的子标签类型:第几个{}</div>
    <h1>结构伪类选择器选取第一个子标签</h1>

    <ul class="box1">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
    </ul>
    <h1>结构伪类选择器选取任意一个子标签</h1>
    <ul class="box2">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
    </ul>
    <h1>结构伪类选择器选取任意多个子标签</h1>
    <ul class="box3">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
    </ul>
    <h1>结构伪类选择器nth,可以跟公式</h1>
    <ol class="box4">
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
        <li>6</li>
        <li>7</li>
        <li>8</li>
    </ol>
    <ol class="box5">
        <li>2n 偶数</li>
        <li>2n+1 奇数</li>
        <li>5n 5的倍数</li>
        <li>n+5 从第五个开始(包含第5个)</li>
        <li>-n+5 取前五个(包含第5个)</li>

    </ol>

</body>

</html>

八、 CSS3新增的选择器--伪元素选择器

7.1 如何使用

        父亲 想要选取的子标签类型:挑选规则

        1、父亲 想要选取的子标签类型:first-of-type         选取第一个子标签

        2、父亲 想要选取的子标签类型:last-of-type         选取最后一个子标签

        3、父亲 想要选取的子标签类型:nth-of-type(数值 或者 n的表达式 或者 关键字)         选取某个子标签、或者以n的表达式和关键字选取某些子标签

        注意:这里的n是从开始迭代的!但是第一个标签是从1开始增加的。

7.2 nth-of-type 和 nth-child 的区别

        通关观看使用方法,我们发现nth-of-type 和 nth-child几乎没有任何区别。但是两者其实有很大不同,体现在我们看不到的地方。体现在处理方式不同上。

        1、nth-child 会把所有的盒子(不论子标签的类型)都排列序号。执行的时候先看1、:nth-child(n)挑选第几个,2、再看:挑选出来的标签和想要选取的子标签类型是否一致。如果不一致则不执行内容。

        2、nth-of-type 只对我们指定的属性的标签进行排序,再去挑选。

        针对性的设计了一个测试案例---在多种标签下选择第二个div标签例子

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CSS3新增选择器nth-type-of</title>
  <style>
    .box2 div:nth-of-type(2) {
      background-color: red;
    }
  </style>
</head>

<body>

  <h1>在多种标签下选择第二个div标签例子</h1>
  <section class="box2">
    <p>我是p标签</p>
    <div>我是第一个div标签</div>
    <h1>我是h标签</h1>
    <div>我是第二个div标签</div>
  </section>

</html>

九、 CSS3盒子模型

9.1 伪元素选择器before和after

        before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素。

9.2 伪类选择器的特点

        1、before 和 after 创建一个元素,但是属于行内元素。

        2、新创建的这个元素在文档树中是找不到的,所以我们称为伪元素。

        3、语法: element::before {}。

        4、before 和 after 必须有 content 属性。否则不执行!!

        5、before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素。

        6、伪元素选择器和标签选择器一样,权重为 1。

        可以使用CSS创建一个新的HTML标签元素,简化html结构。

9.3 伪类选择器的使用1-实现左右浮动效果

        以前我们想要实现大盒子里左右 各一个小盒子的情况,是使用float浮动制作的,但是这样需要我们对盒子进行CSS设置,占用很多的篇幅。现在可以使用直接使用伪类选择器制作。

        

        

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>伪元素选择器before和after</title>
    <style>
        /* 这个的权重为 1 */
        .box1 {
            border: 1px solid red;
            width: 600px;
            height: 300px;
        }

        /* 这个的权重为1+1 */
        .box1::before {
            /* 必须包含content属性 */
            /* 可以转换属性,就可以设置长宽了 */
            content: "我是before";
            border: 1px solid red;


        }

        .box1::after {
            /* 必须包含content属性 */
            content: "我是after";
            border: 1px solid red;
            /* float: right; */


        }
    </style>
</head>

<body>
    <h1>使用场景</h1>
    可以使用CSS创建一个新的HTML标签元素,简化html结构。
    <div>注意:创建的是行内元素</div>
    <h1>注意</h1>
    <ul>
        <li>1、before 和 after 创建一个元素,但是属于行内元素</li>
        <li>2、新创建的这个元素在文档树中是找不到的,所以我们称为伪元素</li>
        <li>3、语法: element::before {}</li>
        <li>4、before 和 after 必须有 content 属性</li>
        <li>5、before 在父元素内容的前面创建元素,after 在父元素内容的后面插入元素</li>
        <li>6、伪元素选择器和标签选择器一样,权重为 1</li>
    </ul>

    <h1>使用测试</h1>
    <div class="box1">
        我是box原本的内容,我被伪元素包围了!!!!!!!!!!

    </div>

</body>

</html>
9.4 伪类选择器的使用2-字体图标

        比如我们设计一个下拉框,可以用到这个。

         这里分析一下怎么做:1、需要一个大盒子。2、使用标签::after的方法使用字体图标。3、两者子绝父相。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>伪元素选择器使用场景-字体图标</title>
    <style>
        @font-face {
            font-family: 'icomoon';
            src: url('fonts/icomoon.eot?1lv3na');
            src: url('fonts/icomoon.eot?1lv3na#iefix') format('embedded-opentype'),
                url('fonts/icomoon.ttf?1lv3na') format('truetype'),
                url('fonts/icomoon.woff?1lv3na') format('woff'),
                url('fonts/icomoon.svg?1lv3na#icomoon') format('svg');
            font-weight: normal;
            font-style: normal;
            font-display: block;
        }

        .box {
            position: relative;
            margin: 100px auto;
            width: 300px;
            height: 30px;
            border: 1px solid red;
            border-radius: 5px;
        }

        .box::after {
            font-family: 'icomoon';
            /* content: ""; */
            /* 字体图标的新的使用 */
            content: "\e91e";
            position: absolute;
            right: 10px;
            top: 8px;
            color: red;
        }
    </style>
</head>

<body>
    <h1>伪元素选择器使用场景-字体图标</h1>
    <div>不需要设置新的盒子,就可以简化代码</div>
    <div class="box">

    </div>
</body>

</html>

        这里需要我们回顾一下如何使用字体图片:1、在CSS中申明(直接粘贴即可)。2、在使用的标签下,同样申明。3、从demo中找到想用的图标复制过来即可。

        注意因为图标复制过来都一样,设计者看不出来,所以可以使用前面的专属代码。

 

         

9.5 伪类选择器的使用3-设置遮罩层

        首先强调一点,如何设置鼠标经过对伪元素的影响,明确效果是对伪元素的父亲做的,所以使用方法是:父亲:hover::before/after{}

        明确了使用方法,我们做一个以前的案例

         思路分析:1、需要一个大盒子承装图片和标题,还需要一个伪元素作为遮罩层。2、大盒子和遮罩层的关系依旧是子绝父相。3、伪元素必须含有content属性,设置隐藏display: none;。4、设置经过效果(注意写法),设置显示:.box:hover::before{display: block;}

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>伪元素选择器使用场景2-仿土豆网显示隐藏遮罩案例</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    .box {
      position: relative;
      margin: 100px auto;
      width: 400px;
      height: 280px;
      border: 1px solid red;
    }

    .box::before {
      content: "";
      position: absolute;
      width: 400px;
      height: 225px;
      display: none;
      background: rgba(0, 0, 0, 0.5) url(images/arr.png) no-repeat center;
    }

    /* 注意写法 */
    .box:hover::before {
      display: block;

    }

    .box img {
      width: 100%;
    }

    h1 {
      display: inline-block;
      border: 1px solid red;

    }
  </style>
</head>

<body>
  <h1>使用伪元素,设置遮罩层</h1>
  <div class="box">
    <img src="images/tudou.jpg" alt="">
    <h1>【预告】 今晚张柏芝做客</h6>
  </div>

</body>

</html>
9.6 伪元素的清除

        谈及清除这个操作,是因为一个父盒子,如果没内容,子元素都是浮动,那么父盒子没有高度。可以通过添加添加为伪元素避免。

9.6.1 单边法

        单边法是使用after,转化为块级元素,堵住父盒子的尾部。

        .box2::after {
            content: "必须是块级元素";
            display: block;
            height: 0;
            visibility: hidden;
            clear: both;
        }

9.6.2 双边法

        双边法是使用after,before,转化为块级元素,堵住父盒子的头部和尾部。

        这里注意为什么不是block,而是table?因为两个伪元素,需要转化为block后放在同一行,所以使用table。

        .box3::after,
        .box3::before {
            content: "";
            /* 因为是两个,所以使用table,块级元素,一行显示 */
            display: table;
        }

        .box3::after {
            clear: both;
        }

9.6.3 案例测试 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>伪元素选择器使用场景2-仿土豆网显示隐藏遮罩案例</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .box {
            position: relative;
            margin: 100px auto;
            width: 400px;
            height: 280px;
            border: 1px solid red;
        }

        .box::before {
            content: "";
            position: absolute;
            width: 400px;
            height: 225px;
            display: none;
            background: rgba(0, 0, 0, 0.5) url(images/arr.png) no-repeat center;
        }

        /* 注意写法 */
        .box:hover::before {
            display: block;

        }

        .box img {
            width: 100%;
        }

        h1 {
            display: inline-block;
            border: 1px solid red;

        }

        .box2 {
            border: 1px solid red;

            width: 300px;
            margin: 100PX auto;
        }

        .box2::after {
            content: "必须是块级元素";
            display: block;
            height: 0;
            visibility: hidden;
            clear: both;
        }

        .box2 .left1 {
            float: left;
            height: 30px;
            width: 30px;
            border: 1px solid red;
        }

        .box2 .right1 {
            float: right;
            height: 30px;
            width: 30px;
            border: 1px solid red;
        }

        .box3 {
            border: 1px solid red;

            width: 300px;
            margin: 100PX auto;
        }

        .box3 .left2 {
            float: left;
            height: 30px;
            width: 30px;
            border: 1px solid red;
        }

        .box3 .right2 {
            float: right;
            height: 30px;
            width: 30px;
            border: 1px solid red;
        }

        .box3::after,
        .box3::before {
            content: "";
            /* 因为是两个,所以使用table,块级元素,一行显示 */
            display: table;
        }

        .box3::after {
            clear: both;
        }
    </style>
</head>

<body>
    <h1>使用伪元素,设置遮罩层</h1>
    <div class="box">
        <img src="images/tudou.jpg" alt="">
        <h1>【预告】 今晚张柏芝做客</h6>
    </div>
    <h1>单边伪元素的清除</h1>
    <ul>
        <li>1、额外标签法也称为隔墙法,是 W3C 推荐的做法。</li>
        <li>2、父级添加 overflow 属性</li>
        <li>3、父级添加after伪元素</li>
        <li>4、父级添加双伪元素</li>
    </ul>
    <h1>单边伪元素的清除的例子</h1>
    <div>我是父盒子,如果没内容,子元素都是浮动,那么我没有高度。可以添加为伪元素避免。</div>
    <div class="box2">
        <span class="left1"></span>
        <span class="right1"></span>
    </div>
    <h1>双边伪元素的清除的例子</h1>
    <div>我是父盒子,如果没内容,子元素都是浮动,那么我没有高度。可以添加为伪元素避免。</div>
    <div class="box3">
        <span class="left2"></span>
        <span class="right2"></span>
    </div>
</body>

</html>

 

十、图片模糊处理

        给图片添加一个filter: blur(  px);就可以实现模糊效果。

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>图片模糊处理filter</title>
    <style>
        img {
            filter: blur(15px);
        }

        img:hover {
            filter: blur(0px);
        }
    </style>
</head>

<body>
    <h1>filter滤镜</h1>
    <div>filter: 函数(); 例如: filter: blur(5px); blur模糊处理 数值越大越模糊</div>
    <img src="images/tudou.jpg" alt="">
</body>

</html>

十一、宽度计算函数clac()

        我们可以借助这个方法,自动设置宽度。

        比如我们可以让子标签始终比父标签小30px。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS3属性calc函数</title>
    <style>
        .box1 {
            width: 200px;
            height: 100px;
            margin: 100px auto;
            background-color: aquamarine;
            border: 1px solid red;
        }

        .box1 .son1 {

            width: calc(100% - 30px);
            height: 20px;
            background-color: red;
            border: 1px solid blue;
        }
    </style>
</head>

<body>
    <h1>calc() 此CSS函数让你在声明CSS属性值时执行一些计算。</h1>
    <div> 使用如下: width: calc(100% - 80px); </div>
    <h1>子标签始终比父标签小30px</h1>
    <div class="box1">
        <div class="son1"></div>
    </div>
</body>

</html>

 

十二、CSS3的盒子模型

12.1 属性对盒子的影响

        以前学习的盒子的大小:border+padding+长宽。

        一旦改变border 和 padding ,盒子会被撑大。

12.2 盒子模型的设置

        通过box-sizing设置盒子的模式。

        1、content-box 就是默认的,以前我们使用的。

        2、border-box 盒子大小只由长宽决定,即使border占了大小,盒子的总大小不变

        注意:padding+border 不要超过宽度!!!!(否则也会撑大)

12.3测试案例

        我们设置两个盒子的初始大小都一样100px 100px。但是盒子的属性不同,一个是content-box,一个是border-box。我们来观察padding和border对大小的影响。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS3盒子模型</title>
    <style>
        .box1 {
            width: 100px;
            height: 100px;
            border: 10px solid red;
            background-color: hotpink;
            padding: 40px;
        }

        .box2 {
            /* 可以通过*直接设置 */
            box-sizing: border-box;
            width: 100px;
            height: 100px;
            border: 10px solid red;
            background-color: hotpink;
            padding: 5px;
        }
    </style>
</head>

<body>
    <h1>属性对盒子的影响</h1>
    <div>以前盒子的大小:border+padding+长宽</div>
    <div>border 和 padding 对盒子大小会变化</div>
    <div>CSS3盒子模型可以使用 box-sizing 指定,这样计算盒子大小的方式就发生改变了。</div>
    <div>1、content-box 就是默认的,以前我们使用的。2、border-box 盒子大小只由长宽决定,即使border占了大小,盒子的总大小不变</div>
    <div>注意:padding+border 不要超过宽度</div>
</body>

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

</html>

 

 

十三、 CSS3过渡效果

        这个方法最牛的点是可以不使用JS,直接使用CSS就可以完成过渡动画效果。 

        过渡动画: 是从一个状态 渐渐的过渡到另外一个状态。

11.1 如何使用

        注意:谁做过渡给谁加!!!加给需要变化的标签!!!

        注意一个写法:1、hover决定哪一个标签开始效果变化。2、son是变化后的值

/* 注意这个写法 */
        .box:hover .son {
            width: 200px;
            height: 10px;
            border-radius: 5px;
            background-color: red;
        }

        transition: 要过渡的属性 花费时间 运动曲线 何时开始; 后两个一般直接省略。

11.2 测试案例-进度条

        思路分析:1、一个大盒子充当外边框,一个小盒子充当进度条。2、设置小盒子的初始大小。3、设置鼠标hover后的属性变化。4、对小盒子添加过渡效果代码。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>CSS3过渡练习-进度条</title>
    <style>
        .box {
            width: 200px;
            height: 10px;
            padding: 1px;
            border: 1px solid red;
            border-radius: 5px;
            transition: all 10s;
        }

        .box .son {
            width: 100px;
            height: 10px;
            border-radius: 5px;
            background-color: red;
            transition: all 3s;
        }

        /* 注意这个写法 */
        .box:hover .son {
            width: 200px;
            height: 10px;
            border-radius: 5px;
            background-color: red;
        }
    </style>
</head>

<body>
    <h1>进度条案例</h1>
    <div class="box">
        <div class="son"></div>
    </div>
</body>

</html>

转载请注明出处或者链接地址:https://www.qianduange.cn//article/8485.html
标签
评论
会员中心 联系我 留言建议 回顶部
复制成功!