CSS总结

一、CSS的四种引入方式

1. 行内式

行内式是在标记的style属性中设定CSS样式。(没有体现CSS优势)

<body>
    <p style="color: #cc3399; background-color: greenyellow">
        hello yuan
    </p>
</body>

在这里插入图片描述

2. 嵌入式

嵌入式是将CSS样式 集中写在网页的标签对中的标签对中。以对应的标签名开头。格式如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS1</title>
    <style>
        p{
            color: #cc3399;
            background-color: greenyellow;
        }
    </style>
</head>
<body>
    <p>
        hello yuan
    </p>
</body>
</html>

在这里插入图片描述

3. 链接式

将一个.css文件引入到HTML文件中,目的是允许多处使用这个.css 文件。

例如: css1.css中:
p{
    color: #cc3399;
    background-color: greenyellow;
}

css.html中:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS1</title>
    <link href="css1.css" rel="stylesheet" type="text/css"/>
</head>
<body>
    <p>
        hello yuan
    </p>
</body>
</html>

网页:
在这里插入图片描述

4. 导入式

将一个独立的.css文件引入HTML文件中,导入式使用CSS规则引入外部CSS文件,

<style type="text/css">
          @import"mystyle.css";  #此处要注意.css文件的路径
</style>

链接式和导入式的区别:
导入式在整个网页装载完后再装载CSS文件,如果网页比较大则会先显示无样式的页面。链接式在装载网页body文件前装载CSS文件,因此显示出来的网页直接是带样式的效果的。
推荐使用链接式。

二、 css的选择器(Selector)

“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素。

1. 基础选择器

* :通用元素选择器,匹配任何元素
*{ font-size: 30px; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        *{
            font-size: 30px;
        }
    </style>
</head>
<body>
    <p>hello p</p>
    <div>hello div</div>
</body>
</html>

在这里插入图片描述
E :标签选择器,匹配所有使用E标签的元素
p { color:green; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        div{
            font-size: 30px;
            color: #6DDCBD;
        }
    </style>
</head>
<body>
    <p>hello p</p>
    <div>hello div</div>
</body>

在这里插入图片描述
.info和E.info: class选择器,匹配所有class属性中包含info的元素
.info { background:#ff0; }
p.info { background:blue; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        .p2{
            font-size: 30px;
            color: #6DDCBD;
        }
    </style>
</head>
<body>
    <p class="p2">hello p</p>
</body>

在这里插入图片描述
#info和E#info id选择器,匹配所有id属性的元素
#info { background:#ff0; } p#info { background:#ff0; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        #p1{
            font-size: 30px;
            color: #6DDCBD;
        }
    </style>
</head>
<body>
    <p id="p1">hello p</p>
</body>

在这里插入图片描述
class 和 id的区别:
class可以有多个,id只能有1个。

2. 组合选择器

E F 后代元素选择器,匹配所有属于E元素后代的F元素,E和F之间用空格分隔
li a { font-weight:bold; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        div span{          
            font-size: 30px;
        }
    </style>
</head>
<body>
    <div id="outer">
        hello div
        <span>hello span</span>
        <p>hello p</p>
    </div>
</body>

在这里插入图片描述

E > F 子元素选择器,匹配所有E元素的子元素F
div > p { color:#f00; }

E + F 毗邻元素选择器,匹配下一个紧随E元素之后的同级元素F
div + p { color:#f00; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        #outer+p{
            font-size: 30px;
        }
    </style>
</head>
<body>
    <p id="p1">hello p1</p>
    <div id="outer">hello div</div>
    <p>pppp</p>
    <p>pppppppp</p>
</body>

在这里插入图片描述

E,F 多元素选择器,同时匹配所有E元素或F元素,E和F之间用逗号分隔
div, p { color:#f00; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        #p1,.s2{
            font-size: 30px;
        }
    </style>
</head>
<body>
    <p id="p1">hello p1</p>
    <div id="outer">
        hello div
        <span class="s2">hello span</span>
        <p>hello p</p>
    </div>
</body>

在这里插入图片描述
注意嵌套规则:
a. 块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素,它只能包含其它内联元素。
b. 有几个特殊的块级元素只能包含内联元素,不能包含块级元素。如h1,h2,h3,h4,h5,h6,p,dt
c. li内可以包含div
d. 块级元素与块级元素并列、内联元素与内联元素并列。

3. 属性选择器

E[属性名] 匹配所有具有该属性的E元素,不考虑该属性的值。
注意:E在此处可以省略,比如“[cheacked]”。以下同。)
p[title] { color:#f00; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        [id]{
            font-size: 30px;
            color: #cc3399;
        }
    </style>
</head>
<body>
    <div class="div1">hello div1</div>
    <div class="div2">hello div2</div>
    <div class="div3">hello div3</div>
    <div id="id1">hello id1</div>
</body>

在这里插入图片描述

E[att=val] 匹配所有att属性等于“val”的E元素。
div[class=”error”] { color:#f00; }

[class="div2"]{
    font-size: 30px;
    color: #cc3399;
}

E[att~=val] 匹配所有att属性具有多个空格分隔的值、其中一个值等于“val”的E元素
td[class~=”name”] { color:#f00; }

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        .div1{
            font-size: 30px;
        }
        .div2{
            color: #cc3399;
        }
    </style>
</head>
<body>
    <div class="div1 div2">hello div1</div>
</body>

class可以同时具有两个属性;这两个属性分别表现得效果都被class具有。
在这里插入图片描述
由此:

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        [class~="div2"]{
            background-color: yellow;
        }
    </style>
</head>
<body>
    <div class="div1 div2">hello div1</div>
    <div class="div2">hello div2</div>
</body>

在这里插入图片描述

E[attr^=val]  匹配属性值以指定值开头的每个元素                     
div[class^="test"]{background:#ffff00;}

 E[attr$=val]  匹配属性值以指定值结尾的每个元素                    
 div[class$="test"]{background:#ffff00;}

 E[attr*=val]  匹配属性值中包含指定值的每个元素                     
 div[class*="test"]{background:#ffff00;}
4. 伪类(Pseudo-classes)

CSS伪类是用来给选择器添加一些特殊效果。

anchor伪类:专用
于控制链接的显示效果
a:link(没有接触过的链接),用于定义了链接的常规状态。
a:hover(鼠标放在链接上的状态),用于产生视觉效果。
a:visited(访问过的链接),用于阅读文章,能清楚的判断已经访问过的链接。
a:active(在链接上按下鼠标时的状态),用于表现鼠标按下时的链接状态。
伪类选择器 : 伪类指的是标签的不同状态:
a ==> 点过状态 没有点过的状态 鼠标悬浮状态 激活状态

a:link{color: #cc3399;}
a:hover{color: yellow;}
a:visited{color: purple}
a:active{color: green}
before after伪类

p:before 在每个

元素的内容之前插入内容
p:before{content:“hello”;color:red}

p:after 在每个

元素的内容之前插入内容
p:after{ content:“hello”;color:red}

<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        p:after{content: "123";color: #cc3399}
    </style>
</head>
<body>
    <p>hello</p>
</body>

在这里插入图片描述

三、 CSS的常用属性

1. 颜色属性
<div style="color:blueviolet">ppppp</div>      # 单词
 
<div style="color:#ffee33">ppppp</div>   # RGB颜色对照表(十六进制)
 
<div style="color:rgb(255,0,0)">ppppp</div>   # RGB
 
<div style="color:rgba(255,0,0,0.5)">ppppp</div>  # RGB + 透明度(0-1)
2. 字体属性
font-size: 20px/50%/larger   # 字体大小
 
font-family:'Lucida Bright'   # 字体(Times New Roman等)
 
font-weight: lighter/bold/border/  # 加粗/透明/阴影
 
font-style: oblique  # 斜体
3. 背景属性
background-color: cornflowerblue   

background-image: url('1.jpg');    # 图片路径

background-repeat: no-repeat;(repeat:平铺满)    # 平铺样式

background-position: right top(20px 20px);(横向:left center right)(纵向:top center bottom)

background-position: center;   # 位置

简写:
<body style="background: 20px 20px no-repeat #ff4 url('1.jpg')">
<div style="width: 300px;height: 300px;background: 20px 20px no-repeat #ff4 url('1.jpg')">
<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        #div1{
            height: 600px;
            background-color: antiquewhite;
            background-image: url("11.jpg");
            background-repeat: no-repeat;
            background-position: center;
        }
    </style>
</head>
<body>
    <div id="div1"></div>
</body>

在这里插入图片描述
注意:如果将背景属性加在body上,要记得给body加上一个height,否则结果异常,这是因为body为空,无法撑起背景图片;另外,如果此时要设置一个width=100px,你也看不出效果,除非你设置出html。

4. 文本属性
font-size: 10px;

text-align: center;  # 横向排列(文本居中)

line-height: 50px;   # 文本行高 通俗的讲,文字高度加上文字上下的空白区域的高度 50%:基于字体大小的百分比

vertical-align:-4px  #设置元素内容的垂直对齐方式 ,只对行内元素有效,对块级元素无效

text-indent: 150px;   #首行缩进

letter-spacing: 5px;    # 字母间隙

word-spacing: 20px;    # 单词间隙

text-transform: capitalize;   # 单词首字母大写
<head>
    <meta charset="UTF-8">
    <title>选择器</title>
    <style>
        p{
            background-color: beige;
            font-size: 10px;
            text-align: center;
            line-height: 50px;
            letter-spacing: 5px;
            word-spacing: 10px;
            text-transform: capitalize;
        }
    </style>
</head>
<body>
    <p>hello world python</p>

在这里插入图片描述

5. 边框属性
border-style: solid;
 
border-color: chartreuse;
 
border-width: 20px;
 
简写:border: 30px rebeccapurple solid;
6. 列表属性
ul,ol{   list-style: decimal-leading-zero;
       list-style: none; <br>  list-style: circle;
       list-style: upper-alpha;
       list-style: disc; }
7. 外边距和内边 (盒子模型)

margin: 用于控制元素与元素之间的距离;控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
padding: 用于控制内容与边框之间的距离;
Border(边框) 围绕在内边距和内容外的边框。
Content(内容) 盒子的内容,显示文本和图像。
在这里插入图片描述
在这里插入图片描述
元素的宽度和高度:
当您指定一个CSS元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,你还必须添加填充,边框和边距。

margin:10px 5px 15px 20px;-----------上 右 下 左
margin:10px 5px 15px;----------------上 右左 下
margin:10px 5px;---------------------上下  右左
margin:10px;    ---------------------上右下左

下面的例子中的元素的总宽度为300px:

width:250px;
padding:10px;
border:5px solid gray;
margin:10px;

块级元素可以设置width、height、margin、padding属性;
内联元素设置width、height属性无效。inline元素的margin和padding属性。
其水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;
竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
常见的块级元素有 div、form、table、p、pre、h1~h5、dl、ol、ul 等。
常见的内联元素有span、a、strong、em、label、input、select、textarea、img、br等

8. float(浮动)属性

文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。
脱离文档流,也就是将元素从普通的布局排版中拿走,其他元素顶替其位置向前正常排列。
只有绝对定位absolute(完全脱离)和浮动float(非完全脱离)才会脱离文档流。

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .div1{
            background-color: aqua;
            width: 100px;
            height: 100px;
            float: left;
        }
        .div2{
            background-color: blueviolet;
            width: 100px;
            height: 100px;
            float: left;

        }
        .div3{
            background-color: yellow;
            width: 200px;
            height: 200px;
        }
    </style>
</head>
<body>
       <div class="div1">111</div>
       <div class="div2">222</div>
       <div class="div3">333</div>
</body>

在这里插入图片描述
部分无视和完全无视的区别?
部分无视:使用float脱离文档流时,其他盒子会无视这个元素,但其他盒子内的文本依然会为这个元素让出位置,环绕在周围。
完全无视:使用absolute position脱离文档流的元素,其他盒子与其他盒子内的文本不会为这个元素让出位置。

注意:当初float被设计的时候就是用来完成文本环绕的效果,所以文本不会被挡住,这是float的特性,即float是一种不彻底的脱离文档流方式。无论多么复杂的布局,其基本出发点均是:“如何在一行显示多个div元素”。

清除浮动
在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高度,使得内容溢出到容器外面而影响(甚至破坏)布局的现象。这个现象叫浮动溢出,为了防止这个现象的出现而进行的CSS处理,就叫CSS清除浮动。

clear语法:

clear: left;   # 不允许左边有浮动对象
clear: both;   # 不允许有浮动对象
clear: right;   # 不允许右边有浮动对象
clear: none;   # 默认值。允许两边都可以有浮动对象
9. position(定位)
9.1、 static

static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。

9.2、relative/absolute

relative 相对定位
相对定位是相对于该元素在文档流中的原始位置,即以自己原始位置为参照物。有趣的是,即使设定了元素的相对定位以及偏移值,元素还占有着原来的位置,即占据文档流空间。对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流中偏移位置。而其层叠通过z-index属性定义。

注意:position:relative的一个主要用法:方便绝对定位元素找到参照物。

absolute 绝对定位
定义:设置为绝对定位的元素框从文档流完全删除,并相对于最近的已定位祖先元素定位,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块(即body元素)。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

重点:如果父级设置了position属性,例如position:relative;,那么子元素就会以父级的左上角为原始点进行定位。这样能很好的解决自适应网站的标签偏离问题,即父级为自适应的,那我子元素就设置position:absolute;父元素设置position:relative;,然后Top、Right、Bottom、Left用百分比宽度表示。

另外,对象脱离正常文档流,使用top,right,bottom,left等属性进行绝对定位。而其层叠通过z-index属性定义。

总结:参照物用相对定位,子元素用绝对定位,并且保证相对定位参照物不会偏移即可。

9.3、fixed

fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义。
注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流。
在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。

<head>
    <style>
        .div1{
            height: 1500px;
            background-color: aquamarine;
        }
        .div2{
            height: 1500px;
            background-color: bisque;
        }
        a{
            position: fixed;
            bottom: 20px;
            right: 20px;
        }
    </style>
</head>
<body>
    <div class="div1"></div>
    <div class="div2"></div>
    <a>返回顶部</a>
</body>

在这里插入图片描述

9.4、 仅使用margin属性布局绝对定位元素

此情况,margin-bottom 和margin-right的值不再对文档流中的元素产生影响,因为该元素已经脱离了文档流。另外,不管它的祖先元素有没有定位,都是以文档流中原来所在的位置上偏移参照物。

Http协议(附)

特点:

  1. HTTP 超文本传输协议,基于请求模式和响应模式
  2. HTTP 是无状态协议
    (无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。)
    当你登录到一个网站时,你的登录状态也是由Cookie或Session来“记忆”的,因为服务器并不知道你是否登录。

URL:统一资源定位符,就是一个网址:协议名://域名:端口/路径
例如:http://www.oldboy.cn:80/index.html

1. 请求协议:

请求首行; // 请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1
请求头信息; // 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost
空行; // 用来与请求体分隔开
请求体。 // GET没有请求体,只有POST有请求体。

1.1 GET请求

HTTP默认的请求方法就是GET

  1. 没有请求体
  2. 数据必须在1K之内!
  3. 请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:

  1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
  2. 点击页面上的超链接也一定是GET请求
  3. 提交表单时,表单默认使用GET请求,但可以设置为POST
1.2 POST请求

特点:

  1. 有请求体
  2. 数据大小没有上限
  3. 请求数据不会出现在浏览器的地址栏中
  4. 请求体中如果存在中文,会使用url编码

POST请求是可以有体的,而GET请求不能有请求体

  1. Referer:请求来自哪个页面,
    例如你在百度上点击链接到了这里,那么Referer:http://www.baidu.com;
    如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了;
  2. Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用url格式编码数据;url编码的数据都是以“%”为前缀,后面跟随两位的16进制。
  3. Content-Length:13:请求体的长度,这里表示13个字节。
  4. keyword=hello:请求体内容!hello是在表单中输入的数据,keyword是表单字段的名字。
2.响应协议
2.1 响应内容

格式与请求协议格式对应:
响应首行;
响应头信息;
空行;
响应体。

2.2 状态码

200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;
500:请求资源找到了,但服务器内部出现了错误;
302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值