Python:Day18:python 前端CSS
CSS介绍
CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素。
当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)。
CSS语法
CSS实例
每个CSS样式由两个组成部分:选择器和声明。声明又包括属性和属性值。每个声明之后用分号结束。

CSS注释
/*这是注释*/
注释是代码之母。--摘自哪吒语录
CSS的几种引入方式
行内样式
行内式是在标记的style属性中设定CSS样式。不推荐大规模使用。(最原始的)
<p style="color: red">Hello world.</p>
内部样式
嵌入式是将CSS样式集中写在网页的<head></head>标签对的<style></style>标签对中。格式如下:
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
p{ background-color: #2b99ff; }
</style>
</head>
外部样式
外部样式就是将css写在一个单独的文件中,然后在页面的head标签下导入即可。推荐使用此方式。
html文件中写
<head> <meta charset="UTF-8"> <title>Title</title>
<link href="mystyle.css" rel="stylesheet" type="text/css"/> 路径
</head>
---------------------------------------------------------------
mystyle.css文件中写
p{ background-color: #2b99ff; }
CSS选择器
基本选择器
元素选择器
p {color: "red"; font-size: 14px;}
ID选择器
#i1 {background-color: red;}
类选择器
.c1 {font-size: 14px;}
p.c1 {color: red;}
注意:
样式类名不要用数字开头(有的浏览器不认)。
标签中的class属性如果有多个,要用空格分隔。
通用选择器
* {color: white;}
组合选择器
后代选择器
/*li内部的a标签设置字体颜色*/
li a {color: green;}
儿子选择器
/*选择所有父级是 <div> 元素的 <p> 元素*/
div>p {font-family: "Arial Black", arial-black, cursive;}
毗邻选择器
/*选择所有紧接着<div>元素之后的<p>元素*/ div+p {margin: 5px;}
弟弟选择器
/*i1后面所有的兄弟p标签*/
#i1~p {
border: 2px solid royalblue;
}
属性选择器
/*用于选取带有指定属性的元素。*/
p[title] {
color: red;
}
/*用于选取带有指定属性和值的元素。*/
p[title="213"] {
color: green;
}
1 /*找到所有title属性以hello开头的元素*/ 2 [title^="hello"] { 3 color: red; 4 } 5 6 /*找到所有title属性以hello结尾的元素*/ 7 [title$="hello"] { 8 color: yellow; 9 } 10 11 /*找到所有title属性中包含(字符串包含)hello的元素*/ 12 [title*="hello"] { 13 color: red; 14 } 15 16 /*找到所有title属性(有多个值或值以空格分割)中有一个值为hello的元素:*/ 17 [title~="hello"] { 18 color: green; 19 }
分组和嵌套
分组
当多个元素的样式相同的时候,我们没有必要重复地为每个元素都设置样式,我们可以通过在多个选择器之间使用逗号分隔的分组选择器来统一设置元素样式。
div, p {color: red;}
上面的代码为div标签和p标签统一设置字体为红色。
div,
p {color: red;}
嵌套
多种选择器可以混合起来使用,比如:.C1类内部所有P表情设置字体为红色。
.c1 p {color: red;}
伪类选择器
/* 未访问的链接 */ a:link { color: #FF0000 } /* 已访问的链接 */ a:visited { color: #00FF00 } /* 鼠标移动到链接上 */ a:hover { color: #FF00FF } /* 选定的链接 */ a:active { color: #0000FF } /*input输入框获取焦点时样式,获取光标时变色*/ input:focus { outline: none; background-color: #eee;
}
伪元素选择器
first-letter
常用的给首字母设置特殊样式:
p:first-letter {
font-size: 48px;
color: red;
}
before
/*在每个<p>元素之前插入内容,content里面写插入的内容*/
p:before {
content:"*";
color:red;
}
after
/*在每个<p>元素之后插入内容,通常在一段话后面加个[?]以后用js来跳转链接*/
p:after {
content:"[?]";
color:blue;
}
before和after多用于清除浮动。
选择器的优先级
CSS继承
继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个body定义了
的字体颜色值也会应用到段落的文本中。
body {color: red;}
此时页面上所有标签都会继承body的字体颜色。然而CSS继承性的权重是非常低的,是比普通元素的权重还要低的0。
我们只要给对应的标签设置字体颜色就可覆盖掉它继承的样式。
p {color: green;}
此外,继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border, margin, padding, background等。
选择器的优先级
我们上面学了很多的选择器,也就是说在一个HTML页面中有很多种方式找到一个元素并且为其设置样式,那浏览器根据什么来决定应该应用哪个样式呢?
其实是按照不同选择器的权重来决定的,具体的选择器权重计算方式如下图:

除此之外还可以通过添加 !import方式来强制让样式生效,但并不推荐使用。因为如果过多的使用!import会使样式文件混乱不易维护。
万不得已可以使用!import
CSS属性相关
宽和高
width属性可以为元素设置宽度。
height属性可以为元素设置高度。
块级标签才能设置宽度,内联标签的宽度由内容来决定。
字体属性
文字字体
font-family可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。浏览器会使用它可识别的第一个值。
简单实例:
body {font-family: "Microsoft Yahei", "微软雅黑", "Arial", sans-serif} 一般设置在全局样式里,从第一个依次选择字体
字体大小
p {font-size: 14px;} 一般设置在全局样式里,从第一个依次选择字体
如果设置成inherit表示继承父元素的字体大小值。
字重(粗细)
font-wwight用来设置字体的字重(粗细)。
.c1 {font-weight: 100;} 100~900可选范围
| 值 | 描述 |
|---|---|
| normal | 默认值,标准粗细 |
| bold | 粗体 |
| bolder | 更粗 |
| lighter | 更细 |
| 100~900 | 设置具体粗细,400等同于normal,而700等同于bold |
| inherit | 继承父元素字体的粗细值 |
文本颜色
颜色属性被用来设置文字的颜色。
颜色是通过CSS最经常的指定:
- 十六进制值 - 如: #FF0000
- 一个RGB值 - 如: RGB(255,0,0)
- 颜色的名称 - 如: red
还有rgba(255,0,0,0.3),第四个值为alpha, 指定了色彩的透明度/不透明度,它的范围为0.0到1.0之间。
文字属性
文字对齐
text-align 属性规定元素中的文本的水平对齐方式。
.c3 { /*text-align: center;*/ /*text-align: right;*/ text-align: justify; text-decoration: underline; text-indent: 28px; }
| 值 | 描述 |
|---|---|
| left | 左边对齐 默认值 |
| right | 右对齐 |
| center | 居中对齐 |
| justify | 两端对齐 |
文字装饰
text-decoration 属性用来给文字添加特殊效果。
****常用的为去掉a标签默认的下划线
a {text-decoration: none;}
| 值 | 描述 |
|---|---|
| none | 默认。定义标准的文本。 |
| underline | 定义文本下的一条线。 |
| overline | 定义文本上的一条线。 |
| line-through | 定义穿过文本下的一条线。 |
| inherit | 继承父元素的text-decoration属性的值。 |
首行缩进
将段落的第一行缩进 32像素:
p {text-indent: 32px;}
背景属性
/*背景颜色*/
background-color: red; /*背景图片*/ background-image: url('1.jpg');
/*把背景图固定*/
background-attachment: fixed;
/*
背景重复
repeat(默认):背景图片平铺排满整个网页
repeat-x:背景图片只在水平方向上平铺
repeat-y:背景图片只在垂直方向上平铺
no-repeat:背景图片不平铺
*/ background-repeat: no-repeat; /*背景位置*/ background-position: right top; 右上角
background-position: 50% 50%; 在中间
background-position: center; 在中间
background-position: 200px 200px;
支持简写:(推荐使用)
background:#ffffff url('1.png') no-repeat center;
使用背景图片的一个常见案例就是很多网站会把很多小图标放在一张图片上,然后根据位置去显示图片。减少频繁的图片请求。
一个有趣的例子:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>滚动背景图示例</title> 8 <style> 9 * { 10 margin: 0; 11 } 12 .box { 13 width: 100%; 14 height: 500px; 15 background: url("https://www.luffycity.com/static/img/width-bank.1c9d1b0.png") no-repeat center center; 16 background-attachment: fixed; 17 } 18 .d1 { 19 height: 500px; 20 background-color: tomato; 21 } 22 .d2 { 23 height: 500px; 24 background-color: steelblue; 25 } 26 .d3 { 27 height: 500px; 28 background-color: mediumorchid; 29 } 30 </style> 31 </head> 32 <body> 33 <div class="d1"></div> 34 <div class="box"></div> 35 <div class="d2"></div> 36 <div class="d3"></div> 37 </body> 38 </html>
边框
边框属性
- border-width
- border-style
- border-color
#i1 {
border-width: 2px; 粗细
border-style: solid; 实线
border-color: red; 颜色
}
通常使用简写方式:
#i1 {border: 2px solid red;}
边框样式
| 值 | 描述 |
|---|---|
| none | 无边框。 |
| dotted | 点状虚线边框。 |
| dashed | 矩形虚线边框。 |
| solid | 实线边框。 |
除了可以统一设置边框外还可以单独为某一个边设置样式,如下所示:
#i1 {
border-top-style:dotted;
border-top-color: red;
border-right-style:solid;
border-bottom-style:dotted;
border-left-style:none;
}
border-radius
用这个属性能实现圆角边框的效果。
将border-radius:50%设置为长或高的一半即可得到一个圆形。
display属性
用于控制HTML元素的显示效果。
| 值 | 意义 |
| display:"none" | HTML文档中元素存在,但是在浏览器中不显示。一般用于配合JavaScript代码使用。 |
| display:"block" | 默认占满整个页面宽度,如果设置了指定宽度,则会用margin填充剩下的部分。 |
| display:"inline" | 按行内元素显示,此时再设置元素的width、height、margin-top、margin-bottom和float属性都不会有什么影响。 |
| display:"inline-block" | 使元素同时具有行内元素和块级元素的特点。既可以在独行显示也可是设置宽度高度 |
display:"none"与visibility:hidden的区别:
visibility:hidden: 可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。
display:none: 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。
****CSS盒子模型****
- margin: 用于控制元素与元素之间的距离;margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的。
- padding: 用于控制内容与边框之间的距离;
- Border(边框): 围绕在内边距和内容外的边框。
- Content(内容): 盒子的内容,显示文本和图像。
看图吧:

margin外边距(调整两个边框直接的距离)
给边框上下左右设置距离:
.margin-test { margin-top:5px; margin-right:10px; margin-bottom:15px; margin-left:20px; }
推荐使用简写:
.margin-test {margin: 5px 10px 15px 20px;}
顺序:上右下左
***常见居中:
.mycenter {margin: 0 auto;}
padding内填充(调整边框和内容的距离)
.padding-test {
padding-top: 5px;
padding-right: 10px;
padding-bottom: 15px;
padding-left: 20px;
}
推荐使用简写:
.padding-test {padding: 5px 10px 15px 20px;}
顺序:上右下左
补充padding的常用简写方式:
- 提供一个,用于四边;
- 提供两个,第一个用于上-下,第二个用于左-右;
- 如果提供三个,第一个用于上,第二个用于左-右,第三个用于下;
- 提供四个参数值,将按上-右-下-左的顺序作用于四边;
***float***
在 CSS 中,任何元素都可以浮动。
浮动元素会生成一个块级框,而不论它本身是何种元素。
关于浮动的两个特点:
- 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
- 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。
- 所有的标签一旦设置浮动就变成块级标签
三种取值
fioat:left:向左浮动
fioat:right:向右浮动
fioat:none:默认值,不浮动
clear
clear属性规定元素的哪一侧不允许其他浮动元素。
| 值 | 描述 |
|---|---|
| clear:left | 在左侧不允许浮动元素。 |
| clear:right | 在右侧不允许浮动元素。 |
| clear:both | 在左右两侧均不允许浮动元素。 |
| clear:none | 默认值。允许浮动元素出现在两侧。 |
| clear:inherit | 规定应该从父元素继承 clear 属性的值。 |
注意:clear属性只会对自身起作用,而不会影响其他元素。
父标签塌陷问题
利用伪元素清除类名为.clearfix的浮动:
.clearfix:after { 在文档流.clearfix后利用伪元素添加一个新的标签 content: ""; 内容设置空 display: block; 设置成块级标签 clear: both; 清除 }
---------------------------------------------------------------------------
<div id="d1" class="clearfix"> 通常将需要浮动的标签加到clearfix类里
<div class="c1"></div>
<div class="c1"></div>
<div class="c1"></div>
<div class="c1"></div>
</div>
overflow溢出属性
| 值 | 描述 |
|---|---|
| overfiow:visible | 默认值。内容不会被修剪,会呈现在元素框之外。 |
| overfiow:hidden | 内容会被修剪,并且其余内容是不可见的。 |
| overfiow:scroll | 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 |
| overfiow:auto | 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。 |
| overfiow:inherit | 规定应该从父元素继承 overflow 属性的值。 |
- overflow(水平和垂直均设置)
- overflow-x(设置水平方向)
- overflow-y(设置垂直方向)
圆形头像示例
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <title>圆形的头像示例</title> 8 <style> 9 * { 10 margin: 0; 11 padding: 0; 12 background-color: #eeeeee; 13 } 14 .header-img { 15 width: 150px; 16 height: 150px; 17 border: 3px solid white; 18 border-radius: 50%; 19 overflow: hidden; 20 } 21 .header-img>img { 22 max-width: 100%; 23 } 24 </style> 25 </head> 26 <body> 27 28 <div class="header-img"> 29 <img src="https://q1mi.github.io/Blog/asset/img/head_img.jpg" alt=""> 30 </div> 31 32 </body> 33 </html>
定位(position)
static
static 默认值,无定位,不能当作绝对定位的参照物,并且设置标签对象的left、top等值是不起作用的的。
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属性定义。
fixed(固定)
fixed:对象脱离正常文档流,使用top,right,bottom,left等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。而其层叠通过z-index属性 定义。 注意点: 一个元素若设置了 position:absolute | fixed; 则该元素就不能设置float。这 是一个常识性的知识点,因为这是两个不同的流,一个是浮动流,另一个是“定位流”。但是 relative 却可以。因为它原本所占的空间仍然占据文档流。
在理论上,被设置为fixed的元素会被定位于浏览器窗口的一个指定坐标,不论窗口是否滚动,它都会固定在这个位置。
示例代码:
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <title>返回顶部示例</title> 8 <style> 9 * { 10 margin: 0; 11 } 12 13 .d1 { 14 height: 1000px; 15 background-color: #eeee; 16 } 17 18 .scrollTop { 19 background-color: darkgrey; 20 padding: 10px; 21 text-align: center; 22 position: fixed; 23 right: 10px; 24 bottom: 20px; 25 } 26 </style> 27 </head> 28 <body> 29 <div class="d1">111</div> 30 <div class="scrollTop">返回顶部</div> 31 </body> 32 </html>
z-index(多用在网页页面弹出框)
#i2 {z-index: 999;}
设置对象的层叠顺序,数值大的会覆盖在数值小的标签之上。z-index 仅能在定位元素上奏效
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <title>自定义模态框</title> 8 <style> 9 .cover { 10 background-color: rgba(0,0,0,0.65); 11 position: fixed; 12 top: 0; 13 right: 0; 14 bottom: 0; 15 left: 0; 16 z-index: 998; 17 } 18 19 .modal { 20 background-color: white; 21 position: fixed; 22 width: 600px; 23 height: 400px; 24 left: 50%; 25 top: 50%; 26 margin: -200px 0 0 -300px; 27 z-index: 1000; 28 } 29 </style> 30 </head> 31 <body> 32 33 <div class="cover"></div> 34 <div class="modal"></div> 35 </body> 36 </html>
opacity
用来定义透明效果。(opacity:0.6 )取值范围是0~1,0是完全透明,1是完全不透明。opacity可以改变元素和元素子标签的不透明度,rgba是给谁设置改变谁的。
综合示例
顶部导航菜单
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="x-ua-compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <title>li标签的float示例</title> 8 <style> 9 /*清除浏览器默认外边距和内填充*/ 10 * { 11 margin: 0; 12 padding: 0; 13 } 14 a { 15 text-decoration: none; /*去除a标签默认的下划线*/ 16 } 17 18 .nav { 19 background-color: black; 20 height: 40px; 21 width: 100%; 22 position: fixed; 23 top: 0; 24 } 25 26 ul { 27 list-style-type: none; /*删除列表默认的圆点样式*/ 28 margin: 0; /*删除列表默认的外边距*/ 29 padding: 0; /*删除列表默认的内填充*/ 30 } 31 /*li元素向左浮动*/ 32 li { 33 float: left; 34 } 35 36 li > a { 37 display: block; /*让链接显示为块级标签*/ 38 padding: 0 15px; /*设置左右各15像素的填充*/ 39 color: #b0b0b0; /*设置字体颜色*/ 40 line-height: 40px; /*设置行高*/ 41 } 42 /*鼠标移上去颜色变白*/ 43 li > a:hover { 44 color: #fff; 45 } 46 47 /*清除浮动 解决父级塌陷问题*/ 48 .clearfix:after { 49 content: ""; 50 display: block; 51 clear: both; 52 } 53 </style> 54 </head> 55 <body> 56 <!-- 顶部导航栏 开始 --> 57 <div class="nav"> 58 <ul class="clearfix"> 59 <li><a href="">玉米商城</a></li> 60 <li><a href="">MIUI</a></li> 61 <li><a href="">ioT</a></li> 62 <li><a href="">云服务</a></li> 63 <li><a href="">水滴</a></li> 64 <li><a href="">金融</a></li> 65 <li><a href="">优品</a></li> 66 </ul> 67 </div> 68 <!-- 顶部导航栏 结束 --> 69 </body> 70 </html>
1 2. CSS 2 3 HTML 骨架 4 5 <标签1 样式=xxx > 6 <标签2 样式=xxx> 7 <标签3 样式=xxx> 8 最初的形式就是以上形式后来因为重复不满足编程风格由此引入: 9 --> 10 1. 重复的样式 11 2. 文档内容和样式的解耦 12 13 --> CSS是什么? 层叠 样式 表 14 --> CSS如何引入? 15 1. 直接写在标签里面 style="样式1;样式2;" <p style="color: red">Hello world.</p> 16 2. 在head中通过style标签定义 17 <head> 18 <meta charset="UTF-8"> 19 <title>Title</title> 20 <style> 21 p{ background-color: #2b99ff; } 22 </style> 23 </head> 24 3. 把样式单独写在css文件中,然后在html文件中通过link标签导入 25 把<link href="mystyle.css" rel="stylesheet" type="text/css"/> 写在head标签中如: 26 html文件中写 27 <head> 28 <meta charset="UTF-8"> 29 <title>Title</title> 30 <link href="mystyle.css" rel="stylesheet" type="text/css"/> href="路径" 31 </head> 32 mystyle.css文件中写 33 p{ background-color: #2b99ff; } 34 35 36 --> CSS语法 37 38 选择器 {样式1;样式2} 39 40 --> CSS查找标签的方式(选择器) 41 1. 基本选择器 42 1. 标签选择器 适用于 批量的\统一\默认的样式 p {color: red;font-size: 18px} 43 2. ID选择器 适用于 给特定标签设置特定样式 #i1 {background-color: red;} 44 3. 类选择器 适用于 给某一些标签设置相同的样式 .c1 {font-size: 14px;} p.c1 {color: red;} 45 46 2. 通用选择器 47 1. * {color: white;} 48 49 3. 组合选择器 50 1. 后代选择器 li内部的a标签设置字体颜色 51 li a {color: green;} 52 2. 儿子选择器 选择所有父级是 <div> 元素的 <p> 元素 53 div>p {font-family: "Arial Black", arial-black, cursive;} 54 3. 毗邻选择器 选择所有紧接着<div>元素之后的<p>元素 55 div+p {margin: 5px;} 56 4. 弟弟选择器 i1后面所有的兄弟p标签 57 #i1~p {border: 2px solid royalblue;} 58 59 4. 属性选择器 60 1. [s9] {color: green;} 用于选取带有指定属性 61 2. [s9="hao"] {color: green;} 用于选取带有指定属性和值的元素。 62 补充pycharm分屏鼠标右键+ move right 63 64 5. 分组和嵌套 65 1. div,p{} div和p都用一个样式 66 2. .c1 p{} 67 68 --> 样式文件优先级 69 1. 内联样式(直接在标签里面写style) 优先级最高 70 2. 选择器都一样的情况下,谁靠近标签谁就生效 71 3. 选择器不同时 计算权重来判断 72 伪类选择器: 73 未访问的链接 74 a:link {color: #FF0000} 75 76 已访问的链接 77 a:visited {color: #00FF00} 78 79 ****鼠标移动到链接上 80 a:hover {color: #FF00FF} 81 82 选定的链接 83 a:active {color: #0000FF} 84 85 ****input获取光标时 86 input:focus {outline: none;background-color: #eee;} 87 伪元素选择器: 88 常用的给首字母设置特殊样式: 89 p:first-letter {font-size: 48px;color: red;} 90 91 在每个<p>元素之前、后插入内容: 92 p:before {content:"*";color:red;} 93 after
1 day49 2 3 1. 内容回顾 4 5 1. 昨日内容 6 1. form表单(一般method="post") 7 1. input系列 8 type 9 1. text 10 2. password 11 3. radio 12 4. checkbox 13 5. date(datetime) 14 15 6. submit 16 7. button 17 8. reset 18 19 9. hidden 20 21 10. file (enctype="multipart/form-data") 22 23 2. select 24 1. select>option(分组的下拉框 select>optgroup>option) 25 26 3. textarea 27 28 2. form表单提交 三要素: 29 1. input\select\textarea 要有一个name属性 30 2. 提交按钮必须要是 type="submit" 31 3. form不是from;获取用户输入的标签都要放到form标签里面(仅限于form提交数据) 32 33 3. CSS选择器 34 1. 基本选择器 35 1. 标签选择器 36 2. ID选择器 37 3. 类选择器(class="c1 c2 ...") 38 2. 通用选择器(*) 39 40 3. 组合选择器 41 1. 后代选择器(空格) 42 2. 儿子选择器(>) 43 3. 毗邻选择器(div+p) 44 4. 弟弟选择器(~) 45 46 4. 属性选择器 47 1. [s9] 48 2. [s9="hao"] 49 3. 其他不常用的(有印象即可) 50 51 5. 分组和嵌套 52 1. 分组(用逗号分隔的多个选择器条件) 53 2. 嵌套(选择器都可以组合起来使用) 54 55 56 6. 选择器的优先级 57 1. 越靠近标签的优先级越高(就近原则) 58 2. 权重的计算 59 1. 内联样式1000 60 2. ID选择器100 61 3. 类选择器10 62 4. 元素选择器1 63 64 div#d1(101)/div.c1(11)/div .c1 65 66 2. 之前内容复习 67 1. Python语法基础 68 2. 数据类型和内置方法 69 3. 函数 70 1. 参数 71 2. 装饰器 72 3. 迭代器和生成器 73 4. 匿名函数 74 5. 递归 75 6. 内置函数 76 7. 三元运算和列表推导式 77 4. 文件操作 78 5. 面向对象(CRM项目会有大量的应用) 79 6. 常用的模块和包 80 7. 网络编程和并发编程(优先级低) 81 8. 数据库(建库\建表\基本查询\) 82 83 建立自己的自信 84 85 86 2. CSS选择器补充 87 http://www.cnblogs.com/liwenzhou/p/7999532.html 88 89 90 3. CSS属性 91 1. 文字属性 92 1. font-family 93 2. font-size 94 3. font-weight 95 4. color 96 1. rgb(255, 255, 255) 97 2. #f00 98 3. red 99 4. rgba() 100 2. 文本属性 101 1. text-align 102 2. text-decoration 103 3. 背景属性 104 1. background-color 105 2. background-image 106 107 4. 边框属性 108 1. border 109 2. border-radius --> 变圆 110 111 5. display属性 112 1. inline 113 2. block 114 3. inline-block 115 4. none (隐藏) 116 117 6. CSS盒子模型(从外到内) 118 1. margin: 边框之外的距离(多用来调整 标签和标签之间的距离) 119 2. border边框 120 3. padding:内容区和边框之间的距离(内填充/内边距) 121 4. condent: 内容 122 123 7. 浮动: 124 div配合float 来做 页面的布局 125 任何元素浮动之后都会变成块元素 126 127 float: 128 1. left 129 2. right 130 3. none 131 8. 清除浮动(清除的是浮动带来的负面效果-->父标签塌陷(撑不起来)) 132 1. clear 133 1. left 134 2. right 135 3. both 136 最常和伪元素结合起来应用: 137 .clearfix:after { 138 content: ""; 139 display: block; 140 clear: both 141 } 142 143 9. 定位: 144 1. static --> 默认的 145 2. relative --> 相对定位(相对于原来的位置来说) 146 3. absolute --> 绝对定位(相对于最近的一个被定位过的祖宗标签) (完全脱离文档流) 147 4. fixed --> 固定在某个位置(返回顶部按钮) 148 149 left right top bottom 150 151 10. z-index (明天讲) 152 153 154 4. 页面练习 155 博客页面 156 1. 先排HTML文档结构,同时定义好类名(类名最好有意义) 157 2. 从左往后,从上到下依次写样式
补充: CSS之使用display:inline-block来布局
css之display:inline-block布局
1.解释一下display的几个常用的属性值,inline , block, inline-block
- inline(行内元素):
- 使元素变成行内元素,拥有行内元素的特性,即可以与其他行内元素共享一行,不会独占一行.
- 不能更改元素的height,width的值,大小由内容撑开.
- 可以使用padding上下左右都有效,margin只有left和right产生边距效果,但是top和bottom就不行.
- block(块级元素):
- 使元素变成块级元素,独占一行,在不设置自己的宽度的情况下,块级元素会默认填满父级元素的宽度.
- 能够改变元素的height,width的值.
- 可以设置padding,margin的各个属性值,top,left,bottom,right都能够产生边距效果.
- inline-block(融合行内于块级):
- 结合了inline与block的一些特点,结合了上述inline的第1个特点和block的第2,3个特点.
- 用通俗的话讲,就是不独占一行的块级元素。如图:
图一:

图二:

两个图可以看出,display:inline-block后块级元素能够在同一行显示,有人这说不就像浮动一样吗。没错,display:inline-block的效果几乎和浮动一样,但也有不同,接下来讲一下inline-block和浮动的比较。
2.inline-block布局 vs 浮动布局
a.不同之处:对元素设置display:inline-block ,元素不会脱离文本流,而float就会使得元素脱离文本流,且还有父元素高度坍塌的效果
b.相同之处:能在某程度上达到一样的效果
我们先来看看这两种布局:
图一:display:inline-block

图二:对两个孩子使用float:left,我在上一篇浮动布局讲过,这是父元素会高度坍塌,所以要闭合浮动,对box使用overflow:hidden,效果如下:

>>乍一看两个都能做到几乎相同的效果,(仔细看看display:inline-block中有间隙问题,这个留到下面再讲)
c.浮动布局不太好的地方:参差不齐的现象,我们看一个效果:
图三:

图四:

>>从图3,4可以看出浮动的局限性在于,若要元素排满一行,换行后还要整齐排列,就要子元素的高度一致才行,不然就会出现图三的效果,而inline-block就不会。
3.inline-block存在的小问题:
a.上面可以看到用了display:inline-block后,存在间隙问题,间隙为4像素,这个问题产生的原因是换行引起的,因为我们写标签时通常会在标签结束符后顺手打个回车,而回车会产生回车符,回车符相当于空白符,通常情况下,多个连续的空白符会合并成一个空白符,而产生“空白间隙”的真正原因就是这个让我们并不怎么注意的空白符。
b.去除空隙的方法:
1.对父元素添加,{font-size:0},即将字体大小设为0,那么那个空白符也变成0px,从而消除空隙
现在这种方法已经可以兼容各种浏览器,以前chrome浏览器是不兼容的
图一:
c.浏览器兼容性:ie6/7是不兼容 display:inline-block的所以要额外处理一下:
在ie6/7下:
对于行内元素直接使用{dislplay:inline-block;}
对于块级元素:需添加{display:inline;zoom:1;}
4.总结:
display:inline-block的布局方式和浮动的布局方式,究竟使用哪个,我觉得应该根据实际情况来决定的:
a.对于横向排列东西来说,我更倾向与使用inline-block来布局,因为这样清晰,也不用再像浮动那样清除浮动,害怕布局混乱等等。
b.对于浮动布局就用于需要文字环绕的时候,毕竟这才是浮动真正的用武之地,水平排列的是就交给inline-block了。
参考博客:http://www.cnblogs.com/Ry-yuan/p/6848197.html
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Blog页面示例</title> <link rel="stylesheet" href="blog.css"> </head> <body> <!-- 左边栏 开始--> <div class="left"> <!--头像 开始--> <div class="header-img"> <img src="https://q1mi.github.io/Blog/asset/img/head_img.jpg" alt=""> </div> <!--头像结束--> <div class="blog-name">小强的狗窝</div> <div class="blog-info">这条狗很懒,什么都没有留下.</div> <!-- 连接区 开始--> <div class="blog-links"> <ul> <li><a href="">关于我</a></li> <li><a href="">关于你</a></li> <li><a href="">关于他</a></li> </ul> </div> <!--连接区 结束--> <!-- 文章分类 开始--> <div class="blog-tags"> <ul> <li><a href="">JS</a></li> <li><a href="">CSS</a></li> <li><a href="">HTML</a></li> </ul> </div> <!--文章分类 结束--> </div> <!-- 左边栏 结束--> <!--右边栏 开始--> <div class="right"> <div class="article-list"> <div class="article"> <div class="article-title"> <h1 class="article-name">海燕</h1> <span class="article-date">2018-03-07</span> </div> <div class="article-info"> 在苍茫的大海上,狂风卷积着乌云.在乌云和大海之间,海燕像黑色的闪电,在高傲的飞翔. </div> <div class="article-tag"> #HTML #CSS </div> </div> <div class="article"> <div class="article-title"> <h1 class="article-name">海燕</h1> <span class="article-date">2018-03-07</span> </div> <div class="article-info"> 在苍茫的大海上,狂风卷积着乌云.在乌云和大海之间,海燕像黑色的闪电,在高傲的飞翔. </div> <div class="article-tag"> #HTML #CSS </div> </div> <div class="article"> <div class="article-title"> <h1 class="article-name">海燕</h1> <span class="article-date">2018-03-07</span> </div> <div class="article-info"> 在苍茫的大海上,狂风卷积着乌云.在乌云和大海之间,海燕像黑色的闪电,在高傲的飞翔. </div> <div class="article-tag"> #HTML #CSS </div> </div> <div class="article"> <div class="article-title"> <h1 class="article-name">海燕</h1> <span class="article-date">2018-03-07</span> </div> <div class="article-info"> 在苍茫的大海上,狂风卷积着乌云.在乌云和大海之间,海燕像黑色的闪电,在高傲的飞翔. </div> <div class="article-tag"> #HTML #CSS </div> </div> <div class="article"> <div class="article-title"> <h1 class="article-name">海燕</h1> <span class="article-date">2018-03-07</span> </div> <div class="article-info"> 在苍茫的大海上,狂风卷积着乌云.在乌云和大海之间,海燕像黑色的闪电,在高傲的飞翔. </div> <div class="article-tag"> #HTML #CSS </div> </div> </div> </div> <!--右边栏 结束--> </body> </html>
/* Blog页面相关样式*/ /*公用样式*/ * { font-family: ".PingFang SC", "Microsoft YaHei"; font-size: 14px; margin: 0; padding: 0; } /*去掉a标签的下划线*/ a { text-decoration: none; } /*左边栏 样式*/ .left { width: 20%; background-color: rgb(76,77,76); height: 100%; position: fixed; left: 0; top: 0; } /*头像样式*/ .header-img { height: 128px; width: 128px; border: 5px solid white; border-radius: 50%; /* 画圆*/ overflow: hidden; /* 隐藏溢出部分*/ margin: 0 auto; /* 在父div标签中居中*/ margin-top: 20px; } .header-img>img { max-width: 100%; /* 设置照片的最大宽度为父标签的宽度*/ } /*Blog 名称*/ .blog-name { color: white; font-size: 24px; font-weight: bold; text-align: center; margin-top: 15px; } /*Blog介绍*/ .blog-info { color: white; text-align: center; border: 2px solid white; margin: 5px 15px; } /*连接组和标签组*/ .blog-links, .blog-tags { text-align: center; margin-top: 20px; } .blog-links a, .blog-tags a { color: #eee; } /*给a标签的文字前面加#号,伪元素*/ .blog-tags a:before { content: "#"; } /*右边栏 样式*/ .right { width: 80%; background-color: rgb(238,237,237); height: 1000px; float: right; } .article-list { margin-left: 30px; margin-top: 30px; margin-right: 10%; } .article { background-color: white; margin-bottom: 15px; } .article-name { display: inline-block; } .article-title { padding: 15px; border-left: 3px solid red; } .article-info { padding: 15px; } .article-tag { padding: 15px 0; margin: 15px; border-top: 1px solid #eeeeee; } /*文章发布时间*/ .article-date { float: right; }
你现在所遭遇的每一个不幸,都来自一个不肯努力的曾经!
Victor

浙公网安备 33010602011771号