一、CSS的4种引入方式

1. 内联式

```

Egon是一个非常了不起的人

```

2. 嵌入式

```html

```

3. 导入式

```html

```

4. 外联式(企业开发中使用这种方式)

```html

```

注意:导入式会在整个网页装载完后再装载CSS文件,因此会导致一个问题,如果网页比较大则会出现先显示无样式的页面,闪烁一下之后,再出现网页的样式。这是导入式固有的一个缺陷。使用链接式时与导入式不同的是它会以网页文件主体装载前装载CSS文件,因此显示出来的网页从一开始就是带样式的效果,它不会像导入式那样先显示无样式的网页,然后再显示有样式的网页,这是链接式的优点。

作用:根据指定的类名,在当前界面中找到对应的所有标签,并设置属性。

格式:.class名 { 属性:值; }

注意点:

1. 在企业开发中,如果仅仅只是为了设置样式,通常不会使用类名。在前端开发中,类名通常是留给CSS使用的。

2. 每个标签都可以设置一个或多个类名,类名相当于标签的别名。因此在同一界面内,类名可以重复。

3. 引用类名时,需要在类名前加上"."。

4. 类名的命名只能由字符、数字、下划线组成,且不能以数字开头,更不能是HTML关键字如p、a、img等。

## 在CSS中使用类名设置样式

在CSS中,我们可以使用`.类名称`来选择特定的元素并为其设置样式。这是一种非常有用的功能,可以帮助我们根据需要定制页面上的各个元素的外观和行为。下面是关于如何使用类名设置样式的一些说明:

### 语法格式

在CSS中,要为指定的类名设置样式,需要使用以下语法格式:

```css

.类名称 {

属性:值;

}

```

其中,“.”表示类选择器,用于选择具有指定类名的元素;“类名称”是指你要应用样式的那个类名;“属性:值”表示你要设置的CSS属性及其对应的值。

### 注意点

在使用类名设置样式时,需要注意以下几点:

1. 类名是专门用来给某个特定的标签设置样式的。你可以在一个HTML文档中为同一个标签设置多个类名(用空格分隔),这样就可以实现对这个标签的不同样式设置。

2. 每个标签都可以设置一个或多个class,它们相当于人/标签的名称。因此,在同一个界面内,class可以重复。

3. 引用class时一定要加上“.”,否则无法正确选择元素。

4. 类名的命名规则与id的命名规则相同,通常采用小写字母、数字、下划线组成,但不能以数字开头。

```html

id选择器

大多数人的帅,都是浮在表面的,是外表的帅

而EGON,不仅具备外表帅,内心更是帅了一逼

EGON就是我,我就是EGON

```

练习:第一行与第三行的颜色都是红色,第一行与第二行的字体大小都是50px,第二行与第三行内容有个下划线。

```html

id选择器

第一行内容

第二行内容

第三行内容

```

在CSS中,我们可以使用多种选择器来选择和设置HTML元素的样式。其中,`class`选择器用于根据元素的类名来设置样式,而`*`通配符选择器则可以匹配任何元素。

1. `class`选择器:通过指定元素的类名,可以选择并设置该类名下所有元素的样式。例如,如果我们有一个类名为`.rr`的元素,我们可以通过以下方式设置其样式:

```css

.rr {

color: red;

}

```

这将使得所有具有`.rr`类名的元素的文字颜色变为红色。

2. 标签选择器:标签选择器可以根据指定的HTML标签名称来选择元素。例如,如果我们想要选择所有的段落(`

`)元素,我们可以使用以下代码:

```css

p {

color: red;

}

```

这将使得所有的段落元素的文字颜色变为红色。需要注意的是,标签选择器只能选择当前页面中的元素,不能单独选中某一特定标签。

3. `*`通配符选择器:`*`通配符选择器可以匹配任何元素。例如,如果我们想要设置所有元素的字体大小为16px,我们可以使用以下代码:

```css

* {

font-size: 16px;

}

```

这将使得当前页面中的所有元素的字体大小都变为16px。

## 1、后代选择器

#### 1、作用

- **找到指定标签的所有后代(儿子,孙子,重孙子、、、)标签**;

- **设置属性**。

#### 2、格式

```css

标签名1 xxx {

属性:值;

}

```

#### 3、注意点

- **在企业开发中一般不会使用通配符选择器**。理由是:由于通配符选择器是设置界面上所有的标签的属性,所以在设置之前会遍历所有的标签。如果当前界面上的标签比较多,那么性能就会比较差。

- **后代选择器必须用空格隔开**。

- **后代不仅仅是儿子,也包括孙子、重孙子**。

- **后代选择器不仅仅可以使用标签名称,还可以使用其他选择器比如id或class**。

- **后代选择器可以通过空格一直延续下去**。

后代选择器

我是body下的段落1

我是div下的段落1

我是div下的段落2

我是body下的段落2

子元素选择器在HTML的样式表CSS中起着重要的作用。它可以让你精确地定位到HTML文档中的特定标签的所有直接子元素,并对其进行属性设置。子元素选择器也被称为后代选择器。

1. 子元素选择器的定义:通过使用">"符号,我们可以选择指定标签的所有直接子元素。例如,">p"将选择所有直接子元素为

标签的元素。

2. 示例代码:

```css

#1、作用:找到制定标签的所有特定的直接子元素,然后设置属性

#2、格式: 标签名1>标签名2 { 属性:值; }

先找到名称叫做“标签名称1”的标签,然后在这个标签中查找所有直接子元素名称叫做“标签名称2”的元素

#3、注意:

1、子元素选择器之间需要用>符号链接,并且不能有空格

比如div >p会找div标签的所有后代标签,标签名为“>p”

2、子元素选择器只会查找儿子,不会查找其他嵌套的标签

3、子元素选择器不仅可以用标签名称,还可以使用其他选择器,比如id或class

4、子元素选择器可以通过>符号一直延续下去

```

以上就是关于CSS中子元素选择器的基本解释和使用方法。

后代选择器

我是body下的段落1

我是div下的段落1

我是div下的段落2

我是body下的段落2

您好!根据我的搜索结果,子元素选择器是指选择某个元素的子元素,而空格表示后代选择器。在您的代码中,p标签不能嵌套其他标签,否则css样式选择会出错。因此,您需要将p标签中的.r2+div改为.r2>div。这样就可以避免出现错误了。

相邻兄弟选择器 #1作用:选定紧跟其后的那个标签

#2、格式

选择器1+选择器2 {

属性:值;

}

#3、注意点:

1、毗邻选择器必须通过+号链接

2、毗邻选择器只能选中紧跟其后的那个标签,不能选中被隔开的标签

--------------------------------------------------------------------

兄弟选择器 #1

作用:给指定选择器后面的所有选择器中的所有标签设置属性

#2、格式:

选择器1~选择器2 {

属性:值;

}

#3、注意点:

1、通用兄弟选择器必须用~来链接

2、通用兄弟选择器选中的是指选择器后面的某个选择器选中的所有标签,无论有没有被隔开,都可以被选中。

相邻兄弟选择器(+)可以选择紧接在另一个元素后的元素,且二者具有相同的父元素。通用兄弟选择器(~)可以选择所有后代元素,不分层级。

例如,以下代码将会选中第一个p标签和第二个p标签:

```html

hello 1

hello 2

hello 3

```

而以下代码将会选中所有的p标签:

```html

hello 1

hello 2

hello 3

```

后代选择器

我是标题1

有了这个标签,p就不再是紧跟h1标签了,但通用兄弟选择器仍然能选中

我是段落

我是段落

我是段落

我是段落

我是段落

我是段落

我是段落

我是段落

我是段落

我是标题2

我是段落

Title

哈哈啊

我是段落1

我是段落2

我是段落3

a标签

我是段落

我是段落

我是段落

您好!序列选择器是CSS中的一种选择器,用于选择同级别的元素。例如,:first-child 选择器可以选中同级别标签中的第一个标签。注意点:不区分类型(任何标签类型都可以使用)。

在这个例子中,我们有5个段落,我们想要将第一个段落的字体颜色设置为红色,可以使用以下代码:

```html

```

```css

p:first-child { color: red; }

```

在CSS3中,新推出的9个选择器被广泛应用,它们也被称为序列选择器。相较于过去的选择器,这些新的选择器更加强大和灵活。下面我们将详细解析这9个最具代表性的选择器,并通过一些实例来展示它们的用法。

1. **:first-child 和 p:first-child** :这两个选择器分别表示同级别的第一个元素。例如,如果我们想选择页面上所有的`

`标签的第一个子元素,我们可以使用`.p:first-child`。

```css

p:first-child {

border: 1px solid red;

}

```

2. **:last-child 和 p:last-child** :这两个选择器与上面的类似,表示同级别的最后一个元素。例如,如果我们想选择页面上所有的`

`标签的最后一个子元素,我们可以使用`.p:last-child`。

```css

p:last-child {

border: 1px solid blue;

}

```

3. **:nth-child(n)** :这个选择器可以表示同级别的第n个元素。例如,如果我们想选择页面上所有的`

`标签的第二个子元素,我们可以使用`.p:nth-child(2)`。

```css

p:nth-child(2) {

border: 1px solid green;

}

```

4. **:nth-last-child(n)** :这个选择器可以表示同级别的倒数第n个元素。例如,如果我们想选择页面上所有的`

`标签的第四个子元素,我们可以使用`.p:nth-last-child(4)`。

```css

p:nth-last-of-type(4) {

border: 1px solid yellow;

}

```

5. **:only-of-type 和 p:only-of-type** :这两个选择器表示同类型的唯一一个元素。例如,如果我们只想选择页面上所有唯一的`

`标签,我们可以使用`.p:only-of-type`。

```css

p:only-of-type {

border: 1px solid purple;

}

```

6. **:only-child**

Title

我是标题1

我是段落1

aaaaa

我是段落2

我是段落3

我是段落4

我是段落5

我是段落6

我是a标签

我是标题2

Title

我是段落1

aaaaa

我是段落2

我是段落3

我是段落4

我是段落5

我是a标签

我是段落6

我是段落7

我是段落8

我是标题2

我是独生子

我是独生子

我是二胎

我是二胎

六、属性选择器

1)属性选择器的概念

#1、作用:根据指定的属性名称找到对应的标签,然后设置属性。该选择器最常用于input标签。

#2、格式与具体用法:

- [属性名]:表示选择具有指定属性的元素。例如,[class]表示选择具有class属性的所有元素。

- 其他选择器[属性名]:表示在其他选择器的基础上再添加一个或多个属性条件。例如,p[id]表示选择所有包含id属性的p标签。

- [属性名=值]:表示选择具有指定属性且属性值等于给定值的元素。例如,p[class="part1"]表示选择所有class属性值为part1的p标签。

- [属性名^=值]:表示选择具有指定属性且属性值以给定值开头的元素。例如,a[href^="https"]表示选择所有href属性值以https开头的a标签。

- [属性名$=值]:表示选择具有指定属性且属性值以给定值结尾的元素。例如,img[src$="png"]表示选择所有src属性值以png结果的img标签。

- [属性名*=值]:表示选择具有指定属性且属性值包含给定值的元素。例如,[class*="part"]表示选择所有class属性值中包含part2的标签。

后代选择器

哈哈啊

我是段落

我是段落

我是段落

我是我

http://www.baidu.com

https://www.baidu.com

我是段落

我是段落

以下是根据您提供的重构后的代码:

3. 属性名必须有一个是girl的自定义属性[],也可以[user~="girl"]。

```html

调整页

boy

girl

```

调整页

boy

您好!CSS 伪类选择器是一种特殊的选择器,用于选择元素的特定状态。常用的伪类有:hover、active、visited、focus、blur 等 。其中,hover 伪类用于选择鼠标悬停在元素上时的样式;active 伪类用于选择已访问和未访问链接设置不同的样式;visited 伪类用于设置已访问链接的样式;focus 伪类用于设置元素获得焦点时的样式;blur 伪类用于设置元素失去焦点时的样式 。

您可以根据需要使用这些伪类来为网页添加各种特殊效果。例如,如果您想让一个按钮在鼠标悬停时变大,可以使用 hover 伪类来实现。具体实现方法可以参考以下代码:

```css

button:hover {

transform: scale(1.1);

}

```

伪类选择器是CSS中的一种特殊选择器,用于控制链接的显示效果。以下是常用的几种伪类选择器的定义和样式设置:

1. 没有访问过的超链接a标签样式:

```css

a:link {

color: blue;

}

```

2. 访问过的超链接a标签样式:

```css

a:visited {

color: gray;

}

```

3. 鼠标悬浮在元素上应用样式:

```css

a:hover {

background-color: #eee;

}

```

4. 鼠标点击瞬间的样式:

```css

a:active {

color: green;

}

```

5. input输入框获取焦点时样式:

```css

input:focus {

outline: none;

background-color: #eee;

}

```

注意:

1. a标签的伪类选择器可以单独出现,也可以一起出现。例如:`a:link`, `a:visited`, `a:hover`, `a:active`。

2. a标签的伪类选择器如果一起出现,有严格的顺序要求,否则失效。正确的顺序为:`link`, `visited`, `hover`, `active`。

3. hover是所有其他标签都可以使用的。

hello-world

CSS的三大特性是:层叠性、继承性和优先级。

- 层叠性:相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式。层叠性主要解决样式冲突的问题。

- 继承性:子元素可以继承父元素的属性值,包括内联样式、ID、类名等。

- 优先级:定义CSS样式时,经常出现两个或更多规则应用在同一元素上,此时,选择器相同,则执行层叠性。选择器不同,就会出现优先级的问题。

定义:

继承性是指给某个元素设置一些属性,该元素的后代也可以使用这些属性。通常我们会基于继承性来统一设置网页中的文字颜色、字体和文字大小等样式。

注意事项:

1. 只有以color、font-、text-、line-开头的属性才可以继承。

2. a标签的文字颜色和下划线是不能继承别人的。

3. h标签的文字大小是不能继承别人的,会变大,但是会在原来字体大小的基础上变大。在浏览器审查元素时,可以看到一些inherited from ... 的属性。

应用场景:

通过使用继承性,我们可以方便地对网页中的元素进行样式统一设置,使得页面看起来更加协调和美观。

以下是一个示例代码块,演示了如何使用继承性来设置网页中的文字颜色、字体和文字大小等样式:

```html

后代选择器

我是标题

偶的博爱

  • 导航1
  • 导航2
  • 导航2

aaaa

bbbb

```

在上述示例中,我们为`div`元素设置了红色的文字颜色和50像素的字体大小。然后通过嵌套的方式创建了两个`div`子容器,并分别在其中添加了一个段落`p`元素。可以看到,段落元素的文字颜色和字体大小都继承了父容器`div`的颜色和字体大小属性值。

CSS的层叠性和优先级是两个不同的概念。层叠性指的是多个CSS规则可以同时作用于同一个标签,效果叠加,并不完全覆盖。而优先级则是指在多个选择器选中了同一个标签时,如果设置了相同的属性,会发生覆盖效果。

在层叠性中,浏览器会按照特定的规则来决定哪个样式规则应该被优先应用。这种规则被称为“层叠顺序”。而在优先级中,不同选择器作用同一元素,不同属性会叠加,相同属性会覆盖。在覆盖时需要遵顺以下两大原则:就近原则和优先级。

当多个选择器选中同一个标签,并且给同一个标签设置相同的属性时,如何层叠就由优先级来确定。整体优先级从高到底:行内样式>嵌入样式>外部样式。行内样式并不推荐使用,所以我们以嵌入为例来介绍优先级。

1. 大前提:直接选中 > 间接选中(即继承而来的)

2. 如果都是间接选中,那么谁离目标标签比较近,就听谁的

3. 如果都是直接选中,并且都是同类型的选择器,那么就是谁写的在后面就听谁的

4. 如果都是直接选中,并且是不同类型的选择器,那么就会按照选择器的优先级来层叠

id > 类 > 标签 > 通配符(也算直接选中) > 继承 > 浏览器默认(即没有设置任何属性)

5. 优先级之!important

作用:还有一种不讲道理的!import方式来强制指定的属性的优先级提升为最高,但是不推荐使用。因为大量使用!import的代码是无法维护的。注意:

1. !important只能用于直接选中,不能用于间接选中

2. !important只能用于提升被指定的属性的优先级,其他属性的优先级不会被提升

3. !important必须写在属性值分号的前面

6. 优先级之权重计算

强调:如果都是直接选中,并且混杂了一系列其他的选择器一起使用时,则需要通过计算机权重来判定优先级。计算方式如下:

```css

1. id数多的优先级高

2. id数相同,则判定类数多的优先级高

3. id数、类数均相同,则判定标签数多的优先级高

4. 若id数、类数、标签数均相同,则无需继续往下计算了,谁写在后面谁的优先级高

```

列表属性示例:

```css

ul,ol{

list-style: decimal-leading-zero;

}

ul{

list-style: none;

}

ul{

list-style: circle;

}

ul{

list-style: upper-alpha;

}

ul{

list-style: disc;

}

```

调整页

  • 111
  • 222
  • 333

user

调整页

hello

用于控制内容与边框之间的距离;

margin: 用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。内边距会影响盒子的大小,外边距不会影响盒子的大小,需要设置。

练习:300px*300px的盒子装着100px*100px的盒子,分别通过margin和padding设置将小盒子移到大盒子的中间。

解析:首先创建一个300px*300px的div作为大盒子,然后在其中创建两个100px*100px的div作为小盒子。接着分别设置大盒子和小盒子的margin和padding属性,使小盒子能够移动到大盒子的中间。

代码如下:

```html

Title

```

解决方法:

1. 设置`body`的边距为0:`body{ margin: 0; }`。

2. 了解`margin collapse`:外边距的重叠只产生在普通流文档的上下外边距之间,这个规则有其现实意义。当我们上下排列一系列规则的块级元素时,块元素之间因为外边距重叠的存在,段落之间就不会产生双倍的距离。例如停车场1中兄弟div和父子div的情况。

3. 注意:如果父级div中没有border、padding或inline content,子级div的margin会一直向上找,直到找到某个标签包括其中的一个,然后按此div进行margin。

Title

```html

Title

```

、float和position

1)float

首先,我们需要了解div是一个块级元素,它在页面中独占一行,自上而下排列,也就是所谓的流。float是浮动标签,div使用的是左浮动(float:left;),意味着它会向左漂浮并靠左排列,右浮动(float:right;)则是向右漂浮并靠右排列。这里的靠左、靠右是指页面的左、右边缘。清除浮动可以理解为打破横向排列。

clear属性有以下几个值:none、left、right、both。none是默认值,表示允许两边都有浮动对象;left表示不允许左边有浮动对象;right表示不允许右边有浮动对象;both表示不允许有浮动对象。

2)position

static是默认值,表示无特殊定位,对象遵循正常文档流。当设置position属性为relative时,对象遵循正常文档流,但会在正常文档流中根据top、right、bottom、left等属性偏移位置。层叠顺序由z-index属性定义。

当设置position属性为fixed时,元素会被定位于浏览器窗口的一个指定坐标,无论窗口是否滚动,都会固定在这个位置。fixed表示对象脱离正常文档流,使用top、right、bottom、left等属性以窗口为参考点进行定位。当出现滚动条时,对象不会随着滚动。层叠顺序由z-index属性定义。

需要注意的是,一个元素如果设置了position:absolute或fixed,那么该元素就不能设置float。这是因为float和position分别属于不同的流,一个是浮动流,另一个是“定位流”。然而,relative属性可以同时使用,因为它原本所占的空间仍然占据文档流。

```html

Title

```

以下是重构后的内容:

原文出处:http://www.cnblogs.com/linhaifeng/articles/9005117.html

在这篇文章中,作者介绍了如何使用C++实现一个简单的TCP服务器。他首先创建了一个套接字(socket),然后绑定到一个地址和端口号。接下来,他开始监听客户端的连接请求,并接受连接请求。一旦客户端成功连接到服务器,服务器就会向客户端发送一条欢迎消息。最后,服务器关闭与客户端的连接。

如果你想学习更多关于网络编程的知识,可以参考以下文章:

- https://www.jianshu.com/p/85a3c3f6b82d

- https://www.jianshu.com/p/5b4a966e4a6a