前端 CSS基础

CSS是什么:Cascading Style Sheet

CSS是Cascading Style Sheet的缩写,即层叠样式表,用于定义HTML元素的显示样式。

当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染)。

CSS语法:

CSS实例:

每个CSS样式由两个组成部分:选择器和声明。声明又包括属性和属性值。每个声明之后用分号结束。

h1 {color:red; font-size:10px;}

CSS注释:

/* 这是注释 */

CSS的几种引入方式

行内样式:

Hello world.

行内式是在标记的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"/>

CSS选择器

基本选择器

元素选择器: p

ID选择器: #d1

类选择器: .c1 { font-size: 10px; } / p.c1

注意:

样式类名不要用数字开头(有的浏览器不认)。

标签中的class属性如果有多个,要用空格分隔。

通用选择器: *

组合选择器:

后代选择器: li a

这是给li标签内部的a标签设置字体颜色

儿子选择器:div>p

选择所有

标签内部的

标签

毗邻选择器: div+p

选择同级中所有紧接着

元素之后的

元素

弟弟选择器:#d1~p

选择d1后面所有的兄弟p标签

属性选择器:

指定属性:p[title] { color: red;}

指定属性和值:p[title=“001”] { color: red;}

分组和嵌套

分组

当多个元素的样式相同的时候,我们没有必要重复地为每个元素都设置样式,我们可以通过在多个选择器之间使用逗号分隔的分组选择器来统一设置元素样式。

例如: div,p{ color: red;}

上面的代码为div标签和p标签统一设置字体为红色。

通常,我们会分两行来写,更清晰:

嵌套

多种选择器可以混合起来使用,比如:.c1类内部所有p标签设置字体颜色为红色。

.c1 p{color:red;}

伪类选择器

a标签(超链接标签):

未访问状态设置:a:link{color: #ff0000}

悬浮状态设置:a:hover{color: #FF00FF}

选定状态设置:a:active{color:#0000FF}

点击后的状态:a:visited{color: #00FF00}

input框获取焦点时的样式:input:focus{outline:none; background-color:#eee;}

伪元素选择器

first-letter:常用于给首字母设置特殊样式:

p:first-letter {
  font-size: 48px;
  color: red;
}

before:在每个指定标签元素之前插入内容

p:before {
  content:"*";
  color:red;
}

after:在每个指定标签元素之后插入内容

p:after {
  content:"[?]";
  color:blue;
} 

before和after多用于清除浮动。

选择器的优先级

CSS继承

继承是CSS的一个主要特征,它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。例如一个body定义了的字体颜色值也会应用到段落的文本中。

body {
  color: red;
}

我们只要给对应的标签设置字体颜色就可覆盖掉它继承的样式。

p {
  color: green;
}

此外,继承是CSS重要的一部分,我们甚至不用去考虑它为什么能够这样,但CSS继承也是有限制的。有一些属性不能被继承,如:border, margin, padding, background等

选择器的优先级

内联样式 > id选择器 > 类选择器 > 元素选择器

CSS属性相关

宽width和高height

width属性可以为元素设置宽度。

height属性可以为元素设置高度。

块级标签才能设置宽度,内联标签的宽度由内容来决定。

字体属性

文字字体

font-family可以把多个字体名称作为一个“回退”系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。浏览器会使用它可识别的第一个值。

简单实例:

body {
  font-family: "Microsoft Yahei", "微软雅黑", "Arial", sans-serif
}

字体大小

p {
  font-size: 14px;
}

字重(粗细)

font-weight用来设置字体的字重(粗细)

常用bold、bolder

文本颜色: color后可跟多种色名

颜色属性被用来设置文字的颜色。

颜色是通过CSS最经常的指定:

  • 十六进制值 - 如: FF0000
  • 一个RGB值 - 如: RGB(255,0,0)
  • 颜色的名称 - 如: red

还有rgba(255,0,0,0.3),第四个值为alpha, 指定了色彩的透明度/不透明度,它的范围为0.0到1.0之间。

文字属性

文字对齐:text-align

text-align 属性规定元素中的文本的水平对齐方式。

left、right、center、justify

文字装饰:text-decoration

text-decoration 属性用来给文字添加特殊效果。

描述
none 默认。定义标准的文本。
underline 定义文本下的一条线。
overline 定义文本上的一条线。
line-through 定义穿过文本下的一条线。
inherit 继承父元素的text-decoration属性的值。

常用的为去掉a标签默认的自划线:a{ text-decoration: none;}

首行缩进: p

将段落的第一行缩进 32像素:

背景属性

/*背景颜色*/ 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;

使用背景图片的一个常见案例就是很多网站会把很多小图标放在一张图片上,然后根据位置去显示图片。减少频繁的图片请求。

边框

边框属性

  • border-width
  • border-style
  • border-color
#i1 {
  border-width: 2px;
  border-style: solid;
  border-color: red;
}

通常使用简写方式:

#il {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设置为长或高的一半即可得到一个圆形。

display属性

意义
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-test {
  margin-top:5px;
  margin-right:10px;
  margin-bottom:15px;
  margin-left:20px;
}
margin-top:10px;   四边10px
margin-top:10px 20px;   上下10px,左右20px;
margin-top:10px 20px 30px;    上10px,左右20px,下30px;
margin-top:10px 20px 30px 40px;   上右下左

padding内填充

.padding-test {
  padding-top: 5px;
  padding-right: 10px;
  padding-bottom: 15px;
  padding-left: 20px;
}
.padding-test {
  padding: 5px 10px 15px 20px;
}

float

在 CSS 中,任何元素都可以浮动。

浮动元素会生成一个块级框,而不论它本身是何种元素。

关于浮动的两个特点:

  • 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
  • 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。

三种设置:left向左浮动、right向又浮动、none不浮动

clear

clear属性规定元素的哪一侧不允许其元素浮动。

描述
left 在左侧不允许浮动元素。
right 在右侧不允许浮动元素。
both 在左右两侧均不允许浮动元素。
none 默认值。允许浮动元素出现在两侧。
inherit 规定应该从父元素继承 clear 属性的值。

注意:clear属性只会对自身起作用,而不会影响其他元素。

清除浮动

浮动会造成父标签塌陷,设置浮动就伴随着清除浮动

主要有三种方式:

  • 固定高度
  • 伪元素清除法
  • overflow:hidden
.clearfix:after {
  content: "";
  display: block;
  clear: both;
}

overflow溢出属性

描述
visible 默认值。内容不会被修剪,会呈现在元素框之外。
hidden 内容会被修剪,并且其余内容是不可见的。
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit 规定应该从父元素继承 overflow 属性的值。
  • overflow(水平和垂直均设置)
  • overflow-x(设置水平方向)
  • overflow-y(设置垂直方向)

定位(position)

static 默认值,无定位

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

relative:相对定位

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

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

absolute(绝对定位)

相对于已定位了的祖先元素来进行定位,没有已经定位了的祖先元素,就以body标签定位,以其左上角为原点进行定位。

固定定位(回到顶部) fixed

​ 相对于浏览器窗口 固定在某个位置不动

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>回到顶部示例</title>
  <style>
    * {
      margin: 0;
    }

    .d1 {
      height: 1000px;
      background-color: #dddddd;
    }

    .scrollTop {
      background-color: dodgerblue;
      padding: 5px;
      text-align: center;
      position: fixed;
      right: 10px;
      bottom: 10px;
    }
  </style>
</head>
<body>
<div class="d1">这里写正文</div>
<div class="scrollTop">回到顶部</div>
</body>
</html>

不脱离文档流:相对定位

脱离文档流:绝对定位、固定定位

z-index:设置对象的层叠关系,即谁覆盖谁

d1

1、坐标小的在底层,坐标大的在顶层,坐标大的覆盖坐标小的

2、对象在定位之后才能设置z-index值。浮动元素不能设置z-index值

3、z-index值相等的元素,在HTML文档中写在前的在下层,写在后的在上层,

4、定位后的元素覆盖在没定位的元素上

5、从父现象:

opacity:定义透明度

取值范围是0—1,0是完全透明,1是完全不透明

视频网站顶部导航条示例:

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>li标签的float示例</title>
  <style>
    /*清除浏览器默认外边距和内填充*/
    * {
      margin: 0;
      padding: 0;
    }
    a {
      text-decoration: none; /*去除a标签默认的下划线*/
    }

    .nav {
      background-color: black;
      height: 40px;
      width: 100%;
      position: fixed;
      top: 0;
    }

    ul {
      list-style-type: none; /*删除列表默认的圆点样式*/
      margin: 0; /*删除列表默认的外边距*/
      padding: 0; /*删除列表默认的内填充*/
    }
    /*li元素向左浮动*/
    li {
      float: left;
    }

    li > a {
      display: block; /*让链接显示为块级标签*/
      padding: 0px 15px; /*设置左右各15像素的填充*/
      color: #bbbbbb; /*设置字体颜色*/
      line-height: 40px; /*设置行高*/
    }
    /*鼠标移上去颜色变白*/
    li > a:hover {
      color: #fff;
    }

    /*清除浮动 解决父级塌陷问题*/
    .clearfix:after {
      content: "";
      display: block;
      clear: both;
    }
  </style>
</head>
<body>
<!-- 顶部导航栏 开始 -->
<div class="nav">
  <ul class="clearfix">
    <li><a href="">综艺</a></li>
    <li><a href="">剧场</a></li>
    <li><a href="">电影</a></li>
    <li><a href="">动漫</a></li>
    <li><a href="">纪录片</a></li>
    <li><a href="">教育</a></li>
    <li><a href="">体育</a></li>
  </ul>
</div>
<!-- 顶部导航栏 结束 -->
</body>
</html>


posted @ 2019-11-20 19:21  AllenCH  阅读(141)  评论(0编辑  收藏  举报