? CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素。
? 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)。
? 每个CSS样式由两个组成部分:选择器和声明。声明又包括属性和属性值。每个声明之后用分号结束。
/*单行注释*/
/*
多行注释
*/
? 注释是代码之母。
? 行内式是在标记的style属性中设定CSS样式。不推荐大规模使用。
<p style="color:red">Hello world</p>
? 内部样式是指将CSS样式集中写在网页的
标签对的标签对中。<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
p{
background-color:#2b99ff; <!--要加;-->
}
</style>
</head>
? 外部样式就是将css写在一个单独的文件中,然后在页面进行引用即可。推荐使用。
<link href="mystyle.css" rel="stylesheet" type="text/css"/>
? 先学如何查找标签,再学如何给查找到的标签设置样式。
<style>
span {
color:red;
}
</style>
<body>
<span>span</span>
</body>
? id 用来唯一标识标签
? class 标签类属性,可以有多个值
? ps:你可以把它理解成python面向对象的继承
<style>
span {
color:red;
}
#s1 {
background:green;
}
#s2 {
color:deepskyblue;
}
</style>
<body>
<span>span</span>
<span id="s1">hello</span>
<div id="s2"> <!--这里的id不能与上面的重复-->
div
</div>
</body>
<style>
.c1 {
color:orange;
}
</style>
<body>
<div class="c1">
<p>p
<span>span</span>
<span>span1</span>
</p>
</div>
</body>
? 注意:
? 样式类名不要用数字开头(有的浏览器不认)。
? 标签中的class属性如果有多个,要用空格分隔。
* {
color:red;
}
/*只要有xxx属性名的标签都能找到*/
[xxx] {
color:red;
}
/*只有标签属性名为xxx且值为1*/
[xxx='1'] {
color:blue;
}
其他:
/*找到所有title属性以hello开头的元素*/
[title^="hello"] {
color: red;
}
/*找到所有title属性以hello结尾的元素*/
[title$="hello"] {
color: yellow;
}
/*找到所有title属性中包含(字符串包含)hello的元素*/
[title*="hello"] {
color: red;
}
/*找到所有title属性(有多个值或值以空格分割)中有一个值为hello的元素:*/
[title~="hello"] {
color: green;
}
<body>
<span>我是div上面的span</span>
<div>
<span>我是div里面的第一个span</span>
<p>
我是div里面的第一个p
<span>我是div里面的第一个p里面的span</span>
</p>
<span>我是div里面的第二个span</span>
</div>
<span>我是div下面的第一个span</span>
<span>我是div下面的第二个span</span>
</body>
<style>
div span { <!--div里的所有span标签-->
color :green;
}
</style>
<style>
div>span { <!--div下的第一层span-->
color:orangered;
}
</style>
<style>
div+span {
color:blue;
}
</style>
<style>
div~span { /*div下的所有span*/
color:deeppink;
}
</style>
? 当多个元素的样式相同的时候,我们没有必要重复地为每个元素都设置样式,我们可以通过在多个选择器之间使用逗号分隔的分组选择器来统一设置元素样式。
div,p {
color:red;
}
? 上面的代码为div标签和p标签统一设置字体为红色。
? 通常,我们会分两行来写,更清晰:
div,
p {
color:red;
}
? 多种选择器可以混合起来使用,例如,后代选择器与标签组合使用。
div p,span { /*div的后代p标签 和 span标签
color:red;
}
<style>
/* 未访问的链接 */
a:link {
color: #FF0000
}
/* 已访问的链接 */
a:visited {
color: #00FF00
}
/* 鼠标移动到链接上 */
a:hover {
color: #FF00FF
}
/* 选定的链接 */
a:active {
color: #0000FF
}
/* input输入框获取焦点时样式 */
input:focus {
outline: none;
background-color: #eee;
}
</style>
<body>
<a href="http://www.baidu.com">百度</a>
<a href="http://www.xiaohuar.com">笑话网</a>
<a href="http://www.sogo.com">搜狗网</a>
</body>
/*常用于给首字母设置特殊样式*/
p:first-letter {
font-size: 48px;
color: red;
}
/*在每个<p>元素之前插入内容*/
p:before {
content:"*";
color:red;
}
/*在每个<p>元素之后插入内容*/
p:after {
content:"[?]";
color:blue;
}
? before和after多用于清除浮动。
? 实例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
p:first-letter { <!--会被下面的before覆盖掉-->
color:red;
font-size:24px;
}
p:before {
content:'*';
color:green;
}
p:after {
content:'?';
color:deeppink;
font-size:36px;
}
</style>
</head>
<body>
<p>伪元素选择器</p>
<p>伪元素选择器</p>
<p>伪元素选择器</p>
</body>
</html>
? 继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个body定义了的字体颜色值也会应用到段落的文本中。
body {
color: red;
}
? 此时页面上所有标签都会继承body的字体颜色。然而CSS继承性的权重是非常低的,是比普通元素的权重还要低的0。
? 我们只要给对应的标签设置字体颜色就可覆盖掉它继承的样式。
p {
color:green; /*即使写在body前面,最后的结果也是以它为准,和优先级有关*/
}
? 此外,继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border, margin, padding, background等。
? 在一个HTML页面中有很多方法找到一个元素并为其设置样式,具体是按照不同选择器的权重来决定应用于哪个样式。选择器权重计算方式如下:
? 除此之外还可以通过添加 !important方式来强制让样式生效,但并不推荐使用。因为如果过多的使用!important会使样式文件混乱不易维护。万不得已可以使用!important。
? width属性可以为元素设置宽度。
? height属性可以为元素设置高度。
? 块级标签才能设置宽度,内联标签的宽度由内容来决定。
? font-family可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。浏览器会使用它可识别的第一个值。
body {
font-family:"Microsoft Yahei", "微软雅黑", "Arial", sans-serif
}
p {
font-size:14px
}
? 如果设置成inherit表示继承父元素的字体大小值。
? font-weight用来设置字体的自重(粗细)。
值 | 描述 |
---|---|
normal | 默认值,标准粗细 |
bold | 粗体 |
bolder | 更粗 |
lighter | 更细 |
100~900 | 设置具体粗细,400等同于normal,而700等同于bold |
inherit | 继承父元素字体的粗细值 |
? 实例:
<style>
div {
width:400px;
height:100px;
}
p {
font-family:"Sitka Banner","A"
}
p {
font-size:16px;
font-weight:lighter;
}
</style>
? 颜色属性被用来设置文字的颜色。
? 颜色是通过CSS最经常的指定:
? 十六进制值 - 如: #FF0000
? 一个RGB值 - 如: RGB(255,0,0)
? 颜色的名称 - 如: red
? 还有rgba(255,0,0,0.3),第四个值为alpha, 指定了色彩的透明度/不透明度,它的范 围为0.0到1.0之间。
<style>
p {
color:red;
color:rgb(0,0,255);
color:#FF6700;
color:rgba(0,0,255,0.8);
}
</style>
? text-align 属性规定元素中的文本的水平对齐方式。
值 | 描述 |
---|---|
left | 左边对齐 默认值 |
right | 右对齐 |
center | 居中对齐 |
justify | 两端对齐 |
p {
text-align:right;
text-align:center;
}
? text-decoration属性用来给文字添加特殊效果。
值 | 描述 |
---|---|
none | 默认。定义标准的文本。 |
underline | 定义文本下的一条线。 |
overline | 定义文本上的一条线。 |
line-through | 定义穿过文本下的一条线。 |
inherit | 继承父元素的text-decoration属性的值。 |
? 常用的为去掉a标签默认的自划线:
a {
text-decoration:none;
}
? 将段落的第一行缩进 32像素:
p {
text-indent:32px;
}
/*背景颜色*/
background-color: red;
/*背景图片*/
background-image: url('1.jpg');
/*
背景重复
repeat(默认):背景图片平铺排满整个网页
repeat-x:背景图片只在水平方向上平铺
repeat-y:背景图片只在垂直方向上平铺
no-repeat:背景图片不平铺
*/
background-repeat: no-repeat;
/*背景位置*/
background-position: left top;
background-position: 200px 200px;
? 支持简写:
background:#336699 url('1.png') no-repeat left top;
? 使用背景图片的一个常见案例就是很多网站会把很多小图标放在一张图片上,然后根据位置去显示图片。减少频繁的图片请求。
? 实例:
<!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>
* {
margin: 0;
}
.box {
width: 100%;
height: 500px;
background: url("http://gss0.baidu.com/94o3dSag_xI4khGko9WTAnF6hhy/zhidao/wh%3D450%2C600/sign=e9952f4a6f09c93d07a706f3aa0dd4ea/4a36acaf2edda3cc5c5bdd6409e93901213f9232.jpg") center center;
background-attachment: fixed;
}
.d1 {
height: 500px;
background-color: tomato;
}
.d2 {
height: 500px;
background-color: steelblue;
}
.d3 {
height: 500px;
background-color: mediumorchid;
}
</style>
</head>
<body>
<div class="d1"></div>
<div class="box"></div>
<div class="d2"></div>
<div class="d3"></div>
</body>
</html>
? 边框属性
? border-width
? border-style
? border-color
div {
border-width: 2px;
border-style: solid;
border-color: red;
}
? 通常使用简写方式:
div {
border:2px soild red;
}
? 边框样式
值 | 描述 |
---|---|
none | 无边框。 |
dotted | 点状虚线边框。 |
dashed | 矩形虚线边框。 |
solid | 实线边框。 |
? 除了可以统一设置边框外还可以单独为某一个边框设置样式,如:
div {
border-top-style:dotted;
border-top-color: red;
border-right-style:solid;
border-bottom-style:dotted;
border-left-style:none;
}
? 用这个属性能实现圆角边框的效果。
? 将border-radius设置为长或高的一半即可得到一个圆形。
div {
width: 400px;
height: 400px;
background-color: red;
border: 3px solid black;
border-radius: 50%;
}
? 用于控制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: 可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。
span {
display: inline-block;
height: 400px;
width: 400px;
background-color: red;
border: 3px solid black;
}
原文:https://www.cnblogs.com/chenwang-23/p/10946138.html