CSS 层叠样式表

层叠样式表:就是给HTML添加样式的,让它变得更加的好看

# 注释

/*单行注释*/

/*

多行注释1

多行注释2

多行注释3

*/

通常我们在写css样式的时候也会用注释来划定样式区域(因为HTML代码多所以对应的CSS代码也很多)

/*这是博客园首页的css样式文件*/

/*顶部导航条样式*/
...
/*左侧菜单栏样式*/
...
/*右侧菜单栏样式*/
...

# css的语法结构

选择器 {

属性1:值1;

属性2:值2;

属性3:值3;

}

css的3种引入方式

        1. style标签内部直接书写

    <style>
        h1 {
            color: burlywood;
        }
    </style>

        2. link标签引入外部css文件(最正规的方式,解耦合)

    <link rel="stylesheet" href="mycss.css">

        3. 行内式(一般不用)

    <h1 style="color: #0000cc">老板好 要上课吗?</h1>

CSS的学习流程

1. 先学如何查找标签

        css查找标签的方式一定要学会

        因为后面所有的框架封装的查找语句都是基于css来的        

2. 之后再学如何添加样式

CSS选择器


基本选择器

# id选择器

# 类选择器

# 元素/标签选择器

# 通用选择器

/*id选择器*/
/*找到id是d1的标签,将文本颜色变成黄绿色*!*/
/*#d1 {
/*    color: greenyellow;*/
/*}*/

/*类选择器*/

/*找到class值里面包含c1的标签*/
/*.c1 {*/
/*    color: red;*/
/*}*/

/*.c2 {*/
/*    color: black;*/
/*}*/

/*元素(标签)选择器*/
/*找到所有的span标签*/
/*span {*/
/*    color: red;*/
/*}*/

/*通用选择器*/
/*将html页面上所有的标签全部找到*/
* {
    color: red;
}

组合选择器

"""

在前端 我们将标签的嵌套用亲戚关系来表述层级

    <div>div
        <p>div p</p>
        <p>div p
            <span>div p san
            </span>
        </p>
        <span>span</span>
        <span>span</span>
    </div>

div里面的p span都是div的后代

p是div的儿子

p里面的span是p的儿子,是div的孙子

div是p的父亲

"""

# 后代选择器

# 儿子选择器

# 毗邻选择器

# 弟弟选择器

        /*后代选择器*/
        /*div span {
            color: red;
        }*/
        /*div>span {
            color: red;
        }*/
        /*毗邻选择器*/
        /*同级别紧挨着的下面的第一个*/
        /*div+span {
            color: aqua;
        }*/
        /*弟弟选择器*/
        /*同级别下面所有的span*/
        div~span{
            color: red;
        }

属性选择器 

"""

1. 含有某个属性

2. 含有某个属性并且有某个值

3. 含有某个属性并且有某个值的某个标签

"""

# 属性选择器是以[]作为标志

        /*将所有含有属性名是username的标签背景色改为红色*/
        /*[username] {
            background-color: red;
        }*/
        /*找到所有属性名是username并且属性值是jason的标签*/
        /*[username ='jason'] {
            background-color: orange;
        }*/
        /*找到所有属性名是username并且属性值是jason的input标签*/
        input[username='jason']{
            background-color: red;
        }

分组选择器

分组与嵌套

        div,p,span {
            color: yellow;
        }

        #d1 .c2 span{
            color: red;
        }

伪类选择器

        body {
            background-color: black;
        }
        /*访问之前的状态*/
        a:link {
            color: red;
        }
        /*鼠标悬浮态*/
        a:hover {
            color: aqua;
        }
        /*鼠标点击不松开的状态 激活态*/
        a:active {
            color: black;
        }
        /*访问之后的状态*/
        a:visited {
            color: gray;
        }
        p {
            color: darkgray;
            font-size:48px ;
        }
        p:hover {
            color: white;
        }
        /*input框获取焦点(鼠标点了input框)*/
        input:focus {
            background-color: red;
        }

伪元素选择器

before和after通常都是用来清除浮动带来的影响:父标签塌陷的问题

        /*
        p:first-letter {
            font-size: 48px;
            color: orange;
        }
        */
        /*在文本开头 用css添加内容*/
        p:before {
            content: '你说得对';
            color: blue;
        }
        p:after {
            content: '?';
            color: orange;
        }

选择器优先级

"""

id 选择器

类 选择器

标签 选择器

行内 选择器

"""

        /*
            1. 选择器相同    书写顺序不同
                就近原则: 谁离标签更近就听谁的
            2. 选择器不同 ...
                行内选择器 > id选择器 > 类选择器 > 标签选择器
                精确度越高越有效
        */

        #d1 {
            color: aqua;
        }

        .c1 {
            color: orange;
        }
        p {
            color: red;
        }

display属性

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d1 {
            /*隐藏标签不展示到前端页面并且原来的位置也不再占有了 但是还存在于文档上*/
            /*display: none;*/
            height: 100px;
            width: 100px;
            background-color: red;
            display: inline; /*将标签设置为行内标签的特点 一行显示并且无法修改长宽*/
        }

        #d2 {
            /*隐藏标签不展示到前端页面并且原来的位置也不再占有了 但是还存在于文档上*/
            /*display: none;*/
            height: 100px;
            width: 100px;
            background-color: yellow;
            display: inline;
        }

        #d3 {
            height: 100px;
            width: 100px;
            background-color: red;
            display: block; /*将标签设置成具有会计标签的特点*/
        }

        #d4 {
            height: 100px;
            width: 100px;
            background-color: yellow;
            display: block;
        }

        #d5 {
            height: 100px;
            width: 100px;
            background-color: red;
            display: inline-block; /*将标签既可以在一行展示又可以设置长宽*/
        }

        #d6 {
            height: 100px;
            width: 100px;
            background-color: yellow;
            display: inline-block;
        }
    </style>

</head>
<body>
<div id="d1">01</div>
<div id="d2">02</div>
<span id="d3">span</span>
<span id="d4">span</span>
<div id="d5">01</div>
<div id="d6">02</div>
<div style="display: none">div1</div>
<div>div2</div>
<div style="visibility: hidden">div3</div>
<div>div4</div>

盒子模型 

'''

盒子模型

        就以快递盒为例

                快递盒与快递盒之间的距离(标签与标签之间的距离 margin 外边距)

                盒子的厚度 (标签的边框 border)

                盒子里面的物体到盒子的距离 (内容到边框的距离 padding 内边距)

                物体的大小 (内容 content)

       

        如果你想要调整标签与标签之间的距离        你就可以调整margin

       

        浏览器会自带8px的margin,一般情况下我们在写页面的是偶,上来就会先将border的margin去除

'''

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        /*
        p {
            margin-left: 0;
            margin-top: 0;
            margin-right: 0;
            margin-bottom: 0;
        }
        */
        /*上下左右全是0*/
        body {
            margin: 10px 20px ; /*第一个上下 第二个左右*/
            margin: 10px 20px 30px; /*第一个上 第二个左右 第三个下*/
            margin: 10px 20px 30px 40px; /*第一个上 第二个右 第三个下 第四个左*/
        }
        #d1 {
            margin-bottom: 20px;
        }
        #d2 {
            margin-top: 50px; /*不叠加*/
        }
        #dd {
            margin: 0 auto; /*只能做到标签的水平居中*/
        }
        p {
            border: 3px solid red;
            padding-left: 10px;
            padding-top: 20px;
            padding-right: 20px;
            padding-bottom: 50px;
            padding : 10px 20px 30px 40px;

        }
    </style>


</head>
<body>
<!--
    <p style="border: 1px solid red " id="d1">ppp</p>
    <p style="border: 1px solid orange " id="d2">ppp</p>

<div style="border: 3px solid red; height: 400px;width: 400px;">
    <div id="dd" style="border: 1px solid orange; height: 50px;width: 50px;background-color: tomato;"></div>
</div>
-->
<p>ppp</p>
</body>

浮动

```浮动的元素 没有块级一说 本身多大浮起来之后就只能占多大```

只要是涉及到页面的布局一般都是用浮动来提前规划好

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            margin: 0;
        }
        #d1 {
            width: 20%;
            height: 100%;
            background-color: #4e4e4e;
            float: left;
        }

        #d2 {
            width: 80%;
            height: 2000px;
            background-color: wheat;
            float: right;
        }
    </style>


</head>
<body>
    <div id="d1"></div>
    <div id="d2">

        <div>111</div>
    </div>
</body>

解决浮动带来的影响 

# 浮动带来的影响

会造成父标签塌陷的问题

"""

解决浮动带来的影响 推导步骤

        1. 自己加一个div设置高度

        2. 利用clear属性

        #d4 {
            clear:left; /*该标签的左边(地面和空中)不能有浮动的元素*/
        }

        3.通用的解决浮动的影响的方法

                在写html页面之前 先提前写好处理浮动带来的影响的 css代码

                之后只要标签出现了塌陷的问题就给该塌陷的标签加一个clearfix属性即可

                上述的解决方式是通用的 到哪都一样 并且名字就叫 clearfix

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

溢出属性 

    <style>
        p {
            height: 100px;
            width: 100px;
            border: 3px solid red;
            overflow: visible; /*默认就是可见 溢出还是展示*/
            overflow: hidden; /*溢出部分直接隐藏*/
            overflow: scroll; /*设置成上下滚动条的形式*/
            overflow: auto;
        }
    </style>

定位

静态

        所有的标签默认都是静态的static,无法改变位置

相对定位

        相对于标签原来的位置做移动 relative

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            margin: 0;
        }
        #d1 {
            height: 100px;
            width: 100px;
            background-color: red;
            left:100px; /*从左往右 如果是负数 方向则相反*/
            top:100px; /*从上往下 如果是负数 方向则相反*/
            position: static; /*默认是static无法修改位置*/
            position: relative;
            /*
            相对定位 标签由static变为relative 它的性质就从原来没有定位的标签变成了已经定位过的标签
            虽然哪怕你没有动 但是你的性质也已经改变了
            */
        }
    </style>
</head>
<body>
    <div id="d1"></div>


</body>

绝对定位(常用)

        相对于已经定位过的父标签做移动(如果没有父标签那么就以body为参照)

        eg:小米网站购物车

        当你不知道页面其他标签的位置和参数,只给了你一个父标签的参数,让你基于该标签做定位

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            margin: 0;
        }


        #d2 {
            height: 100px;
            width: 200px;
            background-color: yellow;
            position: relative; /*已经定位过了*/
        }
        #d3 {
            height: 200px;
            width: 400px;
            background-color: yellowgreen;
            position: absolute;
            left:200px;
            top:100px ;
        }
    </style>
</head>
<body>

    <div id="d2">sdsaf
        <div id="d3"></div>
    </div>


</body>

固定定位(常用)

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

        eg:右侧小广告

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            margin: 0;
        }



        #d4 {
            position: fixed; /*写了fixed之后 接下来的定位就是依据浏览器窗口*/
            bottom: 10px;
            right:20px;
            height: 50px;
            width: 100px;
            background-color: white;
            border: 3px solid black;
        }
    </style>
</head>
<body>
    <div style="height: 500px; background-color: red"></div>
    <div style="height: 500px; background-color: greenyellow"></div>
    <div style="height: 500px; background-color: blue"></div>
    <div id="d4">回到顶部</div>


</body>

ps:浏览器是优先展示文本内容的

验证浮动和定位是否脱离文档流(原来的位置是否还保留)

"""

浮动

相对定位

绝对定位

固定定位

"""

# 不脱离文档流

        1. 相对定位

#  脱离文档流

        1. 浮动

        2. 绝对定位

        3. 固定定位

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--
    <div style="height: 100px;width: 200px;background-color: red;position: relative;left: 500px"></div>
    <div style="height: 100px;width: 200px;background-color: yellowgreen"></div>
-->
<!--
<div style="height: 100px;width: 200px;background-color: red;"></div>
<div style="height: 100px;width: 200px;background-color: yellowgreen;position: absolute;left: 500px"></div>
<div style="height: 100px;width: 200px;background-color: blue;"></div>
-->


<div style="height: 100px;width: 200px;background-color: red;"></div>
<div style="height: 100px;width: 200px;background-color: yellowgreen;position: fixed;bottom: 1px; right: 1px"></div>
<div style="height: 100px;width: 200px;background-color: blue;"></div>

</body>
</html>

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;
        }

        .cover {
            position: fixed;
            left: 0;
            top: 0;
            right: 0;
            bottom: 0;
            background-color: rgba(0, 0, 0, 0.5);
            z-index: 9;
        }
        .modal {
            background-color: white;
            height: 200px;
            width: 400px;
            position: fixed;
            left:50%;
            top:50%;
            z-index: 100;
            margin-left: -200px;;
            margin-top: -100px;
        }
    </style>

</head>
<body>
<div>这是最底层的页面内容</div>
<div class="cover"></div>
<div class="modal">
    <h1>登录页面</h1>
    <p>username: <input type="text"></p>
    <p>password: <input type="text"></p>
    <button>点我点我</button>
</div>
</body>
</html>

透明度 opacity

# 它不单单可以修改颜色的透明度 还同时修改字体的透明度

rgba只能影响颜色

而opacity可以修改颜色和字体

作业书写

"""

当你在设计页面的时候 先用div划分区域 之后填写基本内容 最后再调节样式

在书写html代码的时候 class, id等属性最好都起得见名知意

"""

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值