CSS学习笔记01

CSS笔记01

什么是CSS

  • CSS(Cascading Style Sheets ):层叠样式表,也可以叫做级联样式表,是一种用来表现 HTML 或 XML 等文件样式的计算机语言。
  • 字体,颜色,边距,高度,宽度,背景图片,网页定位,网页浮动……

在这里插入图片描述

CSS发展史

  • CSS1.0:定义了网页的基本属性(文字、颜色、位置和文本属性等)。
  • CSS2.0:内容(HTML)和表现(CSS)分离;div + CSS;使网页变得更简单,且利于SEO(搜索引擎优化)
  • CSS2.1:浮动、定位
  • CSS3.0:圆角、阴影、动画…… 浏览器兼容性问题~

快速入门

  • 项目结构:

在这里插入图片描述

  • 基本语法入门:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>

    <!-- style标签: 可以编写CSS代码,每一个声明语句都最好使用分号结尾
    语法:
        选择器 {
            声明1;
            声明2;
            声明3;
        }
    -->
    <style>
        h1 {
            color: red;
        }
    </style>

</head>
<body>

<h1>我是标题</h1>

</body>
</html>
  • 网页效果:

在这里插入图片描述

  • 在实际使用中,通常我们建议使用 HTML 与 CSS 分离的结构,即:把 HTML 代码中style标签内的 CSS 代码单独放在一个.css文件中,再在 HTML 代码中使用link标签引用该.css文件。
  • 例如以上代码就可以改写成这样两个文件:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>

    <!-- 使用link标签引用.css文件 -->
    <link rel="stylesheet" href="css/style.css">

</head>
<body>

<h1>我是标题</h1>

</body>
</html>

style.css

h1 {
    color: red;
}
  • 项目结构:

在这里插入图片描述

  • 网页效果:

在这里插入图片描述

  • 这两种方式实现的网页效果是一样的。

CSS的优势

  • 内容和表现分离
  • 网页结构表现统一,可以实现复用
  • 样式十分丰富
  • 利用 SEO,容易被搜索引擎收录

CSS的导入方式

  • CSS 的三种常用导入方式:
    • 行内样式
    • 内部样式
    • 外部样式
  • 如果在.html文件中同时出现了三种 CSS 导入方式,那么它们会查漏补缺,也就是说程序会把没有的效果自动加上去,已有的效果才会按照它们各自的优先级大小进行选择。
  • 优先级:行内样式 > 内部样式 > 外部样式
  • 注意:若一个.html文件中同时导入了内部样式与外部样式,并且它们都修饰同一属性,那么最终网页实现的是谁的样式取决于style标签和link标签在.html文件的head标签中的先后顺序。由于代码是从上向下执行的,后面的代码会把前面的代码覆盖, 因此,网页最终实现的是写在后面的 CSS 样式,该规则也叫作就近原则,即谁离要修饰的标签更近就实现谁的样式。
  • 示例:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>

    <!-- 内部样式 -->
    <style>
        h1 {
            color: green;
        }
    </style>

    <!-- 外部样式 -->
    <link rel="stylesheet" href="css/style.css">

</head>
<body>

<!-- 行内样式: 在标签元素中,编写一个style属性,编写样式即可 (不推荐使用) -->
<h1 style="color: red">我是标题</h1>

</body>
</html>

style.css

/* 外部样式 */
h1 {
    color: yellow;
}
  • 查看网页效果:

在这里插入图片描述

  • 此时网页实现的是我们定义的行内样式(它离我们要修饰的h1标签最近)。
  • 我们删除h1标签中的行内样式:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>

    <!-- 内部样式 -->
    <style>
        h1 {
            color: green;
        }
    </style>

    <!-- 外部样式 -->
    <link rel="stylesheet" href="css/style.css">

</head>
<body>

<h1>我是标题</h1>

</body>
</html>

style.css

/* 外部样式 */
h1 {
    color: yellow;
}
  • 查看网页效果:

在这里插入图片描述

  • 由于在.html文件中,我们的link标签写在style标签之后(link标签离我们要修饰的h1标签更近),所以此时网页实现的是我们定义的外部样式。
  • 我们再调换一下style标签与link标签在.html文件中的顺序:

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>

    <!-- 外部样式 -->
    <link rel="stylesheet" href="css/style.css">
    
    <!-- 内部样式 -->
    <style>
        h1 {
            color: green;
        }
    </style>

</head>
<body>

<h1>我是标题</h1>

</body>
</html>

style.css

/* 外部样式 */
h1 {
    color: yellow;
}
  • 查看网页效果:

在这里插入图片描述

  • 由于在.html文件中,我们的style标签写在link标签之后(style标签离我们要修饰的h1标签更近),所以此时网页实现的是我们定义的内部样式。

拓展:外部样式的两种写法

  • 链接式(推荐使用):
<!-- 链接式 -->
<link rel="stylesheet" href="css/style.css">
  • 导入式
<!-- 导入式 -->
<style>
    @import url("css/style.css");
</style>
  • 区别:
    • link属于 HTML 标签,但@import 是 CSS 提供的一种方式。link标签不仅可以加载 CSS,还可以定义 RSS、定义 rel 连接属性等;但是@import 只能加载 CSS。
    • 兼容性的差别。@import是 CSS2.1 提出的,所以在此之前的旧浏览器不支持,即@import只能在 IE5 以上才能被识别;但是link标签不存上述的问题。
    • 在使用 JS 控制 DOM 去改变样式的时候,只能用link标签,不能使用@import指令。原因是 DOM 不可控的。

选择器

  • 作用:定位,选择页面上的某一个或者某一类元素。

基本选择器

  • 基本选择器包括以下三种:

    • 标签选择器:选择一种标签。它在代码中的格式如下:
    标签名 {
    	声明1;
    	声明2;
    	声明3;
    }
    
    • 类选择器:选择所有class属性一致的标签,可以实现跨标签选择。它在代码中的格式如下:
    .class的名称 {
    	声明1;
    	声明2;
    	声明3;
    }
    
    • id选择器:选择指定id的标签,全局唯一。它在代码中的格式如下:
    #id名称 {
    	声明1;
    	声明2;
    	声明3;
    }
    

标签选择器

  • 示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>标签选择器</title>

    <style>
        /* 标签选择器,会选择到页面上所有这个标签的元素
        格式: 
            标签名 {
                声明1;
                声明2;
                声明3;
            }
        */
        h1 {
            color: red; /* 字体颜色 */
            background: skyblue; /* 背景色 */
            border-radius: 24px; /* 圆角边框 */
        }

        p {
            font-size: 80px; /* 字体大小 */
        }
    </style>

</head>
<body>

<h1>我在学习Java</h1>
<h1>我在学习HTML</h1>
<p>我在学习CSS</p>

</body>
</html>
  • 网页效果:

在这里插入图片描述

类选择器

  • 示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>类选择器</title>

    <style>
        /* 类选择器
        格式:
            .class的名称 {
                声明1;
                声明2;
                声明3;
            }
        优点: 可以给多个标签归类(同一个class),可以复用
        */
        .study {
            color: orange;
        }

        .rest {
            color: lightgreen;
        }
    </style>

</head>
<body>

<h1 class="study">我在学习Java</h1>
<h1 class="rest">我在休息</h1>
<h1 class="study">我在学习HTML</h1>
<p class="study">我在学习CSS</p>

</body>
</html>
  • 网页效果:

在这里插入图片描述

id选择器

  • 示例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>id选择器</title>
    <style>
        /* id选择器: id必须保证全局唯一
        格式:
            #id名称 {
                声明1;
                声明2;
                声明3;
            }
        */
        #java {
            color: red;
        }
        #html {
            color: #34b1e5;
        }
    </style>
</head>
<body>

<h1 id="java">我在学习Java</h1>
<h1 id="html">我在学习HTML</h1>
<h1 id="css">我在学习CSS</h1>
<h1 id="js">我在学习JS</h1>

</body>
</html>
  • 网页效果:

在这里插入图片描述

测试三种基本选择器的优先级

  • 我们先测试标签选择器和类选择器的优先级大小:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>id选择器</title>
    <style>
        .study {
            color: blue;
        }

        h1 {
            color: green;
        }
    </style>
</head>
<body>

<h1 class="study">我在学习Java</h1>
<h1 class="study">我在学习HTML</h1>
<h1>我在学习CSS</h1>
<h1>我在学习JS</h1>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

  • 得出结论:类选择器 > 标签选择器,不遵循就近原则。
  • 我们再测试类选择器和id选择器的优先级大小:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>id选择器</title>
    <style>
        #java {
            color: red;
        }

        .study {
            color: blue;
        }

        h1 {
            color: green;
        }
    </style>
</head>
<body>

<h1 class="study" id="java">我在学习Java</h1>
<h1 class="study">我在学习HTML</h1>
<h1>我在学习CSS</h1>
<h1>我在学习JS</h1>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

  • 得出结论:id选择器 > 类选择器,不遵循就近原则。
  • 总结:基本选择器的优先级是固定的,不遵循就近原则,id选择器 > 类选择器 > 标签选择器。

层次选择器

  • 层次选择器:通过 HTML 的 DOM 元素之间的层次关系获取元素,其主要的层次关系包括后代,父子,相邻兄弟和通用兄弟几种关系,通过其中某类关系可以方便快捷地选定需要的元素。
  • 后代选择器,选择M元素内部所有的后代N元素 --> 曾爷爷 【爷爷 父亲 你】。它的格式如下:
元素M 元素N {
	声明1;
	声明2;
	声明3;
}
  • 子代选择器,选择M元素内部所有的第1级子代N元素 --> 曾爷爷 【爷爷】 父亲 你。它的格式如下:
元素M > 元素N {
	声明1;
	声明2;
	声明3;
}
  • 相邻兄弟选择器,选择M元素相邻的下一个元素(M、N是同级元素)–> 大爷 【二大爷】 三大爷 四大爷 父亲 你。它的格式如下:
元素M + 元素N {
	声明1;
	声明2;
	声明3;
}
  • 通用兄弟选择器,选择M元素后所有的同级N元素(M、N是同级元素)–> 大爷 【二大爷 三大爷 四大爷】 父亲 你。它的格式如下:
元素M ~ 元素N {
	声明1;
	声明2;
	声明3;
}
  • 准备工作:
  • 我们先根据下图的元素层次来写一个 HTML 页面:

在这里插入图片描述

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
    
</body>
</html>
  • 查看网页效果:

在这里插入图片描述

  • 准备工作完成,接下来我们就可以正式开始层次选择器部分的学习了:

后代选择器

  • 使用后代选择器,选择元素body的所有后代元素p
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

    <style>
        /* 后代选择器 */
        body p {
            background: skyblue;
        }
    </style>

<body>
    
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
    
</body>
</html>
  • 查看网页效果:

在这里插入图片描述

子代选择器

  • 使用子代选择器,选择元素body的所有子代元素p
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

    <style>
        /* 子代选择器 */
        body > p {
            background: yellow;
        }
    </style>

<body>
    
    <p>p1</p>
    <p>p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
    
</body>
</html>
  • 查看网页效果:

在这里插入图片描述

相邻兄弟选择器

  • 使用相邻兄弟选择器,选择id=active的元素p(p1)的相邻的下一个元素p
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

    <style>
        /* 后代选择器 */
        /*body p {*/
        /*    background: skyblue;*/
        /*}*/
        /* 子代选择器 */
        /*body>p {*/
        /*    background: yellow;*/
        /*}*/
        /* 相邻兄弟选择器 */
        #active + p {
            background: brown;
        }
    </style>

<body>
    
    <p>p0</p>
    <p id="active">p1</p>
    <p>p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
    
</body>
</html>
  • 查看网页效果:

在这里插入图片描述

通用兄弟选择器

  • 使用通用兄弟选择器,选择id=active的元素p(p1)之后的所有同级元素p
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

    <style>
        /* 后代选择器 */
        /*body p {*/
        /*    background: skyblue;*/
        /*}*/
        /* 子代选择器 */
        /*body>p {*/
        /*    background: yellow;*/
        /*}*/
        /* 相邻兄弟选择器 */
        /*#active + p {*/
        /*    background: brown;*/
        /*}*/
        /* 通用兄弟选择器 */
        #active ~ p {
            background: green;
        }
    </style>

<body>
    <p>p0</p>
    <p id="active">p1</p>
    <p>p2</p>
    <p>p3</p>
    <ul>
        <li>
            <p>p4</p>
        </li>
        <li>
            <p>p5</p>
        </li>
        <li>
            <p>p6</p>
        </li>
    </ul>
</body>
</html>
  • 查看网页效果:

在这里插入图片描述

结构伪类选择器

什么是伪类

  • 伪类:

    • 伪类是选择器的一种,它用于选择处于特定状态的元素,比如当它们是这一类型的第一个元素时,或者是当鼠标指针悬浮在元素上面的时候。它们表现得会像是你向你的文档的某个部分应用了一个类一样,帮你在你的标记文本中减少多余的类,让你的代码更灵活、更易于维护。
    • 伪类就是开头为冒号的关键字,例如:hover:first-child等。
  • 我们本节先学习伪类选择器中和结构相关的选择器,即结构伪类选择器。

  • 准备工作:

  • 下面是一个 HTML 页面的元素层次图:

在这里插入图片描述

  • 我们根据上面的层次图来写一个 HTML 页面:

indedx.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h1>h1</h1>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
</ul>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

  • 准备工作完成,接下来我们就可以正式开始结构伪类选择器部分的学习了:

:first-child & :last-child

  • 现在我们通过使用结构伪类选择器的方式来选择ul的第一个和最后一个子元素li
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!-- 使用结构伪类选择器 -->
    <style>
        /* 选择ul的第一个子元素li */
        ul li:first-child {
            background: #2addf5;
        }

        /* 选择ul的最后一个子元素li */
        ul li:last-child {
            background: red;
        }
    </style>

</head>
<body>

<h1>h1</h1>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
</ul>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

:nth-child(x)【拓展】

  • 通过使用结构伪类选择器(:nth-child(x))的方式来选择p1
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!-- 使用结构伪类选择器 -->
    <style>
        /* 选择ul的第一个子元素li */
        ul li:first-child {
            background: #2addf5;
        }

        /* 选择ul的最后一个子元素li */
        ul li:last-child {
            background: red;
        }

        /* 选择p1:
        通过p元素定位到p的父级元素(body),然后选择其父级元素(body)的第二个子元素(p1)
        注意: 只有当父级元素(body)的第二个子元素的标签类型为p时,才能生效
        */
        p:nth-child(2) {
            background: green;
        }
    </style>

</head>
<body>

<h1>h1</h1>
<p>p1</p>
<p>p2</p>
<p>p3</p>
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
</ul>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

  • 注意:这里只有当p元素的父级元素(body)的第二个子元素的标签类型为p时,选择器中的声明语句才能生效。
  • 验证:我们将p1h1调换一下位置,这样p元素的父级元素(body)的第二个子元素的标签类型就不再是P,而是变成了h1
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!-- 使用结构伪类选择器 -->
    <style>
        /* 选择ul的第一个子元素li */
        ul li:first-child {
            background: #2addf5;
        }

        /* 选择ul的最后一个子元素li */
        ul li:last-child {
            background: red;
        }

        /* 选择p1:
        定位到p元素的父级元素(body),然后选择其父级元素(body)的第二个子元素(p1)
        注意: 只有当父级元素(body)的第二个子元素的标签类型为p时,才能生效
        */
        p:nth-child(2) {
            background: green;
        }
    </style>

</head>
<body>

<p>p1</p>
<h1>h1</h1>
<p>p2</p>
<p>p3</p>
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
</ul>

</body>
</html>
  • 我们再查看此时的网页效果:

在这里插入图片描述

  • 可以发现:当p元素的父级元素(body)的第二个子元素的标签类型不为p时,选择器中的声明语句并没有生效。

:nth-of-type(x)【拓展】

  • 通过使用结构伪类选择器(:nth-of-type(x))的方式来选择p1
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!-- 使用结构伪类选择器 -->
    <style>
        /* 选择ul的第一个子元素li */
        ul li:first-child {
            background: #2addf5;
        }

        /* 选择ul的最后一个子元素li */
        ul li:last-child {
            background: red;
        }

        /* 选择p1:
        定位到p元素的父级元素(body)中所有类型为p的子元素,然后选择其中的第一个元素(p1)
        */
        p:nth-of-type(1) {
            background: yellow;
        }
    </style>

</head>
<body>

<h1>h1</h1>    
<p>p1</p>
<p>p2</p>
<p>p3</p>
<ul>
    <li>li1</li>
    <li>li2</li>
    <li>li3</li>
</ul>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

属性选择器【重点】

  • 属性选择器:通过已经存在的属性名或属性值匹配元素。
  • 准备工作:
  • 首先我们写一个网页,在它的body中有一个p标签,p标签又有十个a标签,我们给每个a标签都添加一些属性(herfclassid等),再使用后代选择器选中所有的a标签,给其添加一些样式,具体代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /* 后代选择器,选择元素demo下的所有后代的a元素 */
        .demo a {
            float: left; /* 设置浮动 */
            display: block; /* 设置为块级元素 */
            height: 50px; /* a标签的高度 */
            width: 50px; /* a标签的宽度 */
            border-radius: 10px; /* 圆角边框 */
            background: skyblue; /* a标签的背景颜色 */
            text-align: center; /* 文字居中对齐 */
            color: grey; /* 文字颜色 */
            text-decoration: none;  /* 去掉下划线 */
            margin-right: 5px; /* 设置间隔(每个a标签都向右偏移5px) */
            font: bold 20px/50px Arial; /* 设置字体样式(加粗 字体大小/行高 字体) */
        }
    </style>

</head>
<body>

<p class="demo">

    <a href="https://www.baidu.com" class="links item first" id="first">1</a>
    <a href="" class="links item active" target="_blank" title="test">2</a>
    <a href="images/123.html" class="links item">3</a>
    <a href="images/123.png" class="links item">4</a>
    <a href="images/123.jpg" class="links item">5</a>
    <a href="abc" class="links item">6</a>
    <a href="/a.pdf" class="links item">7</a>
    <a href="/abc.pdf" class="links item">8</a>
    <a href="abc.doc" class="links item">9</a>
    <a href="abcd.doc" class="links item last" id="last">10</a>

</p>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

  • 准备工作完成,接下来我们就可以正式开始属性选择器部分的学习了:

元素[属性]

  • 通过使用属性选择器来选择所有包含id属性的a元素:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /* 后代选择器,选择元素demo下的所有后代的a元素 */
        .demo a {
            float: left; /* 设置浮动 */
            display: block; /* 设置为块级元素 */
            height: 50px; /* a标签的高度 */
            width: 50px; /* a标签的宽度 */
            border-radius: 10px; /* 圆角边框 */
            background: skyblue; /* a标签的背景颜色 */
            text-align: center; /* 文字居中对齐 */
            color: grey; /* 文字颜色 */
            text-decoration: none;  /* 去掉下划线 */
            margin-right: 5px; /* 设置间隔(每个a标签都向右偏移5px) */
            font: bold 20px/50px Arial; /* 设置字体样式(加粗 字体大小/行高 字体) */
        }

        /* 属性选择器 */
        /* 选择所有包含id属性的a元素 */
        a[id] {
            background: yellow;
        }
    </style>

</head>
<body>

<p class="demo">

    <a href="https://www.baidu.com" class="links item first" id="first">1</a>
    <a href="" class="links item active" target="_blank" title="test">2</a>
    <a href="images/123.html" class="links item">3</a>
    <a href="images/123.png" class="links item">4</a>
    <a href="images/123.jpg" class="links item">5</a>
    <a href="abc" class="links item">6</a>
    <a href="/a.pdf" class="links item">7</a>
    <a href="/abc.pdf" class="links item">8</a>
    <a href="abc.doc" class="links item">9</a>
    <a href="abcd.doc" class="links item last" id="last">10</a>

</p>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

元素[属性=“属性值”]

  • 通过使用属性选择器来选择其中id属性值为firsta元素:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /* 后代选择器,选择元素demo下的所有后代的a元素 */
        .demo a {
            float: left; /* 设置浮动 */
            display: block; /* 设置为块级元素 */
            height: 50px; /* a标签的高度 */
            width: 50px; /* a标签的宽度 */
            border-radius: 10px; /* 圆角边框 */
            background: skyblue; /* a标签的背景颜色 */
            text-align: center; /* 文字居中对齐 */
            color: grey; /* 文字颜色 */
            text-decoration: none;  /* 去掉下划线 */
            margin-right: 5px; /* 设置间隔(每个a标签都向右偏移5px) */
            font: bold 20px/50px Arial; /* 设置字体样式(加粗 字体大小/行高 字体) */
        }

        /* 属性选择器 */
        /* 选择id属性值为first的a元素 */
        a[id="first"] {
            background: yellow;
        }
    </style>

</head>
<body>

<p class="demo">

    <a href="https://www.baidu.com" class="links item first" id="first">1</a>
    <a href="" class="links item active" target="_blank" title="test">2</a>
    <a href="images/123.html" class="links item">3</a>
    <a href="images/123.png" class="links item">4</a>
    <a href="images/123.jpg" class="links item">5</a>
    <a href="abc" class="links item">6</a>
    <a href="/a.pdf" class="links item">7</a>
    <a href="/abc.pdf" class="links item">8</a>
    <a href="abc.doc" class="links item">9</a>
    <a href="abcd.doc" class="links item last" id="last">10</a>

</p>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

元素[属性*=“属性值”]

  • 通过使用属性选择器来选择其中class属性值包含linksa元素:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /* 后代选择器,选择元素demo下的所有后代的a元素 */
        .demo a {
            float: left; /* 设置浮动 */
            display: block; /* 设置为块级元素 */
            height: 50px; /* a标签的高度 */
            width: 50px; /* a标签的宽度 */
            border-radius: 10px; /* 圆角边框 */
            background: skyblue; /* a标签的背景颜色 */
            text-align: center; /* 文字居中对齐 */
            color: grey; /* 文字颜色 */
            text-decoration: none;  /* 去掉下划线 */
            margin-right: 5px; /* 设置间隔(每个a标签都向右偏移5px) */
            font: bold 20px/50px Arial; /* 设置字体样式(加粗 字体大小/行高 字体) */
        }

        /* 属性选择器 */
        /* 选择class属性值包含links的a元素 */
        a[class*=links] {
            background: yellow;
        }
    </style>

</head>
<body>

<p class="demo">

    <a href="https://www.baidu.com" class="links item first" id="first">1</a>
    <a href="" class="links item active" target="_blank" title="test">2</a>
    <a href="images/123.html" class="links item">3</a>
    <a href="images/123.png" class="links item">4</a>
    <a href="images/123.jpg" class="links item">5</a>
    <a href="abc" class="links item">6</a>
    <a href="/a.pdf" class="links item">7</a>
    <a href="/abc.pdf" class="links item">8</a>
    <a href="abc.doc" class="links item">9</a>
    <a href="abcd.doc" class="links item last" id="last">10</a>

</p>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

元素[属性^=“xxx”]

  • 通过使用属性选择器来选择其中href属性值以https开头的a元素:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /* 后代选择器,选择元素demo下的所有后代的a元素 */
        .demo a {
            float: left; /* 设置浮动 */
            display: block; /* 设置为块级元素 */
            height: 50px; /* a标签的高度 */
            width: 50px; /* a标签的宽度 */
            border-radius: 10px; /* 圆角边框 */
            background: skyblue; /* a标签的背景颜色 */
            text-align: center; /* 文字居中对齐 */
            color: grey; /* 文字颜色 */
            text-decoration: none;  /* 去掉下划线 */
            margin-right: 5px; /* 设置间隔(每个a标签都向右偏移5px) */
            font: bold 20px/50px Arial; /* 设置字体样式(加粗 字体大小/行高 字体) */
        }

        /* 属性选择器 */
        /* 选择href属性值以https开头的a元素 */
        a[href^="https"] {
            background: yellow;
        }
    </style>

</head>
<body>

<p class="demo">

    <a href="https://www.baidu.com" class="links item first" id="first">1</a>
    <a href="" class="links item active" target="_blank" title="test">2</a>
    <a href="images/123.html" class="links item">3</a>
    <a href="images/123.png" class="links item">4</a>
    <a href="images/123.jpg" class="links item">5</a>
    <a href="abc" class="links item">6</a>
    <a href="/a.pdf" class="links item">7</a>
    <a href="/abc.pdf" class="links item">8</a>
    <a href="abc.doc" class="links item">9</a>
    <a href="abcd.doc" class="links item last" id="last">10</a>

</p>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

元素[属性$=“xxx”]

  • 通过使用属性选择器来选择其中href属性值以pdf结尾的a元素:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <style>
        /* 后代选择器,选择元素demo下的所有后代的a元素 */
        .demo a {
            float: left; /* 设置浮动 */
            display: block; /* 设置为块级元素 */
            height: 50px; /* a标签的高度 */
            width: 50px; /* a标签的宽度 */
            border-radius: 10px; /* 圆角边框 */
            background: skyblue; /* a标签的背景颜色 */
            text-align: center; /* 文字居中对齐 */
            color: grey; /* 文字颜色 */
            text-decoration: none;  /* 去掉下划线 */
            margin-right: 5px; /* 设置间隔(每个a标签都向右偏移5px) */
            font: bold 20px/50px Arial; /* 设置字体样式(加粗 字体大小/行高 字体) */
        }

        /* 属性选择器 */
        /* 选择href属性值以pdf结尾的a元素 */
        a[href$="pdf"] {
            background: yellow;
        }
    </style>

</head>
<body>

<p class="demo">

    <a href="https://www.baidu.com" class="links item first" id="first">1</a>
    <a href="" class="links item active" target="_blank" title="test">2</a>
    <a href="images/123.html" class="links item">3</a>
    <a href="images/123.png" class="links item">4</a>
    <a href="images/123.jpg" class="links item">5</a>
    <a href="abc" class="links item">6</a>
    <a href="/a.pdf" class="links item">7</a>
    <a href="/abc.pdf" class="links item">8</a>
    <a href="abc.doc" class="links item">9</a>
    <a href="abcd.doc" class="links item last" id="last">10</a>

</p>

</body>
</html>
  • 查看网页效果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/94030.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

兼容AD210 车规级高精度隔离放大器:ISO EM210

车规级高精度隔离放大器&#xff1a;ISO EM210 Pin-Pin兼容AD210的低成本,小体积DIP标准38Pin金属外壳封装模块&#xff0c;能有效屏蔽现场EMC空间干扰。功能设计全面&#xff0c;采用非固定增益方式&#xff0c;输入信号经过输入端的前置放大器&#xff08;增益为1-100&#x…

设计模式之命令模式(Command)的C++实现

1、命令模式的提出 在软件开发过程中&#xff0c;“行为请求者”和“行为实现者”通常呈现一种“紧耦合”&#xff0c;如果行为的实现经常变化&#xff0c;则不利于代码的维护。命令模式可以将行为的请求者和行为的实现者进行解耦。具体流程是将行为请求者封装成一个对象&…

AODV代码实现详解——原理与源码分析(一)

首先来几个标准参考&#xff1a; RFC 3561 RFC 3561 中文翻译 一个博客 挺好的另一个博客 事件&#xff1f; 字段长度&#xff1f; 事件驱动 各种定时器 状态转移图&#xff1f; AODV协议 基本概念 AODV&#xff08;Ad hoc On-Demand Distance Vector&#xff09;是一种基于…

FusionAD:用于自动驾驶预测和规划任务的多模态融合

论文背景 自动驾驶&#xff08;AD&#xff09;任务通常分为感知、预测和规划。在传统范式中&#xff0c;AD中的每个学习模块分别使用自己的主干&#xff0c;独立地学习任务。 以前&#xff0c;基于端到端学习的方法通常基于透视视图相机和激光雷达信息直接输出控制命令或轨迹…

【CSS】轮播图案例开发 ( 基本设置 | 子绝父相 | 浏览器水平居中 | 圆角设置 | 绝对定位居中设置 )

代码示例 : <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Banner 轮播</title><style>/* 取消浏览器或者其它标签的默认的内外边距 */* {margin: 0;padding: 0;}/* 取消列表样式 主要是…

特殊的矩阵与特殊的矩阵关系———实对称、正定、对角、零矩阵

一、特殊的矩阵 1、实对称矩阵 定义&#xff1a;都是实数&#xff0c;且 性质&#xff1a; &#xff08;1&#xff09;可以用特征值来求A的大小 &#xff08;2&#xff09;可以得到A的秩 &#xff08;3&#xff09;必定可以相似对角化 运用&#xff1a; 与实对称矩阵A合同的矩…

C#,《小白学程序》第二课:数组与排序

1 文本格式 /// <summary> /// 《小白学程序》第二课&#xff1a;数组与排序 /// </summary> /// <param name"sender"></param> /// <param name"e"></param> private void button2_Click(object sender, EventArgs …

如何选择合适的损失函数

目录 如何选择合适的损失函数 1、均方误差&#xff0c;二次损失&#xff0c;L2损失&#xff08;Mean Square Error, Quadratic Loss, L2 Loss&#xff09; 2、平均绝对误差&#xff0c;L1损失&#xff08;Mean Absolute Error, L1 Loss&#xff09; 3、MSE vs MAE &#xff…

数据增强:提高机器学习性能的有效技巧

文章目录 数据增强的原理常用的数据增强技术图像数据增强文本数据增强音频数据增强 数据增强的代码示例拓展应用与挑战结论 &#x1f389;欢迎来到AIGC人工智能专栏~数据增强&#xff1a;提高机器学习性能的有效技巧 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&a…

Rabbitmq的Federation Exchange

(broker 北京 ) &#xff0c; (broker 深圳 ) 彼此之间相距甚远&#xff0c;网络延迟是一个不得不面对的问题。有一个在北京的业务(Client 北京 ) 需要连接 (broker 北京 ) &#xff0c;向其中的交换器 exchangeA 发送消息&#xff0c;此时的网络延迟很小&#xff0c;(C…

【网络基础实战之路】基于三层架构实现一个企业内网搭建的实战详解

系列文章传送门&#xff1a; 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…

推荐前 6 名 JavaScript 和 HTML5 游戏引擎

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建3D应用场景 事实是&#xff0c;自从引入JavaScript WebGL API以来&#xff0c;现代浏览器具有直观的功能&#xff0c;使它们能够渲染更复杂和复杂的2D和3D图形&#xff0c;而无需依赖第三方插件。 你可以用纯粹的JavaScript开…

c++冒泡排序的动画演示+程序实现

冒泡排序&#xff08;Bubble Sort&#xff09;是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列&#xff0c;依次比较两个相邻的元素&#xff0c;如果顺序&#xff08;如从大到小、首字母从Z到A&#xff09;错误就把他们交换过来。走访元素的工作是重复…

小白到运维工程师自学之路 第七十九集 (基于Jenkins自动打包并部署Tomcat环境)2

紧接上文 4、新建Maven项目 clean package -Dmaven.test.skiptrue 用于构建项目并跳过执行测试 拉到最后选择构建后操作 SSH server webExec command scp 192.168.77.18:/root/.jenkins/workspace/probe/psi-probe-web/target/probe.war /usr/local/tomcat/webapps/ /usr/loca…

代码随想录算法训练营第五十天|LeetCode 739,496

目录 LeetCode 739.每日温度 LeetCode 496.下一个更大元素&#xff01; LeetCode 739.每日温度 文章讲解&#xff1a;代码随想录 力扣题目&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 代码如下&#xff08;Java&#xff09;&#xf…

W6100-EVB-PICO进行UDP组播数据回环测试(九)

前言 上一章我们用我们的开发板作为UDP客户端连接服务器进行数据回环测试&#xff0c;那么本章我们进行UDP组播数据回环测试。 什么是UDP组播&#xff1f; 组播是主机间一对多的通讯模式&#xff0c; 组播是一种允许一个或多个组播源发送同一报文到多个接收者的技术。组播源将…

ubuntu22安装和部署Kettle8.2

前提 kettle是纯java编写的etl开源工具&#xff0c;目前kettle7和kettle8都需要java8或者以上才能正常运行。所以运行kettle前先检查java环境是否正确配置&#xff0c;java版本是否是8或者以上。 kettle安装 1、创建kettle目录&#xff0c;并将kettle的zip包解压到kettle目…

c++的分文件编写

前言 在C中&#xff0c;你可以将代码分割成多个文件来提高可维护性和组织性。分割文件有助于将代码模块化&#xff0c;使大型项目更易于管理。以下是C中关于分文件的一些规则和概念&#xff1a; 理论知识 头文件&#xff08;Header Files&#xff09;&#xff1a; 头文件通常…

多线程(二)

一.关于线程的常用操作 1.启动线程 run(): 对于run方法的覆写只是指定线程要做的任务清单&#xff0c;而不是真正的启动线程 start()&#xff1a; start()方法才是真正的在底层创建出一个线程&#xff0c;并且启动 2.中断线程 1.通过共享的标记来中断 package demo; impor…

交通科技与管理杂志社交通科技与管理编辑部2023年第9期目录

专家论坛 黑龙江省经济高质量发展与生态环境保护耦合协调发展研究 刘降斌;祃玉帅; 1-5142 我国省际数字经济高质量发展水平综合评价研究 耿娟;毕晨曦; 6-8 振兴龙江《交通科技与管理》投稿邮箱&#xff1a;cn7kantougao163.com(注明投稿“《交通科技与管理》”) 数…