前端之CSS篇

CSS

css本质就是一个样式表

主要由选择器和声明两个部分组成,声明部分又包括属性跟属性值

 CSS注释:

/*注释*/
/*
多行注释
*/

 CSS引入方式:

/*内部样式*/
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        p{
            background-color: red;
        }
    </style>
</head>

/*外部样式  将css代码写在单独的文件中,再进行引用*/
<link href="mystyle.css" rel="stylesheet" type="text/css"/>

/*行内样式*/
<p style="color:red">hello world</p>

CSS选择器

基本选择器

/*  ID选择器  */
#id名{
    background-color:red;
}

/*  类选择器  */
.类名{
  color:red;  
}

/*  元素选择器  */
元素名{color:red}

/* 通用选择器 */
*{
    color:red
}

/*  例子  */
#id1{
    background-color:red;
}

.c1{
  color:red;  
}

p{color:red}

组合选择器

后代选择器:

/*作用于div内部的a标签*/
div a{
    color:red;
}
<div>
  <a>
</div>

儿子选择器

/*选择所有父级是<div>元素的<span>元素*/
div>span{
    color:red;  
}

<div>
    <span></span>
</div>

 毗邻选择器

/* 
选择所有紧接着<div>元素之后的第一个<p>元素
也就是同级别紧挨着的下面的第一个
*/ div+p{ color:green; }

弟弟选择器

/*同级别下的所有span*/
div-span{
    color:red;
}
例如:
<div></div>
<span>
<span>
<span>

属性选择器:

/*所有含有属性名username的标签样式*/
[username]{
    background-color:red
}
/*所有含有属性名username的p标签样式*/
p[username]{
    background-color:red
}
/*所有含有属性名username="json"的标签样式*/
[username="json"]{
    background-color:red
}

 分组和嵌套

分组:在多个选择器之间使用逗号分隔的分组选择器来统一设置样式

/* 将div,p标签统一设置字体为红色   */
div,
p{
    color:red;
}

嵌套:多种选择器混合起来使用

/*  c1类内部所有p标签的样式   */
.c1 p{
    color:red;
}

伪类选择器

/*未访问的连接 */
a:link{
      color:#b7e8b7;
}
 /*鼠标移动到链接上的*/
a:hover{
      color:yellow;
}
 /*选中的时候*/
a:active{
      color: hotpink;
 }
/*已访问的链接*/
a:visited{
     color: #892BCF;
}

伪元素选择器

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

p:first-letter{
      font-size: 24px;
      color: #892BCF;
}

before: 在每个p元素之前插入内容(多用于清除浮动)

p:before {
    content:"明天四级";
    color:red;
}

after:在每个p元素之后插入内容 (多用于清除浮动)

p:after{
      content: "逢考必过";
      color: yellow;
 }

选择器的优先级

css继承

/*此时页面上所有标签会继承body的字体颜色,但是p标签不会,因为p标签自己的样式把body的样式覆盖了*/
body
{ color:red; } p{ color: green; }

选择器的优先级:

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

css属性相关

宽和高

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

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

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

字体属性

文字字体:font-family    注意:可以把多个字体名称作为一个”回退“系统来保存。当第一个字体不支持的时候,就会尝试下一个。

body{
     font-family: "Microsoft Yahei", Simsun, Arial, sans-serif;      
}

字体大小:font-size

p {
     font-size:24px;
     /*font-size:inherit;  表示继承父元素的字体大小
}

字体粗细:font-weight 

  • normal:默认值,标准粗细
  • bold:粗体
  • bolder:更粗
  • lighter:更细
  • 100~900:设置具体粗细,400等同于normal, 700等同于bold
  • inherit:基础父元素字体的粗细值

文本颜色

颜色主要有三种表示方式:

  • 十六进制值 :如:#ffffff
  • 一个RGB值:如:RGB(255,0,0)
  • 颜色名称:如:red
  • rgba(255,0,0,0.2)第四个值为alpha,是指色彩的透明度/不透明度,它的 范围是0.0到1.0

文字属性

文字对齐:text-align

  • lef          左对齐
  • right      右对齐
  • center   居中对齐
  • justify    两端对齐

文字装饰:text-decoration

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

 注意:该属性常用于去掉a标签默认的自划线

a{
    text-decoration:none;
}

首行缩进:text-indent: 32px

p{
    text-indent: 32px;
}

背景属性:

div{
   width:56%;
   height: 50%;
  /*background-color: deepskyblue;*/
  /*!* 背景图片 */
  /*background-image: url('歼20.jpg');*/
  /*background-repeat: repeat;  !* repeat(默认):背景图片平铺整个div *!*/
  /*background-repeat: repeat-x;  !* repeat-x:水平平铺 *!*/
  /*background-repeat: repeat-y;  !* repeat-y:垂直平铺 *!*/
  /*background-repeat: no-repeat; !* no-repeat: 不平铺 *!*/

  /*如果出现了多个属性名前缀一样的,一般情况下可以简写成前缀*/
  background: deepskyblue url("歼20.jpg") no-repeat center;
}

background-attachment 属性设置背景图片是否固定或者随着页面的其余部分滚动

1、sroll   默认值:背景图片不固定,会随着页面滚动而滚动

2、fixed   页面滚动的时候,背景图片不会移动

3、inherit  从父元素继承属性的设置

边框

边框属性:边框粗细,样式,颜色

.c1{
    border-width:2px;
    border-style:solid;
    border-color:red;
}
/*也可以简写成*/
.c1{
    border: 2px  solid red;
}
/*边框四边可以设置不同样式,四个前缀如下:
border-top
border-right
border-bottom
border-left
*/

边框样式:border-style

1、none  无边框

2、dotted  点状虚线边框

3、dashed  矩形虚线边框

4、solid   实线边框

圆角属性 :border-radius

display属性

 1、none:在浏览器中不显示

 2、block:  具有块儿级元素的特点,如果设置了宽度,则会用margin填充剩下的部分

 3、inline:  行内元素显示

 4、inline-block:使元素同时具有行内元素和块儿级元素的特点

 注意:display:none 和bisibility:hidden的区别:

前者可以隐藏某个元素,不会占用任何空间

后者可以隐藏某个元素,但是隐藏后元素仍占用元素原有的空间,仍然还会影响布局

css盒子模型

  • margin:外边距,用于控制元素与元素之间的距离
  • padding:内填充,用于控制内容和边框之间的距离
  • border:边框,内边距和内容外边距的边框
  • conten:盒子内容,显示文本和图形

 注意:margin和padding常用的四种简写顺序:

  • 提供一个参数,用于四边   例如:pading/margin: 5px
  • 提供两个参数,第一个是上下、第二个是左右    例如:pading/margin: 5px 10px
  • 提供三个参数,第一个是上,第二个是左右,第三个是下  例如:pading/margin: 5px 10px 3px
  • 提供四个参数,将按上右下左顺序   例如:pading/margin: 5px 10px 3px 4px

float(浮动)属性

浮动元素不管它本身是何种元素,都会生成一个块级框,有两个特点:

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

属性值:

  • left : 向左
  • right: 向右
  • none: 默认值,不浮动

注意:浮动会有一个影响(会造成父标签塌陷)如下图(上为塌陷图,下为没有塌陷图):

<!--例子-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d1 {
            border: 3px black solid;
        }
        #d2{
            width: 100px;
            height: 100px;
            background-color: deepskyblue;
            /*display: none;*/
            float: left;
        }
        #d3{
            width: 100px;
            height: 100px;
            background-color: yellowgreen;
            /*display: inline-block;*/
            float: left;
        }
        /*解决塌陷的方法*/
        .clearfix:after{
            content: '';
            display: block;
            clear: both;
        }
    </style>
</head>
<body>
    <div id="d1" class="clearfix">
        <div id="d2">222</div>
        <div id="d3">333</div>
    </div>
</body>
</html>

 通用解决浮动影响方法:

.clearfix:after{
    content:'';
    display:block;
    cear:both;
}

clear属性

  • left :左侧不允许浮动元素
  • right:右侧不允许浮动元素
  • both:在左右两侧均不允许浮动元素
  • none:默认值。允许左右两侧出现浮动元素
  • inherit:从父元素继承属性值  

overflow溢出属性

  • visible:默认值,溢出的内容会呈现在元素框之外
  • hidden:默认值,溢出的内容会隐藏
  • scroll:  内容会被修剪,会显示滚动条,通过滚动条滚动可以看到全部内容
  • auto:      跟scroll一样,也是通过滚动条来查看
  • inherit: 继承父元素的overflow属性

overflow应用案例(圆形头像):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d1{
            margin: auto;
            width: 100px;
            height: 100px;
            border-radius: 50%;
            border:5px solid deepskyblue;
            overflow: hidden;
        }
        div>img{
            max-width: 100%;
        }
    </style>
</head>
<body>
    <div id="d1">
        <img src="歼20.jpg">
    </div>
</body>
</html>

定位:

1、static:默认值,无定位,并且标签对象的left、top等值是不起作用的

2、relative:相对定位,以自己的原始位置,依据top,right,bottom,left等属性进行位置偏移

注意:left是表示从左往右移动

           该定位主要用法:方便绝对定位元素找到参照物

3、absolute:绝对定位:以最靠近自己并已经开启定位的祖先元素为定位(也就是起始位置)进行偏移,

如果,没有已定位的父元素,则以body元素为定位。

注意:如果父元素设置position属性,如position:relative,那么子元素就会以父元素左上角为起始点进行偏移

4、fixed:固定,直接使用top,right,bottom,left等属性以窗口为参考点进行定位,并且不会随滚动条滚动而滚动

 主要应用在:右侧小广告,回到顶部按钮等

定位的例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d2{
            width: 300px;
            height: 300px;
            background-color: #892BCF;
            left: 200px;
            top: 200px;
            position: relative;
        }
        #d3{
            width: 100px;
            height: 100px;
            background-color: #1ba91b;
            left: 300px;
            top: 300px;
            position: absolute;
        }
        #d4{
            width: 100px;
            height: 50px;
            border: 3px solid black;
            bottom: 20px;
            right: 30px;
            position: fixed;
        }
    </style>
</head>
<body>
    <div id="d2">
        <div id="d3"></div>
    </div>
    <div id="d4">回到顶部</div>
</body>
</html>

 脱离文档流(文档流指原来的位置,脱离文档流就是指不保留原来的位置)

  • 绝对定位
  • 固定定位
  • float(浮动)

不脱离文档流:

  • 相对定位

z-index属性

设置对象的层叠顺序。eg:百度的登陆界面

三层结构:1、最底层是正常文本内容(z=0)   距离用户最远的

     2、黑色透明区(z=99)  中间层

        3、白色注册区域(z=100)  距离用户最近的一层

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            margin: 0;
        }
        #d2{
            position: fixed;
            left: 0;
            top: 0;
            bottom: 0;
            right: 0;
            background-color: black;
            opacity: 0.4;
        }
        #d3{
            width: 300px;
            height: 200px;
            position: fixed;
            left: 40%;
            top: 40%;
            background-color: white;
        }
    </style>
</head>
<body>
    <div id="d1">hello world</div>
    <div id="d2"></div>
    <div id="d3">
        <p>注册界面</p>
        <label>
            username: <input type="text">
        </label>
        <label>
            password: <input type="password">
        </label>
        <p>        <input type=submit>
        </p>

    </div>

</body>
</html>

透明度:opacity

用来定义透明效果,取值范围是0~1,0是完全透明,1是完全不透明

opacity跟rgba的区别:

  • rgba只能影响颜色
  • opacity可以修改颜色和字体
posted @ 2020-09-19 11:00  NQ31  阅读(289)  评论(0编辑  收藏  举报